Merge remote-tracking branch 'goog/upstream-master' into mymerge

BUG: 29834751
Change-Id: I88fc1d4f86bcbd0ac0fe9acdbe764f3d738c5f32
(cherry picked from commit e3d78e1fe0669e9c7083a4de19f1e06171849b28)
diff --git a/ChangeLog b/ChangeLog
index 08725dd..ef6cb8e 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -593,7 +593,7 @@
 
 Tue Apr 22 10:27:17 CEST 2008 Daniel Veillard <daniel@veillard.com>
 
-	* dict.c: improvement on the hashing of the dictionnary, with visible
+	* dict.c: improvement on the hashing of the dictionary, with visible
 	  speed up as the number of strings in the hash increases, work from
 	  Stefan Behnel
 
@@ -5017,7 +5017,7 @@
 Sun Jan 23 23:54:39 CET 2005 Daniel Veillard <daniel@veillard.com>
 
 	* hash.c include/libxml/hash.h: added xmlHashCreateDict where
-	  the hash reuses the dictionnary for internal strings
+	  the hash reuses the dictionary for internal strings
 	* entities.c valid.c parser.c: reuse that new API, leads to a decent
 	  speedup when parsing for example DocBook documents.
 
@@ -5371,7 +5371,7 @@
 Wed Nov 24 13:41:52 CET 2004 Daniel Veillard <daniel@veillard.com>
 
 	* dict.c include/libxml/dict.h: added xmlDictExists() to the 
-	  dictionnary interface.
+	  dictionary interface.
 	* xmlreader.c: applying xmlTextReaderHasAttributes fix for namespaces
 	  from Rob Richards
 
@@ -5697,7 +5697,7 @@
 Tue Oct 26 18:09:59 CEST 2004 Daniel Veillard <daniel@veillard.com>
 
 	* debugXML.c include/libxml/xmlerror.h: added checking for names
-	  values and dictionnaries generates a tons of errors
+	  values and dictionaries generates a tons of errors
 	* SAX2.ccatalog.c parser.c relaxng.c tree.c xinclude.c xmlwriter.c
 	  include/libxml/tree.h: fixing the errors in the regression tests
 
@@ -7746,14 +7746,14 @@
 	  make tests
 	* xpath.c include/libxml/xpath.h: added xmlXPathCtxtCompile() to
 	  compile an XPath expression within a context, currently the goal
-	  is to be able to reuse the XSLT stylesheet dictionnary, but this
+	  is to be able to reuse the XSLT stylesheet dictionary, but this
 	  opens the door to others possible optimizations.
 	* dict.c include/libxml/dict.h: added xmlDictCreateSub() which allows
-	  to build a new dictionnary based on another read-only dictionnary.
-	  This is needed for XSLT to keep the stylesheet dictionnary read-only
+	  to build a new dictionary based on another read-only dictionary.
+	  This is needed for XSLT to keep the stylesheet dictionary read-only
 	  while being able to reuse the strings for the transformation
-	  dictionnary.
-	* xinclude.c: fixed a dictionnar reference counting problem occuring
+	  dictionary.
+	* xinclude.c: fixed a dictionary reference counting problem occuring
 	  when document parsing failed.
 	* testSAX.c: adding option --repeat for timing 100times the parsing
 	* doc/* : rebuilt all the docs
@@ -7806,7 +7806,7 @@
 Thu Jan  8 17:57:50 CET 2004 Daniel Veillard <daniel@veillard.com>
 
 	* xmlschemas.c: removed a memory leak remaining from the switch
-	  to a dictionnary for string allocations c.f. #130891
+	  to a dictionary for string allocations c.f. #130891
 
 Thu Jan  8 17:48:46 CET 2004 Daniel Veillard <daniel@veillard.com>
 
@@ -7928,7 +7928,7 @@
 Fri Jan  2 11:40:06 CET 2004 Daniel Veillard <daniel@veillard.com>
 
 	* SAX2.c: found and fixed a bug misallocating some non
-	  blank text node strings from the dictionnary.
+	  blank text node strings from the dictionary.
 	* xmlmemory.c: fixed a problem with the memory debug mutex
 	  release.
 
@@ -9386,7 +9386,7 @@
 
 	* parser.c: William's change allowed to spot a nasty bug in xmlDoRead
 	  if the result is not well formed that ctxt->myDoc is not NULL
-	  and uses the context dictionnary.
+	  and uses the context dictionary.
 
 Fri Sep 26 21:09:34 CEST 2003 Daniel Veillard <daniel@veillard.com>
 
diff --git a/Makefile.am b/Makefile.am
index 70720f3..9f988b0 100644
--- a/Makefile.am
+++ b/Makefile.am
@@ -216,6 +216,10 @@
 	@echo '## Go get a cup of coffee it is gonna take a while ...'
 	$(MAKE) CHECKER='valgrind -q' runtests
 
+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)
+
 testall : tests SVGtests SAXtests
 
 tests: XMLtests XMLenttests NStests IDtests Errtests APItests $(READER_TEST) $(TEST_SAX) $(TEST_PUSH) $(TEST_HTML) $(TEST_PHTML) $(TEST_VALID) URItests $(TEST_PATTERN) $(TEST_XPATH) $(TEST_XPTR) $(TEST_XINCLUDE) $(TEST_C14N) $(TEST_DEBUG) $(TEST_CATALOG) $(TEST_REGEXPS) $(TEST_SCHEMAS) $(TEST_SCHEMATRON) $(TEST_THREADS) Timingtests $(TEST_VTIME) $(PYTHON_TESTS) $(TEST_MODULES)
@@ -1207,7 +1211,7 @@
 	     check-xsddata-test-suite.py check-xinclude-test-suite.py \
              example/Makefile.am example/gjobread.c example/gjobs.xml \
 	     $(man_MANS) libxml-2.0.pc.in libxml-2.0-uninstalled.pc.in \
-	     libxml2-config.cmake.in \
+	     libxml2-config.cmake.in autogen.sh \
 	     trionan.c trionan.h triostr.c triostr.h trio.c trio.h \
 	     triop.h triodef.h libxml.h elfgcchack.h xzlib.h buf.h \
 	     enc.h save.h testThreadsWin32.c genUnicode.py TODO_SCHEMAS \
diff --git a/NEWS b/NEWS
index 8027d55..d248c69 100644
--- a/NEWS
+++ b/NEWS
@@ -845,7 +845,7 @@
    - Improvement: switch parser to XML-1.0 5th edition, add parsing flags
       for old versions, switch URI parsing to RFC 3986,
       add xmlSchemaValidCtxtGetParserCtxt (Holger Kaelberer),
-      new hashing functions for dictionnaries (based on Stefan Behnel work),
+      new hashing functions for dictionaries (based on Stefan Behnel work),
       improve handling of misplaced html/head/body in HTML parser, better
       regression test tools and code coverage display, better algorithms
       to detect various versions of the billion laughts attacks, make
@@ -1231,7 +1231,7 @@
     Bakefile support (Francesco Montorsi), Windows compilation (Joel Reed),
     some gcc4 fixes, HP-UX portability fixes (Rick Jones).
    - bug fixes: xmlSchemaElementDump namespace (Kasimier Buchcik), push and
-    xmlreader stopping on non-fatal errors, thread support for dictionnaries
+    xmlreader stopping on non-fatal errors, thread support for dictionaries
     reference counting (Gary Coady), internal subset and push problem, URL
     saved in xmlCopyDoc, various schemas bug fixes (Kasimier), Python paths
     fixup (Stephane Bidoul), xmlGetNodePath and namespaces, xmlSetNsProp fix
@@ -1244,7 +1244,7 @@
     Hendricks), aliasing bug exposed by gcc4 on s390, xmlTextReaderNext bug
     (Rob Richards), Schemas decimal type fixes (William Brack),
     xmlByteConsumed static buffer (Ben Maurer).
-   - improvement: speedup parsing comments and DTDs, dictionnary support for
+   - improvement: speedup parsing comments and DTDs, dictionary support for
     hash tables, Schemas Identity constraints (Kasimier), streaming XPath
     subset, xmlTextReaderReadString added (Bjorn Reese), Schemas canonical
     values handling (Kasimier), add xmlTextReaderByteConsumed (Aron
@@ -1454,7 +1454,7 @@
     URI on SYSTEM lookup failure, XInclude parse flags inheritance (William),
     XInclude and XPointer fixes for entities (William), XML parser bug
     reported by Holger Rauch, nanohttp fd leak (William),  regexps char
-    groups '-' handling (William), dictionnary reference counting problems,
+    groups '-' handling (William), dictionary reference counting problems,
     do not close stderr.
    - performance patches from Petr Pajas
    - Documentation fixes: XML_CATALOG_FILES in man pages (Mike Hommey)
@@ -1482,7 +1482,7 @@
     William) reported by Yuuichi Teranishi
    - bugfixes: make test and path issues, xmlWriter attribute serialization
     (William Brack), xmlWriter indentation (William), schemas validation
-    (Eric Haszlakiewicz), XInclude dictionnaries issues (William and Oleg
+    (Eric Haszlakiewicz), XInclude dictionaries issues (William and Oleg
     Paraschenko), XInclude empty fallback (William), HTML warnings (William),
     XPointer in XInclude (William), Python namespace serialization,
     isolat1ToUTF8 bound error (Alfred Mickautsch), output of parameter
@@ -1503,7 +1503,7 @@
 
 
 2.6.5: Jan 25 2004:
-   - Bugfixes: dictionnaries for schemas (William Brack), regexp segfault
+   - Bugfixes: dictionaries for schemas (William Brack), regexp segfault
     (William), xs:all problem (William), a number of XPointer bugfixes
     (William), xmllint error go to stderr, DTD validation problem with
     namespace, memory leak (William), SAX1 cleanup and minimal options fixes
@@ -1515,14 +1515,14 @@
     Fleck), doc (Sven Zimmerman), I/O example.
    - Python bindings: fixes (William), enum support (Stéphane Bidoul),
     structured error reporting (Stéphane Bidoul)
-   - XInclude: various fixes for conformance, problem related to dictionnary
+   - XInclude: various fixes for conformance, problem related to dictionary
     references (William & me), recursion (William)
    - xmlWriter: indentation (Lucas Brasilino), memory leaks (Alfred
     Mickautsch),
    - xmlSchemas: normalizedString datatype (John Belmonte)
    - code cleanup for strings functions (William)
    - Windows: compiler patches (Mark Vakoc)
-   - Parser optimizations, a few new XPath and dictionnary APIs for future
+   - Parser optimizations, a few new XPath and dictionary APIs for future
     XSLT optimizations.
 
 
@@ -1617,8 +1617,8 @@
     of change
    - Increased the library modularity, far more options can be stripped out,
     a --with-minimum configuration will weight around 160KBytes
-   - Use per parser and per document dictionnary, allocate names and small
-    text nodes from the dictionnary
+   - Use per parser and per document dictionary, allocate names and small
+    text nodes from the dictionary
    - Switch to a SAX2 like parser rewrote most of the XML parser core,
     provides namespace resolution and defaulted attributes, minimize memory
     allocations and copies, namespace checking and specific error handling,
@@ -1665,7 +1665,7 @@
     (William), xmlCleanupParser (Marc Liyanage), CDATA output (William), HTTP
     error handling.
    - xmllint options: --dtdvalidfpi for Tobias Reif, --sax1 for compat
-    testing,  --nodict for building without tree dictionnary, --nocdata to
+    testing,  --nodict for building without tree dictionary, --nocdata to
     replace CDATA by text, --nsclean to remove surperfluous  namespace
     declarations
    - added xml2-config --libtool-libs option from Kevin P. Fleming
diff --git a/SAX2.c b/SAX2.c
index ffef3e1..5cbb700 100644
--- a/SAX2.c
+++ b/SAX2.c
@@ -55,7 +55,7 @@
  * @ctxt:  an XML validation parser context
  * @msg:   a string to accompany the error message
  */
-static void
+static void LIBXML_ATTR_FORMAT(2,0)
 xmlSAX2ErrMemory(xmlParserCtxtPtr ctxt, const char *msg) {
     xmlStructuredErrorFunc schannel = NULL;
     const char *str1 = "out of memory\n";
@@ -93,7 +93,7 @@
  *
  * Handle a validation error
  */
-static void
+static void LIBXML_ATTR_FORMAT(3,0)
 xmlErrValid(xmlParserCtxtPtr ctxt, xmlParserErrors error,
             const char *msg, const char *str1, const char *str2)
 {
@@ -133,7 +133,7 @@
  *
  * Handle a fatal parser error, i.e. violating Well-Formedness constraints
  */
-static void
+static void LIBXML_ATTR_FORMAT(3,0)
 xmlFatalErrMsg(xmlParserCtxtPtr ctxt, xmlParserErrors error,
                const char *msg, const xmlChar *str1, const xmlChar *str2)
 {
@@ -164,7 +164,7 @@
  *
  * Handle a parser warning
  */
-static void
+static void LIBXML_ATTR_FORMAT(3,0)
 xmlWarnMsg(xmlParserCtxtPtr ctxt, xmlParserErrors error,
                const char *msg, const xmlChar *str1)
 {
@@ -189,7 +189,7 @@
  *
  * Handle a namespace error
  */
-static void
+static void LIBXML_ATTR_FORMAT(3,0)
 xmlNsErrMsg(xmlParserCtxtPtr ctxt, xmlParserErrors error,
             const char *msg, const xmlChar *str1, const xmlChar *str2)
 {
@@ -213,7 +213,7 @@
  *
  * Handle a namespace warning
  */
-static void
+static void LIBXML_ATTR_FORMAT(3,0)
 xmlNsWarnMsg(xmlParserCtxtPtr ctxt, xmlParserErrors error,
              const char *msg, const xmlChar *str1, const xmlChar *str2)
 {
diff --git a/catalog.c b/catalog.c
index 5773db3..6dfdfbb 100644
--- a/catalog.c
+++ b/catalog.c
@@ -47,9 +47,9 @@
 #define MAX_CATAL_DEPTH	50
 
 #ifdef _WIN32
-# define PATH_SEAPARATOR ';'
+# define PATH_SEPARATOR ';'
 #else
-# define PATH_SEAPARATOR ':'
+# define PATH_SEPARATOR ':'
 #endif
 
 /**
@@ -238,7 +238,7 @@
  *
  * Handle a catalog error
  */
-static void
+static void LIBXML_ATTR_FORMAT(4,0)
 xmlCatalogErr(xmlCatalogEntryPtr catal, xmlNodePtr node, int error,
                const char *msg, const xmlChar *str1, const xmlChar *str2,
 	       const xmlChar *str3)
@@ -3247,7 +3247,7 @@
 	while (xmlIsBlank_ch(*cur)) cur++;
 	if (*cur != 0) {
 	    paths = cur;
-	    while ((*cur != 0) && (*cur != PATH_SEAPARATOR) && (!xmlIsBlank_ch(*cur)))
+	    while ((*cur != 0) && (*cur != PATH_SEPARATOR) && (!xmlIsBlank_ch(*cur)))
 		cur++;
 	    path = xmlStrndup((const xmlChar *)paths, cur - paths);
 #ifdef _WIN32
@@ -3263,7 +3263,7 @@
 		xmlFree(path);
 	    }
 	}
-	while (*cur == PATH_SEAPARATOR)
+	while (*cur == PATH_SEPARATOR)
 	    cur++;
     }
 }
diff --git a/configure.ac b/configure.ac
index 0260281..911984e 100644
--- a/configure.ac
+++ b/configure.ac
@@ -3,12 +3,13 @@
 AC_INIT
 AC_CONFIG_SRCDIR([entities.c])
 AC_CONFIG_HEADERS([config.h])
+AM_MAINTAINER_MODE([enable])
 AC_CONFIG_MACRO_DIR([m4])
 AC_CANONICAL_HOST
 
 LIBXML_MAJOR_VERSION=2
 LIBXML_MINOR_VERSION=9
-LIBXML_MICRO_VERSION=3
+LIBXML_MICRO_VERSION=4
 LIBXML_MICRO_VERSION_SUFFIX=
 LIBXML_VERSION=$LIBXML_MAJOR_VERSION.$LIBXML_MINOR_VERSION.$LIBXML_MICRO_VERSION$LIBXML_MICRO_VERSION_SUFFIX
 LIBXML_VERSION_INFO=`expr $LIBXML_MAJOR_VERSION + $LIBXML_MINOR_VERSION`:$LIBXML_MICRO_VERSION:$LIBXML_MINOR_VERSION
@@ -158,7 +159,7 @@
   if test "$withval" != "no" -a "$withval" != "yes"; then
     RDL_DIR=$withval
     CPPFLAGS="${CPPFLAGS} -I$withval/include"
-    LIBS="${LIBS} -L$withval/lib"
+    LDFLAGS="${LDFLAGS} -L$withval/lib"
   fi
 ])
 AC_ARG_WITH(regexps,
@@ -194,7 +195,7 @@
   if test "$withval" != "no" -a "$withval" != "yes"; then
     Z_DIR=$withval
     CPPFLAGS="${CPPFLAGS} -I$withval/include"
-    LIBS="${LIBS} -L$withval/lib"
+    LDFLAGS="${LDFLAGS} -L$withval/lib"
   fi
 ])
 AC_ARG_WITH(lzma,
@@ -202,7 +203,7 @@
   if test "$withval" != "no" -a "$withval" != "yes"; then
     LZMA_DIR=$withval
     CPPFLAGS="${CPPFLAGS} -I$withval/include"
-    LIBS="${LIBS} -L$withval/lib"
+    LDFLAGS="${LDFLAGS} -L$withval/lib"
   fi
 ])
 AC_ARG_WITH(coverage,
@@ -390,24 +391,39 @@
 if test "$with_zlib" = "no"; then
     echo "Disabling compression support"
 else
-    AC_CHECK_HEADERS(zlib.h,
-        [SAVE_LDFLAGS="${LDFLAGS}"
-	 LDFLAGS="-L${Z_DIR}/lib"
-	AC_CHECK_LIB(z, gzread,[
-	    AC_DEFINE([HAVE_LIBZ], [1], [Have compression library])
-	    WITH_ZLIB=1
-	    if test "x${Z_DIR}" != "x"; then
-		Z_CFLAGS="-I${Z_DIR}/include"
-		Z_LIBS="-L${Z_DIR}/lib -lz"
-		[case ${host} in
-		    *-*-solaris*)
-			Z_LIBS="-L${Z_DIR}/lib -R${Z_DIR}/lib -lz"
-			;;
-		esac]
-	    else
-		Z_LIBS="-lz"
-	    fi])
-	 LDFLAGS="${SAVE_LDFLAGS}"])
+    # Try pkg-config first so that static linking works.
+    # If this succeeeds, we ignore the WITH_ZLIB directory.
+    PKG_CHECK_MODULES([Z],[zlib],
+        [have_libz=yes],
+        [have_libz=no])
+
+     if test "x$have_libz" = "xno"; then
+        AC_CHECK_HEADERS(zlib.h,
+            AC_CHECK_LIB(z, gzread,[
+                have_libz=yes
+                if test "x${Z_DIR}" != "x"; then
+                    Z_CFLAGS="-I${Z_DIR}/include"
+                    Z_LIBS="-L${Z_DIR}/lib -lz"
+                    [case ${host} in
+                        *-*-solaris*)
+                            Z_LIBS="-L${Z_DIR}/lib -R${Z_DIR}/lib -lz"
+                            ;;
+                    esac]
+                else
+                    Z_LIBS="-lz"
+                fi],
+                [have_libz=no])
+             )
+    else
+	# we still need to check for zlib.h header
+	AC_CHECK_HEADERS([zlib.h])
+    fi
+
+    # Found the library via either method?
+    if test "x$have_libz" = "xyes"; then
+        AC_DEFINE([HAVE_LIBZ], [1], [Have compression library])
+        WITH_ZLIB=1
+    fi
 fi
 
 AC_SUBST(Z_CFLAGS)
@@ -433,8 +449,6 @@
      # private dependencies, though, so static linking may fail.
      if test "x$have_liblzma" = "xno"; then
          AC_CHECK_HEADERS(lzma.h,
-	    [SAVE_LDFLAGS="${LDFLAGS}"
-	     LDFLAGS="-L${LZMA_DIR}/lib"
             AC_CHECK_LIB(lzma, lzma_code,[
                 have_liblzma=yes
                 if test "x${LZMA_DIR}" != "x"; then
@@ -444,7 +458,7 @@
                     LZMA_LIBS="-llzma"
                 fi],
                 [have_liblzma=no])
-	     LDFLAGS="${SAVE_LDFLAGS}"])
+	     )
     else
 	# we still need to check for lzma,h header
 	AC_CHECK_HEADERS([lzma.h])
@@ -777,7 +791,7 @@
     fi
 
     # warnings we'd like to see
-    CFLAGS="${CFLAGS} -pedantic -W -Wformat -Wunused -Wimplicit -Wreturn-type -Wswitch -Wcomment -Wtrigraphs -Wformat -Wchar-subscripts -Wuninitialized -Wparentheses -Wshadow -Wpointer-arith -Wcast-align -Wwrite-strings -Waggregate-return -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Winline -Wredundant-decls"
+    CFLAGS="${CFLAGS} -pedantic -W -Wformat -Wno-format-extra-args -Wunused -Wimplicit -Wreturn-type -Wswitch -Wcomment -Wtrigraphs -Wchar-subscripts -Wuninitialized -Wparentheses -Wshadow -Wpointer-arith -Wcast-align -Wwrite-strings -Waggregate-return -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Winline -Wredundant-decls"
     # warnings we'd like to supress
     CFLAGS="${CFLAGS} -Wno-long-long"
     case "${host}" in
@@ -996,7 +1010,7 @@
 	fi
     fi
     if test "${GCC}" = "yes" ; then
-    CFLAGS="-g -O -pedantic -W -Wformat -Wunused -Wimplicit -Wreturn-type -Wswitch -Wcomment -Wtrigraphs -Wformat -Wchar-subscripts -Wuninitialized -Wparentheses -Wshadow -Wpointer-arith -Wcast-align -Wwrite-strings -Waggregate-return -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Winline -Wredundant-decls -Wall"
+    CFLAGS="-g -O -pedantic -W -Wformat -Wno-format-extra-args -Wunused -Wimplicit -Wreturn-type -Wswitch -Wcomment -Wtrigraphs -Wchar-subscripts -Wuninitialized -Wparentheses -Wshadow -Wpointer-arith -Wcast-align -Wwrite-strings -Waggregate-return -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Winline -Wredundant-decls -Wall"
     fi
     STATIC_BINARIES="-static"
 dnl -Wcast-qual -ansi
@@ -1479,8 +1493,6 @@
 	*) M_LIBS="-lm"
 	;;
 esac
-XML_LIBS="-lxml2 $Z_LIBS $THREAD_LIBS $ICONV_LIBS $M_LIBS $LIBS"
-XML_LIBTOOLLIBS="libxml2.la"
 AC_SUBST(WITH_ICONV)
 
 WITH_ICU=0
@@ -1488,18 +1500,64 @@
 if test "$with_icu" != "yes" ; then
     echo Disabling ICU support
 else
-    ICU_CONFIG=icu-config
-    if ${ICU_CONFIG} --cflags >/dev/null 2>&1
-    then
-        ICU_LIBS=`${ICU_CONFIG} --ldflags`
+    # Try pkg-config first so that static linking works.
+    # If this succeeeds, we ignore the WITH_ICU directory.
+    PKG_CHECK_MODULES([ICU],[icu-i18n],
+        [have_libicu=yes],
+        [have_libicu=no])
+
+    # 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 "x$have_libicu" = "xno"; then
+        ICU_CONFIG=icu-config
+        if ${ICU_CONFIG} --cflags >/dev/null 2>&1
+        then
+            ICU_LIBS=`${ICU_CONFIG} --ldflags`
+            have_libicu=yes
+            echo Enabling ICU support
+        else
+            if test "$with_icu" != "yes" -a "$with_iconv" != "" ; then
+                CPPFLAGS="${CPPFLAGS} -I$with_icu"
+                # Export this since our headers include icu.h
+                XML_INCLUDEDIR="${XML_INCLUDEDIR} -I$with_icu"
+            fi
+
+            AC_CHECK_HEADER(unicode/ucnv.h,
+            AC_MSG_CHECKING(for icu)
+            AC_TRY_LINK([#include <unicode/ucnv.h>],[
+        UConverter *utf = ucnv_open("UTF-8", NULL);],[
+                AC_MSG_RESULT(yes)
+                have_libicu=yes],[
+                AC_MSG_RESULT(no)
+                AC_MSG_CHECKING(for icu in -licucore)
+
+                _ldflags="${LDFLAGS}"
+                _libs="${LIBS}"
+                LDFLAGS="${LDFLAGS} ${ICU_LIBS}"
+                LIBS="${LIBS} -licucore"
+
+                AC_TRY_LINK([#include <unicode/ucnv.h>],[
+        UConverter *utf = ucnv_open("UTF-8", NULL);],[
+                    AC_MSG_RESULT(yes)
+                    have_libicu=yes
+                    ICU_LIBS="${ICU_LIBS} -licucore"
+                    LIBS="${_libs}"
+                    LDFLAGS="${_ldflags}"],[
+                    AC_MSG_RESULT(no)
+                    LIBS="${_libs}"
+                LDFLAGS="${_ldflags}"])]))
+        fi
+    fi
+
+    # Found the library via either method?
+    if test "x$have_libicu" = "xyes"; then
         WITH_ICU=1
-        echo Enabling ICU support
-    else
-        AC_MSG_ERROR([libicu config program icu-config not found])
     fi
 fi
+XML_LIBS="-lxml2 $Z_LIBS $LZMA_LIBS $THREAD_LIBS $ICONV_LIBS $ICU_LIBS $M_LIBS $LIBS"
+XML_LIBTOOLLIBS="libxml2.la"
 AC_SUBST(WITH_ICU)
-AC_SUBST(ICU_LIBS)
 
 WITH_ISO8859X=1
 if test "$WITH_ICONV" != "1" ; then
@@ -1638,6 +1696,7 @@
 AC_SUBST(XML_LIBS)
 AC_SUBST(XML_LIBTOOLLIBS)
 AC_SUBST(ICONV_LIBS)
+AC_SUBST(ICU_LIBS)
 AC_SUBST(XML_INCLUDEDIR)
 AC_SUBST(HTML_DIR)
 AC_SUBST(HAVE_ISNAN)
diff --git a/debugXML.c b/debugXML.c
index b05fdff..a1b550a 100644
--- a/debugXML.c
+++ b/debugXML.c
@@ -44,10 +44,10 @@
     int depth;                  /* current depth */
     xmlDocPtr doc;              /* current document */
     xmlNodePtr node;		/* current node */
-    xmlDictPtr dict;		/* the doc dictionnary */
+    xmlDictPtr dict;		/* the doc dictionary */
     int check;                  /* do just checkings */
     int errors;                 /* number of errors found */
-    int nodict;			/* if the document has no dictionnary */
+    int nodict;			/* if the document has no dictionary */
     int options;		/* options */
 };
 
@@ -164,7 +164,7 @@
 		    NULL, NULL, NULL, 0, 0,
 		    "%s", msg);
 }
-static void
+static void LIBXML_ATTR_FORMAT(3,0)
 xmlDebugErr2(xmlDebugCtxtPtr ctxt, int error, const char *msg, int extra)
 {
     ctxt->errors++;
@@ -174,7 +174,7 @@
 		    NULL, NULL, NULL, 0, 0,
 		    msg, extra);
 }
-static void
+static void LIBXML_ATTR_FORMAT(3,0)
 xmlDebugErr3(xmlDebugCtxtPtr ctxt, int error, const char *msg, const char *extra)
 {
     ctxt->errors++;
@@ -243,7 +243,7 @@
  * @ctxt: the debug context
  * @name: the name
  *
- * Do debugging on the name, for example the dictionnary status and
+ * Do debugging on the name, for example the dictionary status and
  * conformance to the Name production.
  */
 static void
@@ -265,7 +265,7 @@
             ((ctxt->doc == NULL) ||
              ((ctxt->doc->parseFlags & (XML_PARSE_SAX1 | XML_PARSE_NODICT)) == 0))) {
 	    xmlDebugErr3(ctxt, XML_CHECK_OUTSIDE_DICT,
-			 "Name is not from the document dictionnary '%s'",
+			 "Name is not from the document dictionary '%s'",
 			 (const char *) name);
 	}
     }
@@ -292,7 +292,7 @@
             /* desactivated right now as it raises too many errors */
 	    if (doc->type == XML_DOCUMENT_NODE)
 		xmlDebugErr(ctxt, XML_CHECK_NO_DICT,
-			    "Document has no dictionnary\n");
+			    "Document has no dictionary\n");
 #endif
 	    ctxt->nodict = 1;
 	}
diff --git a/dict.c b/dict.c
index 8c8f931..c0585fe 100644
--- a/dict.c
+++ b/dict.c
@@ -87,7 +87,7 @@
 #endif /* WITH_BIG_KEY */
 
 /*
- * An entry in the dictionnary
+ * An entry in the dictionary
  */
 typedef struct _xmlDictEntry xmlDictEntry;
 typedef xmlDictEntry *xmlDictEntryPtr;
@@ -110,7 +110,7 @@
     xmlChar array[1];
 };
 /*
- * The entire dictionnary
+ * The entire dictionary
  */
 struct _xmlDict {
     int ref_counter;
@@ -229,7 +229,7 @@
 
 /*
  * xmlDictAddString:
- * @dict: the dictionnary
+ * @dict: the dictionary
  * @name: the name of the userdata
  * @len: the length of the name
  *
@@ -291,7 +291,7 @@
 
 /*
  * xmlDictAddQString:
- * @dict: the dictionnary
+ * @dict: the dictionary
  * @prefix: the prefix of the userdata
  * @plen: the prefix length
  * @name: the name of the userdata
@@ -533,7 +533,7 @@
  *
  * Create a new dictionary
  *
- * Returns the newly created dictionnary, or NULL if an error occured.
+ * Returns the newly created dictionary, or NULL if an error occured.
  */
 xmlDictPtr
 xmlDictCreate(void) {
@@ -573,14 +573,14 @@
 
 /**
  * xmlDictCreateSub:
- * @sub: an existing dictionnary
+ * @sub: an existing dictionary
  *
  * Create a new dictionary, inheriting strings from the read-only
- * dictionnary @sub. On lookup, strings are first searched in the
- * new dictionnary, then in @sub, and if not found are created in the
- * new dictionnary.
+ * 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 dictionnary, or NULL if an error occured.
+ * Returns the newly created dictionary, or NULL if an error occured.
  */
 xmlDictPtr
 xmlDictCreateSub(xmlDictPtr sub) {
@@ -599,7 +599,7 @@
 
 /**
  * xmlDictReference:
- * @dict: the dictionnary
+ * @dict: the dictionary
  *
  * Increment the reference counter of a dictionary
  *
@@ -620,10 +620,10 @@
 
 /**
  * xmlDictGrow:
- * @dict: the dictionnary
- * @size: the new size of the dictionnary
+ * @dict: the dictionary
+ * @size: the new size of the dictionary
  *
- * resize the dictionnary
+ * resize the dictionary
  *
  * Returns 0 in case of success, -1 in case of failure
  */
@@ -755,7 +755,7 @@
 
 /**
  * xmlDictFree:
- * @dict: the dictionnary
+ * @dict: the dictionary
  *
  * Free the hash @dict and its contents. The userdata is
  * deallocated with @f if provided.
@@ -817,11 +817,11 @@
 
 /**
  * xmlDictLookup:
- * @dict: the dictionnary
+ * @dict: the dictionary
  * @name: the name of the userdata
  * @len: the length of the name, if -1 it is recomputed
  *
- * Add the @name to the dictionnary @dict if not present.
+ * Add the @name to the dictionary @dict if not present.
  *
  * Returns the internal copy of the name or NULL in case of internal error
  */
@@ -957,11 +957,11 @@
 
 /**
  * xmlDictExists:
- * @dict: the dictionnary
+ * @dict: the dictionary
  * @name: the name of the userdata
  * @len: the length of the name, if -1 it is recomputed
  *
- * Check if the @name exists in the dictionnary @dict.
+ * Check if the @name exists in the dictionary @dict.
  *
  * Returns the internal copy of the name or NULL if not found.
  */
@@ -1065,7 +1065,7 @@
 
 /**
  * xmlDictQLookup:
- * @dict: the dictionnary
+ * @dict: the dictionary
  * @prefix: the prefix
  * @name: the name
  *
@@ -1170,7 +1170,7 @@
 
 /**
  * xmlDictOwns:
- * @dict: the dictionnary
+ * @dict: the dictionary
  * @str: the string
  *
  * check if a string is owned by the disctionary
@@ -1197,11 +1197,11 @@
 
 /**
  * xmlDictSize:
- * @dict: the dictionnary
+ * @dict: the dictionary
  *
  * Query the number of elements installed in the hash @dict.
  *
- * Returns the number of elements in the dictionnary or
+ * Returns the number of elements in the dictionary or
  * -1 in case of error
  */
 int
@@ -1215,7 +1215,7 @@
 
 /**
  * xmlDictSetLimit:
- * @dict: the dictionnary
+ * @dict: the dictionary
  * @limit: the limit in bytes
  *
  * Set a size limit for the dictionary
@@ -1236,7 +1236,7 @@
 
 /**
  * xmlDictGetUsage:
- * @dict: the dictionnary
+ * @dict: the dictionary
  *
  * Get how much memory is used by a dictionary for strings
  * Added in 2.9.0
diff --git a/doc/APIchunk13.html b/doc/APIchunk13.html
index b1f069d..dba5952 100644
--- a/doc/APIchunk13.html
+++ b/doc/APIchunk13.html
@@ -383,34 +383,6 @@
 <a href="html/libxml-xmlregexp.html#xmlRegexpIsDeterminist">xmlRegexpIsDeterminist</a><br />
 </dd><dt>dict</dt><dd><a href="html/libxml-tree.html#_xmlDoc">_xmlDoc</a><br />
 </dd><dt>dictionaries</dt><dd><a href="html/libxml-parserInternals.html#XML_MAX_NAME_LENGTH">XML_MAX_NAME_LENGTH</a><br />
-</dd><dt>dictionary</dt><dd><a href="html/libxml-parserInternals.html#XML_MAX_DICTIONARY_LIMIT">XML_MAX_DICTIONARY_LIMIT</a><br />
-<a href="html/libxml-parser.html#_xmlParserCtxt">_xmlParserCtxt</a><br />
-<a href="html/libxml-xpath.html#_xmlXPathContext">_xmlXPathContext</a><br />
-<a href="html/libxml-dict.html#xmlDictCleanup">xmlDictCleanup</a><br />
-<a href="html/libxml-dict.html#xmlDictCreate">xmlDictCreate</a><br />
-<a href="html/libxml-dict.html#xmlDictCreateSub">xmlDictCreateSub</a><br />
-<a href="html/libxml-dict.html#xmlDictGetUsage">xmlDictGetUsage</a><br />
-<a href="html/libxml-dict.html#xmlDictReference">xmlDictReference</a><br />
-<a href="html/libxml-dict.html#xmlDictSetLimit">xmlDictSetLimit</a><br />
-<a href="html/libxml-hash.html#xmlHashCreateDict">xmlHashCreateDict</a><br />
-<a href="html/libxml-dict.html#xmlInitializeDict">xmlInitializeDict</a><br />
-<a href="html/libxml-pattern.html#xmlPatterncompile">xmlPatterncompile</a><br />
-<a href="html/libxml-pattern.html#xmlStreamPush">xmlStreamPush</a><br />
-<a href="html/libxml-pattern.html#xmlStreamPushAttr">xmlStreamPushAttr</a><br />
-<a href="html/libxml-pattern.html#xmlStreamPushNode">xmlStreamPushNode</a><br />
-</dd><dt>dictionnary</dt><dd><a href="html/libxml-parser.html#_xmlParserCtxt">_xmlParserCtxt</a><br />
-<a href="html/libxml-dict.html#xmlDictCreate">xmlDictCreate</a><br />
-<a href="html/libxml-dict.html#xmlDictCreateSub">xmlDictCreateSub</a><br />
-<a href="html/libxml-dict.html#xmlDictExists">xmlDictExists</a><br />
-<a href="html/libxml-dict.html#xmlDictFree">xmlDictFree</a><br />
-<a href="html/libxml-dict.html#xmlDictGetUsage">xmlDictGetUsage</a><br />
-<a href="html/libxml-dict.html#xmlDictLookup">xmlDictLookup</a><br />
-<a href="html/libxml-dict.html#xmlDictOwns">xmlDictOwns</a><br />
-<a href="html/libxml-dict.html#xmlDictQLookup">xmlDictQLookup</a><br />
-<a href="html/libxml-dict.html#xmlDictReference">xmlDictReference</a><br />
-<a href="html/libxml-dict.html#xmlDictSetLimit">xmlDictSetLimit</a><br />
-<a href="html/libxml-dict.html#xmlDictSize">xmlDictSize</a><br />
-<a href="html/libxml-xmlregexp.html#xmlExpNewCtxt">xmlExpNewCtxt</a><br />
 </dd><dt>did</dt><dd><a href="html/libxml-schemasInternals.html#XML_SCHEMAS_TYPE_BLOCK_DEFAULT">XML_SCHEMAS_TYPE_BLOCK_DEFAULT</a><br />
 <a href="html/libxml-xmlreader.html#xmlTextReaderGetRemainder">xmlTextReaderGetRemainder</a><br />
 <a href="html/libxml-xmlreader.html#xmlTextReaderStandalone">xmlTextReaderStandalone</a><br />
diff --git a/doc/APIchunk26.html b/doc/APIchunk26.html
index c68ae92..af3b1a5 100644
--- a/doc/APIchunk26.html
+++ b/doc/APIchunk26.html
@@ -143,6 +143,7 @@
 <a href="html/libxml-xpathInternals.html#xmlXPathRegisterVariableNS">xmlXPathRegisterVariableNS</a><br />
 </dd><dt>unsafe</dt><dd><a href="html/libxml-valid.html#xmlSprintfElementContent">xmlSprintfElementContent</a><br />
 </dd><dt>unsigned</dt><dd><a href="">c</a><br />
+<a href="html/libxml-xmlmemory.html#xmlMallocAtomicLoc">xmlMallocAtomicLoc</a><br />
 <a href="html/libxml-uri.html#xmlURIUnescapeString">xmlURIUnescapeString</a><br />
 </dd><dt>unsupported</dt><dd><a href="html/libxml-tree.html#xmlDOMWrapAdoptNode">xmlDOMWrapAdoptNode</a><br />
 <a href="html/libxml-tree.html#xmlDOMWrapCloneNode">xmlDOMWrapCloneNode</a><br />
diff --git a/doc/APIfunctions.html b/doc/APIfunctions.html
index 9027afe..f9ac249 100644
--- a/doc/APIfunctions.html
+++ b/doc/APIfunctions.html
@@ -368,9 +368,7 @@
 <a href="html/libxml-tree.html#xmlSplitQName2">xmlSplitQName2</a><br />
 <a href="html/libxml-tree.html#xmlSplitQName3">xmlSplitQName3</a><br />
 <a href="html/libxml-xmlstring.html#xmlStrEqual">xmlStrEqual</a><br />
-<a href="html/libxml-xmlstring.html#xmlStrPrintf">xmlStrPrintf</a><br />
 <a href="html/libxml-xmlstring.html#xmlStrQEqual">xmlStrQEqual</a><br />
-<a href="html/libxml-xmlstring.html#xmlStrVPrintf">xmlStrVPrintf</a><br />
 <a href="html/libxml-xmlstring.html#xmlStrcasecmp">xmlStrcasecmp</a><br />
 <a href="html/libxml-xmlstring.html#xmlStrcasestr">xmlStrcasestr</a><br />
 <a href="html/libxml-xmlstring.html#xmlStrcat">xmlStrcat</a><br />
diff --git a/doc/apibuild.py b/doc/apibuild.py
index b5b669a..7a36466 100755
--- a/doc/apibuild.py
+++ b/doc/apibuild.py
@@ -81,6 +81,7 @@
   "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"),
+  "__XML_EXTERNC": (0, "Special macro added for os400"),
 }
 
 def escape(raw):
diff --git a/doc/devhelp/general.html b/doc/devhelp/general.html
index 68f9380..90f0d39 100644
--- a/doc/devhelp/general.html
+++ b/doc/devhelp/general.html
@@ -33,6 +33,6 @@
     <h2>
       <span class="refentrytitle">libxml2 API Modules</span>
     </h2>
-    <p><a href="libxml2-DOCBparser.html">DOCBparser</a> - old DocBook SGML parser<br/><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-SAX.html">SAX</a> - Old SAX version 1 handler, deprecated<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 dictionnary<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-nanoftp.html">nanoftp</a> - minimal FTP implementation<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 Schemastron 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-xmlunicode.html">xmlunicode</a> - Unicode character APIs<br/><a href="libxml2-xmlversion.html">xmlversion</a> - compile-time version informations<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>
+    <p><a href="libxml2-DOCBparser.html">DOCBparser</a> - old DocBook SGML parser<br/><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-SAX.html">SAX</a> - Old SAX version 1 handler, deprecated<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-nanoftp.html">nanoftp</a> - minimal FTP implementation<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 Schemastron 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-xmlunicode.html">xmlunicode</a> - Unicode character APIs<br/><a href="libxml2-xmlversion.html">xmlversion</a> - compile-time version informations<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>
diff --git a/doc/devhelp/libxml2-dict.html b/doc/devhelp/libxml2-dict.html
index fd5f6b9..3776c5b 100644
--- a/doc/devhelp/libxml2-dict.html
+++ b/doc/devhelp/libxml2-dict.html
@@ -2,7 +2,7 @@
 <html>
   <head>
     <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
-    <title>dict: string dictionnary</title>
+    <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"/>
@@ -38,7 +38,7 @@
     <h2>
       <span class="refentrytitle">dict</span>
     </h2>
-    <p>dict - string dictionnary</p>
+    <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">
@@ -82,47 +82,47 @@
         <hr/>
         <div class="refsect2" lang="en"><h3><a name="xmlDictCreate"/>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 dictionnary, or NULL if an error occured.</td></tr></tbody></table></div></div>
+<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 occured.</td></tr></tbody></table></div></div>
         <hr/>
         <div class="refsect2" lang="en"><h3><a name="xmlDictCreateSub"/>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 dictionnary @sub. On lookup, strings are first searched in the new dictionnary, then in @sub, and if not found are created in the new dictionnary.</p>
-<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 dictionnary</td></tr><tr><td><span class="term"><i><tt>Returns</tt></i>:</span></td><td>the newly created dictionnary, or NULL if an error occured.</td></tr></tbody></table></div></div>
+</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 occured.</td></tr></tbody></table></div></div>
         <hr/>
         <div class="refsect2" lang="en"><h3><a name="xmlDictExists"/>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 the @name exists in the dictionnary @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 dictionnary</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>
+</pre><p>Check if the @name exists in the dictionary @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>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"/>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 dictionnary</td></tr></tbody></table></div></div>
+<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"/>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 dictionnary</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>
+<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"/>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>Add the @name to the dictionnary @dict if not present.</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 dictionnary</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 in case of internal error</td></tr></tbody></table></div></div>
+</pre><p>Add the @name to the dictionary @dict if not present.</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 in case of internal error</td></tr></tbody></table></div></div>
         <hr/>
         <div class="refsect2" lang="en"><h3><a name="xmlDictOwns"/>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 disctionary</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 dictionnary</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>
+<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"/>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>Add the QName @prefix:@name to the hash @dict if not present.</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 dictionnary</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 internal copy of the QName or NULL in case of internal error</td></tr></tbody></table></div></div>
+<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 internal copy of the QName or NULL in case of internal error</td></tr></tbody></table></div></div>
         <hr/>
         <div class="refsect2" lang="en"><h3><a name="xmlDictReference"/>xmlDictReference ()</h3><pre class="programlisting">int	xmlDictReference		(<a href="libxml2-dict.html#xmlDictPtr">xmlDictPtr</a> dict)<br/>
 </pre><p>Increment the <a href="libxml2-SAX.html#reference">reference</a> 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 dictionnary</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>
+<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"/>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 dictionnary</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>
+<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"/>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 dictionnary</td></tr><tr><td><span class="term"><i><tt>Returns</tt></i>:</span></td><td>the number of elements in the dictionnary or -1 in case of error</td></tr></tbody></table></div></div>
+<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"/>xmlInitializeDict ()</h3><pre class="programlisting">int	xmlInitializeDict		(void)<br/>
 </pre><p>Do the dictionary mutex initialization. this function is deprecated</p>
diff --git a/doc/devhelp/libxml2-parser.html b/doc/devhelp/libxml2-parser.html
index 357c14a..c740554 100644
--- a/doc/devhelp/libxml2-parser.html
+++ b/doc/devhelp/libxml2-parser.html
@@ -300,7 +300,7 @@
     <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 substitition */
     <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 dictionnary */
+    <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 */
diff --git a/doc/devhelp/libxml2-tree.html b/doc/devhelp/libxml2-tree.html
index 5f8d1f2..ac85d60 100644
--- a/doc/devhelp/libxml2-tree.html
+++ b/doc/devhelp/libxml2-tree.html
@@ -782,7 +782,7 @@
     void *	catalogs	: document's own catalog
     int	recovery	: run in recovery mode
     int	progressive	: is this a progressive parsing
-    <a href="libxml2-dict.html#xmlDictPtr">xmlDictPtr</a>	dict	: dictionnary for the parser
+    <a href="libxml2-dict.html#xmlDictPtr">xmlDictPtr</a>	dict	: dictionary for the parser
     const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * *	atts	: array for the attributes callbacks
     int	maxatts	: the size of the array
     int	docdict	: * pre-interned strings *
diff --git a/doc/devhelp/libxml2-xmlmemory.html b/doc/devhelp/libxml2-xmlmemory.html
index 8610538..bf400d0 100644
--- a/doc/devhelp/libxml2-xmlmemory.html
+++ b/doc/devhelp/libxml2-xmlmemory.html
@@ -118,7 +118,7 @@
         <hr/>
         <div class="refsect2" lang="en"><h3><a name="xmlMallocAtomicLoc"/>xmlMallocAtomicLoc ()</h3><pre class="programlisting">void *	xmlMallocAtomicLoc		(size_t size, <br/>					 const char * file, <br/>					 int line)<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>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>
+<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"/>xmlMallocLoc ()</h3><pre class="programlisting">void *	xmlMallocLoc			(size_t size, <br/>					 const char * file, <br/>					 int line)<br/>
 </pre><p>a malloc() equivalent, with logging of the allocation info.</p>
diff --git a/doc/devhelp/libxml2-xmlregexp.html b/doc/devhelp/libxml2-xmlregexp.html
index 9427a34..8d5c80e 100644
--- a/doc/devhelp/libxml2-xmlregexp.html
+++ b/doc/devhelp/libxml2-xmlregexp.html
@@ -200,7 +200,7 @@
         <hr/>
         <div class="refsect2" lang="en"><h3><a name="xmlExpNewCtxt"/>xmlExpNewCtxt ()</h3><pre class="programlisting"><a href="libxml2-xmlregexp.html#xmlExpCtxtPtr">xmlExpCtxtPtr</a>	xmlExpNewCtxt		(int maxNodes, <br/>					 <a href="libxml2-dict.html#xmlDictPtr">xmlDictPtr</a> dict)<br/>
 </pre><p>Creates a new context for manipulating expressions</p>
-<div class="variablelist"><table border="0"><col align="left"/><tbody><tr><td><span class="term"><i><tt>maxNodes</tt></i>:</span></td><td>the maximum number of nodes</td></tr><tr><td><span class="term"><i><tt>dict</tt></i>:</span></td><td>optional dictionnary to use internally</td></tr><tr><td><span class="term"><i><tt>Returns</tt></i>:</span></td><td>the context or NULL in case of error</td></tr></tbody></table></div></div>
+<div class="variablelist"><table border="0"><col align="left"/><tbody><tr><td><span class="term"><i><tt>maxNodes</tt></i>:</span></td><td>the maximum number of nodes</td></tr><tr><td><span class="term"><i><tt>dict</tt></i>:</span></td><td>optional dictionary to use internally</td></tr><tr><td><span class="term"><i><tt>Returns</tt></i>:</span></td><td>the context or NULL in case of error</td></tr></tbody></table></div></div>
         <hr/>
         <div class="refsect2" lang="en"><h3><a name="xmlExpNewOr"/>xmlExpNewOr ()</h3><pre class="programlisting"><a href="libxml2-xmlregexp.html#xmlExpNodePtr">xmlExpNodePtr</a>	xmlExpNewOr		(<a href="libxml2-xmlregexp.html#xmlExpCtxtPtr">xmlExpCtxtPtr</a> ctxt, <br/>					 <a href="libxml2-xmlregexp.html#xmlExpNodePtr">xmlExpNodePtr</a> left, <br/>					 <a href="libxml2-xmlregexp.html#xmlExpNodePtr">xmlExpNodePtr</a> right)<br/>
 </pre><p>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).</p>
diff --git a/doc/devhelp/libxml2-xmlstring.html b/doc/devhelp/libxml2-xmlstring.html
index 6dfc70b..ca90ed4 100644
--- a/doc/devhelp/libxml2-xmlstring.html
+++ b/doc/devhelp/libxml2-xmlstring.html
@@ -49,7 +49,7 @@
 <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> *	<a href="#xmlCharStrndup">xmlCharStrndup</a>		(const char * cur, <br/>					 int len);
 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);
-int	<a href="#xmlStrPrintf">xmlStrPrintf</a>			(<a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * buf, <br/>					 int len, <br/>					 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * msg, <br/>					 ... ...);
+int	<a href="#xmlStrPrintf">xmlStrPrintf</a>			(<a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * buf, <br/>					 int len, <br/>					 const char * msg, <br/>					 ... ...);
 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);
 int	<a href="#xmlUTF8Size">xmlUTF8Size</a>			(const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * utf);
 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);
@@ -65,7 +65,7 @@
 int	<a href="#xmlGetUTF8Char">xmlGetUTF8Char</a>			(const unsigned char * utf, <br/>					 int * len);
 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);
 <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);
-int	<a href="#xmlStrVPrintf">xmlStrVPrintf</a>			(<a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * buf, <br/>					 int len, <br/>					 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * msg, <br/>					 va_list ap);
+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="#xmlUTF8Strsize">xmlUTF8Strsize</a>			(const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * utf, <br/>					 int len);
 int	<a href="#xmlCheckUTF8">xmlCheckUTF8</a>			(const unsigned char * utf);
 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);
@@ -111,7 +111,7 @@
 </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"/>xmlStrPrintf ()</h3><pre class="programlisting">int	xmlStrPrintf			(<a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * buf, <br/>					 int len, <br/>					 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * msg, <br/>					 ... ...)<br/>
+        <div class="refsect2" lang="en"><h3><a name="xmlStrPrintf"/>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 <a href="libxml2-SAX.html#characters">characters</a> written to @buf or -1 if an error occurs.</td></tr></tbody></table></div></div>
         <hr/>
@@ -119,7 +119,7 @@
 </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"/>xmlStrVPrintf ()</h3><pre class="programlisting">int	xmlStrVPrintf			(<a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * buf, <br/>					 int len, <br/>					 const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * msg, <br/>					 va_list ap)<br/>
+        <div class="refsect2" lang="en"><h3><a name="xmlStrVPrintf"/>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 <a href="libxml2-SAX.html#characters">characters</a> written to @buf or -1 if an error occurs.</td></tr></tbody></table></div></div>
         <hr/>
diff --git a/doc/docdescr.doc b/doc/docdescr.doc
index 427a1ff..3fec94a 100644
--- a/doc/docdescr.doc
+++ b/doc/docdescr.doc
@@ -29,7 +29,7 @@
 w3c.png                                    -
 
 apibuild.py        Python script which generates the file libxml2-api.xml
-parsedecl.py       Python secipt which generates the file libxml2-refs.xml
+parsedecl.py       Python script which generates the file libxml2-refs.xml
 
 api.xsl            xslt script to generate API cross-references APIchunk*.html
                      using information from libxml2-api.xml and libxml2-refs.xml
diff --git a/doc/examples/io1.res b/doc/examples/io1.res
index adf65c7..4a4c036 100644
--- a/doc/examples/io1.res
+++ b/doc/examples/io1.res
@@ -1,5 +1,5 @@
 <?xml version="1.0"?>
 <document xmlns:xi="http://www.w3.org/2003/XInclude">
   <p>List of people:</p>
-  <list xml:base="sql://select_name_from_people"><people>a</people><people>b</people></list>
+  <list><people>a</people><people>b</people></list>
 </document>
diff --git a/doc/html/book1.html b/doc/html/book1.html
index 1a58210..42d71a6 100644
--- a/doc/html/book1.html
+++ b/doc/html/book1.html
@@ -10,4 +10,4 @@
 </style><style type="text/css">
       div.deprecated pre.programlisting {border-style: double;border-color:red}
       pre.programlisting {border-style: double;background: #EECFA1}
-    </style><title>Reference Manual for libxml2</title></head><body bgcolor="#8b7765" text="#000000" link="#a06060" vlink="#000000"><table border="0" width="100%" cellpadding="5" cellspacing="0" align="center"><tr><td width="120"><a href="http://swpat.ffii.org/"><img src="../epatents.png" alt="Action against software patents" /></a></td><td width="180"><a href="http://www.gnome.org/"><img src="../gnome2.png" alt="Gnome2 Logo" /></a><a href="http://www.w3.org/Status"><img src="../w3c.png" alt="W3C Logo" /></a><a href="http://www.redhat.com/"><img src="../redhat.gif" alt="Red Hat Logo" /></a><div align="left"><a href="http://xmlsoft.org/"><img src="../Libxml2-Logo-180x168.gif" alt="Made with Libxml2 Logo" /></a></div></td><td><table border="0" width="90%" cellpadding="2" cellspacing="0" align="center" bgcolor="#000000"><tr><td><table width="100%" border="0" cellspacing="1" cellpadding="3" bgcolor="#fffacd"><tr><td align="center"><h1></h1><h2>Reference Manual for libxml2</h2></td></tr></table></td></tr></table></td></tr></table><table border="0" cellpadding="4" cellspacing="0" width="100%" align="center"><tr><td bgcolor="#8b7765"><table border="0" cellspacing="0" cellpadding="2" width="100%"><tr><td valign="top" width="200" bgcolor="#8b7765"><table border="0" cellspacing="0" cellpadding="1" width="100%" bgcolor="#000000"><tr><td><table width="100%" border="0" cellspacing="1" cellpadding="3"><tr><td colspan="1" bgcolor="#eecfa1" align="center"><center><b>API Menu</b></center></td></tr><tr><td bgcolor="#fffacd"><form action="../search.php" enctype="application/x-www-form-urlencoded" method="get"><input name="query" type="text" size="20" value="" /><input name="submit" type="submit" value="Search ..." /></form><ul><li><a style="font-weight:bold" href="../index.html">Main Menu</a></li><li><a style="font-weight:bold" href="../docs.html">Developer Menu</a></li><li><a style="font-weight:bold" href="../examples/index.html">Code Examples</a></li><li><a style="font-weight:bold" href="index.html">API Menu</a></li><li><a href="libxml-parser.html">Parser API</a></li><li><a href="libxml-tree.html">Tree API</a></li><li><a href="libxml-xmlreader.html">Reader API</a></li><li><a href="../guidelines.html">XML Guidelines</a></li><li><a href="../ChangeLog.html">ChangeLog</a></li></ul></td></tr></table><table width="100%" border="0" cellspacing="1" cellpadding="3"><tr><td colspan="1" bgcolor="#eecfa1" align="center"><center><b>API Indexes</b></center></td></tr><tr><td bgcolor="#fffacd"><ul><li><a href="../APIchunk0.html">Alphabetic</a></li><li><a href="../APIconstructors.html">Constructors</a></li><li><a href="../APIfunctions.html">Functions/Types</a></li><li><a href="../APIfiles.html">Modules</a></li><li><a href="../APIsymbols.html">Symbols</a></li></ul></td></tr></table><table width="100%" border="0" cellspacing="1" cellpadding="3"><tr><td colspan="1" bgcolor="#eecfa1" align="center"><center><b>Related links</b></center></td></tr><tr><td bgcolor="#fffacd"><ul><li><a href="http://mail.gnome.org/archives/xml/">Mail archive</a></li><li><a href="http://xmlsoft.org/XSLT/">XSLT libxslt</a></li><li><a href="http://phd.cs.unibo.it/gdome2/">DOM gdome2</a></li><li><a href="http://www.aleksey.com/xmlsec/">XML-DSig xmlsec</a></li><li><a href="ftp://xmlsoft.org/">FTP</a></li><li><a href="http://www.zlatkovic.com/projects/libxml/">Windows binaries</a></li><li><a href="http://opencsw.org/packages/libxml2">Solaris binaries</a></li><li><a href="http://www.explain.com.au/oss/libxml2xslt.html">MacOsX binaries</a></li><li><a href="http://lxml.de/">lxml Python bindings</a></li><li><a href="http://cpan.uwinnipeg.ca/dist/XML-LibXML">Perl bindings</a></li><li><a href="http://libxmlplusplus.sourceforge.net/">C++ bindings</a></li><li><a href="http://www.zend.com/php5/articles/php5-xmlphp.php#Heading4">PHP bindings</a></li><li><a href="http://sourceforge.net/projects/libxml2-pas/">Pascal bindings</a></li><li><a href="http://libxml.rubyforge.org/">Ruby bindings</a></li><li><a href="http://tclxml.sourceforge.net/">Tcl bindings</a></li><li><a href="http://bugzilla.gnome.org/buglist.cgi?product=libxml2">Bug Tracker</a></li></ul></td></tr></table></td></tr></table></td><td valign="top" bgcolor="#8b7765"><table border="0" cellspacing="0" cellpadding="1" width="100%"><tr><td><table border="0" cellspacing="0" cellpadding="1" width="100%" bgcolor="#000000"><tr><td><table border="0" cellpadding="3" cellspacing="1" width="100%"><tr><td bgcolor="#fffacd"><h2>Table of Contents</h2><ul><li><a href="libxml-DOCBparser.html">DOCBparser</a>: old DocBook SGML parser</li><li><a href="libxml-HTMLparser.html">HTMLparser</a>: interface for an HTML 4.0 non-verifying parser</li><li><a href="libxml-HTMLtree.html">HTMLtree</a>: specific APIs to process HTML tree, especially serialization</li><li><a href="libxml-SAX.html">SAX</a>: Old SAX version 1 handler, deprecated</li><li><a href="libxml-SAX2.html">SAX2</a>: SAX2 parser interface used to build the DOM tree</li><li><a href="libxml-c14n.html">c14n</a>: Provide Canonical XML and Exclusive XML Canonicalization</li><li><a href="libxml-catalog.html">catalog</a>: interfaces to the Catalog handling system</li><li><a href="libxml-chvalid.html">chvalid</a>: Unicode character range checking</li><li><a href="libxml-debugXML.html">debugXML</a>: Tree debugging APIs</li><li><a href="libxml-dict.html">dict</a>: string dictionnary</li><li><a href="libxml-encoding.html">encoding</a>: interface for the encoding conversion functions</li><li><a href="libxml-entities.html">entities</a>: interface for the XML entities handling</li><li><a href="libxml-globals.html">globals</a>: interface for all global variables of the library</li><li><a href="libxml-hash.html">hash</a>: Chained hash tables</li><li><a href="libxml-list.html">list</a>: lists interfaces</li><li><a href="libxml-nanoftp.html">nanoftp</a>: minimal FTP implementation</li><li><a href="libxml-nanohttp.html">nanohttp</a>: minimal HTTP implementation</li><li><a href="libxml-parser.html">parser</a>: the core parser module</li><li><a href="libxml-parserInternals.html">parserInternals</a>: internals routines and limits exported by the parser.</li><li><a href="libxml-pattern.html">pattern</a>: pattern expression handling</li><li><a href="libxml-relaxng.html">relaxng</a>: implementation of the Relax-NG validation</li><li><a href="libxml-schemasInternals.html">schemasInternals</a>: internal interfaces for XML Schemas</li><li><a href="libxml-schematron.html">schematron</a>: XML Schemastron implementation</li><li><a href="libxml-threads.html">threads</a>: interfaces for thread handling</li><li><a href="libxml-tree.html">tree</a>: interfaces for tree manipulation</li><li><a href="libxml-uri.html">uri</a>: library of generic URI related routines</li><li><a href="libxml-valid.html">valid</a>: The DTD validation</li><li><a href="libxml-xinclude.html">xinclude</a>: implementation of XInclude</li><li><a href="libxml-xlink.html">xlink</a>: unfinished XLink detection module</li><li><a href="libxml-xmlIO.html">xmlIO</a>: interface for the I/O interfaces used by the parser</li><li><a href="libxml-xmlautomata.html">xmlautomata</a>: API to build regexp automata</li><li><a href="libxml-xmlerror.html">xmlerror</a>: error handling</li><li><a href="libxml-xmlexports.html">xmlexports</a>: macros for marking symbols as exportable/importable.</li><li><a href="libxml-xmlmemory.html">xmlmemory</a>: interface for the memory allocator</li><li><a href="libxml-xmlmodule.html">xmlmodule</a>: dynamic module loading</li><li><a href="libxml-xmlreader.html">xmlreader</a>: the XMLReader implementation</li><li><a href="libxml-xmlregexp.html">xmlregexp</a>: regular expressions handling</li><li><a href="libxml-xmlsave.html">xmlsave</a>: the XML document serializer</li><li><a href="libxml-xmlschemas.html">xmlschemas</a>: incomplete XML Schemas structure implementation</li><li><a href="libxml-xmlschemastypes.html">xmlschemastypes</a>: implementation of XML Schema Datatypes</li><li><a href="libxml-xmlstring.html">xmlstring</a>: set of routines to process strings</li><li><a href="libxml-xmlunicode.html">xmlunicode</a>: Unicode character APIs</li><li><a href="libxml-xmlversion.html">xmlversion</a>: compile-time version informations</li><li><a href="libxml-xmlwriter.html">xmlwriter</a>: text writing API for XML</li><li><a href="libxml-xpath.html">xpath</a>: XML Path Language implementation</li><li><a href="libxml-xpathInternals.html">xpathInternals</a>: internal interfaces for XML Path Language implementation</li><li><a href="libxml-xpointer.html">xpointer</a>: API to handle XML Pointers</li></ul><p><a href="../bugs.html">Daniel Veillard</a></p></td></tr></table></td></tr></table></td></tr></table></td></tr></table></td></tr></table></body></html>
+    </style><title>Reference Manual for libxml2</title></head><body bgcolor="#8b7765" text="#000000" link="#a06060" vlink="#000000"><table border="0" width="100%" cellpadding="5" cellspacing="0" align="center"><tr><td width="120"><a href="http://swpat.ffii.org/"><img src="../epatents.png" alt="Action against software patents" /></a></td><td width="180"><a href="http://www.gnome.org/"><img src="../gnome2.png" alt="Gnome2 Logo" /></a><a href="http://www.w3.org/Status"><img src="../w3c.png" alt="W3C Logo" /></a><a href="http://www.redhat.com/"><img src="../redhat.gif" alt="Red Hat Logo" /></a><div align="left"><a href="http://xmlsoft.org/"><img src="../Libxml2-Logo-180x168.gif" alt="Made with Libxml2 Logo" /></a></div></td><td><table border="0" width="90%" cellpadding="2" cellspacing="0" align="center" bgcolor="#000000"><tr><td><table width="100%" border="0" cellspacing="1" cellpadding="3" bgcolor="#fffacd"><tr><td align="center"><h1></h1><h2>Reference Manual for libxml2</h2></td></tr></table></td></tr></table></td></tr></table><table border="0" cellpadding="4" cellspacing="0" width="100%" align="center"><tr><td bgcolor="#8b7765"><table border="0" cellspacing="0" cellpadding="2" width="100%"><tr><td valign="top" width="200" bgcolor="#8b7765"><table border="0" cellspacing="0" cellpadding="1" width="100%" bgcolor="#000000"><tr><td><table width="100%" border="0" cellspacing="1" cellpadding="3"><tr><td colspan="1" bgcolor="#eecfa1" align="center"><center><b>API Menu</b></center></td></tr><tr><td bgcolor="#fffacd"><form action="../search.php" enctype="application/x-www-form-urlencoded" method="get"><input name="query" type="text" size="20" value="" /><input name="submit" type="submit" value="Search ..." /></form><ul><li><a style="font-weight:bold" href="../index.html">Main Menu</a></li><li><a style="font-weight:bold" href="../docs.html">Developer Menu</a></li><li><a style="font-weight:bold" href="../examples/index.html">Code Examples</a></li><li><a style="font-weight:bold" href="index.html">API Menu</a></li><li><a href="libxml-parser.html">Parser API</a></li><li><a href="libxml-tree.html">Tree API</a></li><li><a href="libxml-xmlreader.html">Reader API</a></li><li><a href="../guidelines.html">XML Guidelines</a></li><li><a href="../ChangeLog.html">ChangeLog</a></li></ul></td></tr></table><table width="100%" border="0" cellspacing="1" cellpadding="3"><tr><td colspan="1" bgcolor="#eecfa1" align="center"><center><b>API Indexes</b></center></td></tr><tr><td bgcolor="#fffacd"><ul><li><a href="../APIchunk0.html">Alphabetic</a></li><li><a href="../APIconstructors.html">Constructors</a></li><li><a href="../APIfunctions.html">Functions/Types</a></li><li><a href="../APIfiles.html">Modules</a></li><li><a href="../APIsymbols.html">Symbols</a></li></ul></td></tr></table><table width="100%" border="0" cellspacing="1" cellpadding="3"><tr><td colspan="1" bgcolor="#eecfa1" align="center"><center><b>Related links</b></center></td></tr><tr><td bgcolor="#fffacd"><ul><li><a href="http://mail.gnome.org/archives/xml/">Mail archive</a></li><li><a href="http://xmlsoft.org/XSLT/">XSLT libxslt</a></li><li><a href="http://phd.cs.unibo.it/gdome2/">DOM gdome2</a></li><li><a href="http://www.aleksey.com/xmlsec/">XML-DSig xmlsec</a></li><li><a href="ftp://xmlsoft.org/">FTP</a></li><li><a href="http://www.zlatkovic.com/projects/libxml/">Windows binaries</a></li><li><a href="http://opencsw.org/packages/libxml2">Solaris binaries</a></li><li><a href="http://www.explain.com.au/oss/libxml2xslt.html">MacOsX binaries</a></li><li><a href="http://lxml.de/">lxml Python bindings</a></li><li><a href="http://cpan.uwinnipeg.ca/dist/XML-LibXML">Perl bindings</a></li><li><a href="http://libxmlplusplus.sourceforge.net/">C++ bindings</a></li><li><a href="http://www.zend.com/php5/articles/php5-xmlphp.php#Heading4">PHP bindings</a></li><li><a href="http://sourceforge.net/projects/libxml2-pas/">Pascal bindings</a></li><li><a href="http://libxml.rubyforge.org/">Ruby bindings</a></li><li><a href="http://tclxml.sourceforge.net/">Tcl bindings</a></li><li><a href="http://bugzilla.gnome.org/buglist.cgi?product=libxml2">Bug Tracker</a></li></ul></td></tr></table></td></tr></table></td><td valign="top" bgcolor="#8b7765"><table border="0" cellspacing="0" cellpadding="1" width="100%"><tr><td><table border="0" cellspacing="0" cellpadding="1" width="100%" bgcolor="#000000"><tr><td><table border="0" cellpadding="3" cellspacing="1" width="100%"><tr><td bgcolor="#fffacd"><h2>Table of Contents</h2><ul><li><a href="libxml-DOCBparser.html">DOCBparser</a>: old DocBook SGML parser</li><li><a href="libxml-HTMLparser.html">HTMLparser</a>: interface for an HTML 4.0 non-verifying parser</li><li><a href="libxml-HTMLtree.html">HTMLtree</a>: specific APIs to process HTML tree, especially serialization</li><li><a href="libxml-SAX.html">SAX</a>: Old SAX version 1 handler, deprecated</li><li><a href="libxml-SAX2.html">SAX2</a>: SAX2 parser interface used to build the DOM tree</li><li><a href="libxml-c14n.html">c14n</a>: Provide Canonical XML and Exclusive XML Canonicalization</li><li><a href="libxml-catalog.html">catalog</a>: interfaces to the Catalog handling system</li><li><a href="libxml-chvalid.html">chvalid</a>: Unicode character range checking</li><li><a href="libxml-debugXML.html">debugXML</a>: Tree debugging APIs</li><li><a href="libxml-dict.html">dict</a>: string dictionary</li><li><a href="libxml-encoding.html">encoding</a>: interface for the encoding conversion functions</li><li><a href="libxml-entities.html">entities</a>: interface for the XML entities handling</li><li><a href="libxml-globals.html">globals</a>: interface for all global variables of the library</li><li><a href="libxml-hash.html">hash</a>: Chained hash tables</li><li><a href="libxml-list.html">list</a>: lists interfaces</li><li><a href="libxml-nanoftp.html">nanoftp</a>: minimal FTP implementation</li><li><a href="libxml-nanohttp.html">nanohttp</a>: minimal HTTP implementation</li><li><a href="libxml-parser.html">parser</a>: the core parser module</li><li><a href="libxml-parserInternals.html">parserInternals</a>: internals routines and limits exported by the parser.</li><li><a href="libxml-pattern.html">pattern</a>: pattern expression handling</li><li><a href="libxml-relaxng.html">relaxng</a>: implementation of the Relax-NG validation</li><li><a href="libxml-schemasInternals.html">schemasInternals</a>: internal interfaces for XML Schemas</li><li><a href="libxml-schematron.html">schematron</a>: XML Schemastron implementation</li><li><a href="libxml-threads.html">threads</a>: interfaces for thread handling</li><li><a href="libxml-tree.html">tree</a>: interfaces for tree manipulation</li><li><a href="libxml-uri.html">uri</a>: library of generic URI related routines</li><li><a href="libxml-valid.html">valid</a>: The DTD validation</li><li><a href="libxml-xinclude.html">xinclude</a>: implementation of XInclude</li><li><a href="libxml-xlink.html">xlink</a>: unfinished XLink detection module</li><li><a href="libxml-xmlIO.html">xmlIO</a>: interface for the I/O interfaces used by the parser</li><li><a href="libxml-xmlautomata.html">xmlautomata</a>: API to build regexp automata</li><li><a href="libxml-xmlerror.html">xmlerror</a>: error handling</li><li><a href="libxml-xmlexports.html">xmlexports</a>: macros for marking symbols as exportable/importable.</li><li><a href="libxml-xmlmemory.html">xmlmemory</a>: interface for the memory allocator</li><li><a href="libxml-xmlmodule.html">xmlmodule</a>: dynamic module loading</li><li><a href="libxml-xmlreader.html">xmlreader</a>: the XMLReader implementation</li><li><a href="libxml-xmlregexp.html">xmlregexp</a>: regular expressions handling</li><li><a href="libxml-xmlsave.html">xmlsave</a>: the XML document serializer</li><li><a href="libxml-xmlschemas.html">xmlschemas</a>: incomplete XML Schemas structure implementation</li><li><a href="libxml-xmlschemastypes.html">xmlschemastypes</a>: implementation of XML Schema Datatypes</li><li><a href="libxml-xmlstring.html">xmlstring</a>: set of routines to process strings</li><li><a href="libxml-xmlunicode.html">xmlunicode</a>: Unicode character APIs</li><li><a href="libxml-xmlversion.html">xmlversion</a>: compile-time version informations</li><li><a href="libxml-xmlwriter.html">xmlwriter</a>: text writing API for XML</li><li><a href="libxml-xpath.html">xpath</a>: XML Path Language implementation</li><li><a href="libxml-xpathInternals.html">xpathInternals</a>: internal interfaces for XML Path Language implementation</li><li><a href="libxml-xpointer.html">xpointer</a>: API to handle XML Pointers</li></ul><p><a href="../bugs.html">Daniel Veillard</a></p></td></tr></table></td></tr></table></td></tr></table></td></tr></table></td></tr></table></body></html>
diff --git a/doc/html/index.html b/doc/html/index.html
index 1a58210..42d71a6 100644
--- a/doc/html/index.html
+++ b/doc/html/index.html
@@ -10,4 +10,4 @@
 </style><style type="text/css">
       div.deprecated pre.programlisting {border-style: double;border-color:red}
       pre.programlisting {border-style: double;background: #EECFA1}
-    </style><title>Reference Manual for libxml2</title></head><body bgcolor="#8b7765" text="#000000" link="#a06060" vlink="#000000"><table border="0" width="100%" cellpadding="5" cellspacing="0" align="center"><tr><td width="120"><a href="http://swpat.ffii.org/"><img src="../epatents.png" alt="Action against software patents" /></a></td><td width="180"><a href="http://www.gnome.org/"><img src="../gnome2.png" alt="Gnome2 Logo" /></a><a href="http://www.w3.org/Status"><img src="../w3c.png" alt="W3C Logo" /></a><a href="http://www.redhat.com/"><img src="../redhat.gif" alt="Red Hat Logo" /></a><div align="left"><a href="http://xmlsoft.org/"><img src="../Libxml2-Logo-180x168.gif" alt="Made with Libxml2 Logo" /></a></div></td><td><table border="0" width="90%" cellpadding="2" cellspacing="0" align="center" bgcolor="#000000"><tr><td><table width="100%" border="0" cellspacing="1" cellpadding="3" bgcolor="#fffacd"><tr><td align="center"><h1></h1><h2>Reference Manual for libxml2</h2></td></tr></table></td></tr></table></td></tr></table><table border="0" cellpadding="4" cellspacing="0" width="100%" align="center"><tr><td bgcolor="#8b7765"><table border="0" cellspacing="0" cellpadding="2" width="100%"><tr><td valign="top" width="200" bgcolor="#8b7765"><table border="0" cellspacing="0" cellpadding="1" width="100%" bgcolor="#000000"><tr><td><table width="100%" border="0" cellspacing="1" cellpadding="3"><tr><td colspan="1" bgcolor="#eecfa1" align="center"><center><b>API Menu</b></center></td></tr><tr><td bgcolor="#fffacd"><form action="../search.php" enctype="application/x-www-form-urlencoded" method="get"><input name="query" type="text" size="20" value="" /><input name="submit" type="submit" value="Search ..." /></form><ul><li><a style="font-weight:bold" href="../index.html">Main Menu</a></li><li><a style="font-weight:bold" href="../docs.html">Developer Menu</a></li><li><a style="font-weight:bold" href="../examples/index.html">Code Examples</a></li><li><a style="font-weight:bold" href="index.html">API Menu</a></li><li><a href="libxml-parser.html">Parser API</a></li><li><a href="libxml-tree.html">Tree API</a></li><li><a href="libxml-xmlreader.html">Reader API</a></li><li><a href="../guidelines.html">XML Guidelines</a></li><li><a href="../ChangeLog.html">ChangeLog</a></li></ul></td></tr></table><table width="100%" border="0" cellspacing="1" cellpadding="3"><tr><td colspan="1" bgcolor="#eecfa1" align="center"><center><b>API Indexes</b></center></td></tr><tr><td bgcolor="#fffacd"><ul><li><a href="../APIchunk0.html">Alphabetic</a></li><li><a href="../APIconstructors.html">Constructors</a></li><li><a href="../APIfunctions.html">Functions/Types</a></li><li><a href="../APIfiles.html">Modules</a></li><li><a href="../APIsymbols.html">Symbols</a></li></ul></td></tr></table><table width="100%" border="0" cellspacing="1" cellpadding="3"><tr><td colspan="1" bgcolor="#eecfa1" align="center"><center><b>Related links</b></center></td></tr><tr><td bgcolor="#fffacd"><ul><li><a href="http://mail.gnome.org/archives/xml/">Mail archive</a></li><li><a href="http://xmlsoft.org/XSLT/">XSLT libxslt</a></li><li><a href="http://phd.cs.unibo.it/gdome2/">DOM gdome2</a></li><li><a href="http://www.aleksey.com/xmlsec/">XML-DSig xmlsec</a></li><li><a href="ftp://xmlsoft.org/">FTP</a></li><li><a href="http://www.zlatkovic.com/projects/libxml/">Windows binaries</a></li><li><a href="http://opencsw.org/packages/libxml2">Solaris binaries</a></li><li><a href="http://www.explain.com.au/oss/libxml2xslt.html">MacOsX binaries</a></li><li><a href="http://lxml.de/">lxml Python bindings</a></li><li><a href="http://cpan.uwinnipeg.ca/dist/XML-LibXML">Perl bindings</a></li><li><a href="http://libxmlplusplus.sourceforge.net/">C++ bindings</a></li><li><a href="http://www.zend.com/php5/articles/php5-xmlphp.php#Heading4">PHP bindings</a></li><li><a href="http://sourceforge.net/projects/libxml2-pas/">Pascal bindings</a></li><li><a href="http://libxml.rubyforge.org/">Ruby bindings</a></li><li><a href="http://tclxml.sourceforge.net/">Tcl bindings</a></li><li><a href="http://bugzilla.gnome.org/buglist.cgi?product=libxml2">Bug Tracker</a></li></ul></td></tr></table></td></tr></table></td><td valign="top" bgcolor="#8b7765"><table border="0" cellspacing="0" cellpadding="1" width="100%"><tr><td><table border="0" cellspacing="0" cellpadding="1" width="100%" bgcolor="#000000"><tr><td><table border="0" cellpadding="3" cellspacing="1" width="100%"><tr><td bgcolor="#fffacd"><h2>Table of Contents</h2><ul><li><a href="libxml-DOCBparser.html">DOCBparser</a>: old DocBook SGML parser</li><li><a href="libxml-HTMLparser.html">HTMLparser</a>: interface for an HTML 4.0 non-verifying parser</li><li><a href="libxml-HTMLtree.html">HTMLtree</a>: specific APIs to process HTML tree, especially serialization</li><li><a href="libxml-SAX.html">SAX</a>: Old SAX version 1 handler, deprecated</li><li><a href="libxml-SAX2.html">SAX2</a>: SAX2 parser interface used to build the DOM tree</li><li><a href="libxml-c14n.html">c14n</a>: Provide Canonical XML and Exclusive XML Canonicalization</li><li><a href="libxml-catalog.html">catalog</a>: interfaces to the Catalog handling system</li><li><a href="libxml-chvalid.html">chvalid</a>: Unicode character range checking</li><li><a href="libxml-debugXML.html">debugXML</a>: Tree debugging APIs</li><li><a href="libxml-dict.html">dict</a>: string dictionnary</li><li><a href="libxml-encoding.html">encoding</a>: interface for the encoding conversion functions</li><li><a href="libxml-entities.html">entities</a>: interface for the XML entities handling</li><li><a href="libxml-globals.html">globals</a>: interface for all global variables of the library</li><li><a href="libxml-hash.html">hash</a>: Chained hash tables</li><li><a href="libxml-list.html">list</a>: lists interfaces</li><li><a href="libxml-nanoftp.html">nanoftp</a>: minimal FTP implementation</li><li><a href="libxml-nanohttp.html">nanohttp</a>: minimal HTTP implementation</li><li><a href="libxml-parser.html">parser</a>: the core parser module</li><li><a href="libxml-parserInternals.html">parserInternals</a>: internals routines and limits exported by the parser.</li><li><a href="libxml-pattern.html">pattern</a>: pattern expression handling</li><li><a href="libxml-relaxng.html">relaxng</a>: implementation of the Relax-NG validation</li><li><a href="libxml-schemasInternals.html">schemasInternals</a>: internal interfaces for XML Schemas</li><li><a href="libxml-schematron.html">schematron</a>: XML Schemastron implementation</li><li><a href="libxml-threads.html">threads</a>: interfaces for thread handling</li><li><a href="libxml-tree.html">tree</a>: interfaces for tree manipulation</li><li><a href="libxml-uri.html">uri</a>: library of generic URI related routines</li><li><a href="libxml-valid.html">valid</a>: The DTD validation</li><li><a href="libxml-xinclude.html">xinclude</a>: implementation of XInclude</li><li><a href="libxml-xlink.html">xlink</a>: unfinished XLink detection module</li><li><a href="libxml-xmlIO.html">xmlIO</a>: interface for the I/O interfaces used by the parser</li><li><a href="libxml-xmlautomata.html">xmlautomata</a>: API to build regexp automata</li><li><a href="libxml-xmlerror.html">xmlerror</a>: error handling</li><li><a href="libxml-xmlexports.html">xmlexports</a>: macros for marking symbols as exportable/importable.</li><li><a href="libxml-xmlmemory.html">xmlmemory</a>: interface for the memory allocator</li><li><a href="libxml-xmlmodule.html">xmlmodule</a>: dynamic module loading</li><li><a href="libxml-xmlreader.html">xmlreader</a>: the XMLReader implementation</li><li><a href="libxml-xmlregexp.html">xmlregexp</a>: regular expressions handling</li><li><a href="libxml-xmlsave.html">xmlsave</a>: the XML document serializer</li><li><a href="libxml-xmlschemas.html">xmlschemas</a>: incomplete XML Schemas structure implementation</li><li><a href="libxml-xmlschemastypes.html">xmlschemastypes</a>: implementation of XML Schema Datatypes</li><li><a href="libxml-xmlstring.html">xmlstring</a>: set of routines to process strings</li><li><a href="libxml-xmlunicode.html">xmlunicode</a>: Unicode character APIs</li><li><a href="libxml-xmlversion.html">xmlversion</a>: compile-time version informations</li><li><a href="libxml-xmlwriter.html">xmlwriter</a>: text writing API for XML</li><li><a href="libxml-xpath.html">xpath</a>: XML Path Language implementation</li><li><a href="libxml-xpathInternals.html">xpathInternals</a>: internal interfaces for XML Path Language implementation</li><li><a href="libxml-xpointer.html">xpointer</a>: API to handle XML Pointers</li></ul><p><a href="../bugs.html">Daniel Veillard</a></p></td></tr></table></td></tr></table></td></tr></table></td></tr></table></td></tr></table></body></html>
+    </style><title>Reference Manual for libxml2</title></head><body bgcolor="#8b7765" text="#000000" link="#a06060" vlink="#000000"><table border="0" width="100%" cellpadding="5" cellspacing="0" align="center"><tr><td width="120"><a href="http://swpat.ffii.org/"><img src="../epatents.png" alt="Action against software patents" /></a></td><td width="180"><a href="http://www.gnome.org/"><img src="../gnome2.png" alt="Gnome2 Logo" /></a><a href="http://www.w3.org/Status"><img src="../w3c.png" alt="W3C Logo" /></a><a href="http://www.redhat.com/"><img src="../redhat.gif" alt="Red Hat Logo" /></a><div align="left"><a href="http://xmlsoft.org/"><img src="../Libxml2-Logo-180x168.gif" alt="Made with Libxml2 Logo" /></a></div></td><td><table border="0" width="90%" cellpadding="2" cellspacing="0" align="center" bgcolor="#000000"><tr><td><table width="100%" border="0" cellspacing="1" cellpadding="3" bgcolor="#fffacd"><tr><td align="center"><h1></h1><h2>Reference Manual for libxml2</h2></td></tr></table></td></tr></table></td></tr></table><table border="0" cellpadding="4" cellspacing="0" width="100%" align="center"><tr><td bgcolor="#8b7765"><table border="0" cellspacing="0" cellpadding="2" width="100%"><tr><td valign="top" width="200" bgcolor="#8b7765"><table border="0" cellspacing="0" cellpadding="1" width="100%" bgcolor="#000000"><tr><td><table width="100%" border="0" cellspacing="1" cellpadding="3"><tr><td colspan="1" bgcolor="#eecfa1" align="center"><center><b>API Menu</b></center></td></tr><tr><td bgcolor="#fffacd"><form action="../search.php" enctype="application/x-www-form-urlencoded" method="get"><input name="query" type="text" size="20" value="" /><input name="submit" type="submit" value="Search ..." /></form><ul><li><a style="font-weight:bold" href="../index.html">Main Menu</a></li><li><a style="font-weight:bold" href="../docs.html">Developer Menu</a></li><li><a style="font-weight:bold" href="../examples/index.html">Code Examples</a></li><li><a style="font-weight:bold" href="index.html">API Menu</a></li><li><a href="libxml-parser.html">Parser API</a></li><li><a href="libxml-tree.html">Tree API</a></li><li><a href="libxml-xmlreader.html">Reader API</a></li><li><a href="../guidelines.html">XML Guidelines</a></li><li><a href="../ChangeLog.html">ChangeLog</a></li></ul></td></tr></table><table width="100%" border="0" cellspacing="1" cellpadding="3"><tr><td colspan="1" bgcolor="#eecfa1" align="center"><center><b>API Indexes</b></center></td></tr><tr><td bgcolor="#fffacd"><ul><li><a href="../APIchunk0.html">Alphabetic</a></li><li><a href="../APIconstructors.html">Constructors</a></li><li><a href="../APIfunctions.html">Functions/Types</a></li><li><a href="../APIfiles.html">Modules</a></li><li><a href="../APIsymbols.html">Symbols</a></li></ul></td></tr></table><table width="100%" border="0" cellspacing="1" cellpadding="3"><tr><td colspan="1" bgcolor="#eecfa1" align="center"><center><b>Related links</b></center></td></tr><tr><td bgcolor="#fffacd"><ul><li><a href="http://mail.gnome.org/archives/xml/">Mail archive</a></li><li><a href="http://xmlsoft.org/XSLT/">XSLT libxslt</a></li><li><a href="http://phd.cs.unibo.it/gdome2/">DOM gdome2</a></li><li><a href="http://www.aleksey.com/xmlsec/">XML-DSig xmlsec</a></li><li><a href="ftp://xmlsoft.org/">FTP</a></li><li><a href="http://www.zlatkovic.com/projects/libxml/">Windows binaries</a></li><li><a href="http://opencsw.org/packages/libxml2">Solaris binaries</a></li><li><a href="http://www.explain.com.au/oss/libxml2xslt.html">MacOsX binaries</a></li><li><a href="http://lxml.de/">lxml Python bindings</a></li><li><a href="http://cpan.uwinnipeg.ca/dist/XML-LibXML">Perl bindings</a></li><li><a href="http://libxmlplusplus.sourceforge.net/">C++ bindings</a></li><li><a href="http://www.zend.com/php5/articles/php5-xmlphp.php#Heading4">PHP bindings</a></li><li><a href="http://sourceforge.net/projects/libxml2-pas/">Pascal bindings</a></li><li><a href="http://libxml.rubyforge.org/">Ruby bindings</a></li><li><a href="http://tclxml.sourceforge.net/">Tcl bindings</a></li><li><a href="http://bugzilla.gnome.org/buglist.cgi?product=libxml2">Bug Tracker</a></li></ul></td></tr></table></td></tr></table></td><td valign="top" bgcolor="#8b7765"><table border="0" cellspacing="0" cellpadding="1" width="100%"><tr><td><table border="0" cellspacing="0" cellpadding="1" width="100%" bgcolor="#000000"><tr><td><table border="0" cellpadding="3" cellspacing="1" width="100%"><tr><td bgcolor="#fffacd"><h2>Table of Contents</h2><ul><li><a href="libxml-DOCBparser.html">DOCBparser</a>: old DocBook SGML parser</li><li><a href="libxml-HTMLparser.html">HTMLparser</a>: interface for an HTML 4.0 non-verifying parser</li><li><a href="libxml-HTMLtree.html">HTMLtree</a>: specific APIs to process HTML tree, especially serialization</li><li><a href="libxml-SAX.html">SAX</a>: Old SAX version 1 handler, deprecated</li><li><a href="libxml-SAX2.html">SAX2</a>: SAX2 parser interface used to build the DOM tree</li><li><a href="libxml-c14n.html">c14n</a>: Provide Canonical XML and Exclusive XML Canonicalization</li><li><a href="libxml-catalog.html">catalog</a>: interfaces to the Catalog handling system</li><li><a href="libxml-chvalid.html">chvalid</a>: Unicode character range checking</li><li><a href="libxml-debugXML.html">debugXML</a>: Tree debugging APIs</li><li><a href="libxml-dict.html">dict</a>: string dictionary</li><li><a href="libxml-encoding.html">encoding</a>: interface for the encoding conversion functions</li><li><a href="libxml-entities.html">entities</a>: interface for the XML entities handling</li><li><a href="libxml-globals.html">globals</a>: interface for all global variables of the library</li><li><a href="libxml-hash.html">hash</a>: Chained hash tables</li><li><a href="libxml-list.html">list</a>: lists interfaces</li><li><a href="libxml-nanoftp.html">nanoftp</a>: minimal FTP implementation</li><li><a href="libxml-nanohttp.html">nanohttp</a>: minimal HTTP implementation</li><li><a href="libxml-parser.html">parser</a>: the core parser module</li><li><a href="libxml-parserInternals.html">parserInternals</a>: internals routines and limits exported by the parser.</li><li><a href="libxml-pattern.html">pattern</a>: pattern expression handling</li><li><a href="libxml-relaxng.html">relaxng</a>: implementation of the Relax-NG validation</li><li><a href="libxml-schemasInternals.html">schemasInternals</a>: internal interfaces for XML Schemas</li><li><a href="libxml-schematron.html">schematron</a>: XML Schemastron implementation</li><li><a href="libxml-threads.html">threads</a>: interfaces for thread handling</li><li><a href="libxml-tree.html">tree</a>: interfaces for tree manipulation</li><li><a href="libxml-uri.html">uri</a>: library of generic URI related routines</li><li><a href="libxml-valid.html">valid</a>: The DTD validation</li><li><a href="libxml-xinclude.html">xinclude</a>: implementation of XInclude</li><li><a href="libxml-xlink.html">xlink</a>: unfinished XLink detection module</li><li><a href="libxml-xmlIO.html">xmlIO</a>: interface for the I/O interfaces used by the parser</li><li><a href="libxml-xmlautomata.html">xmlautomata</a>: API to build regexp automata</li><li><a href="libxml-xmlerror.html">xmlerror</a>: error handling</li><li><a href="libxml-xmlexports.html">xmlexports</a>: macros for marking symbols as exportable/importable.</li><li><a href="libxml-xmlmemory.html">xmlmemory</a>: interface for the memory allocator</li><li><a href="libxml-xmlmodule.html">xmlmodule</a>: dynamic module loading</li><li><a href="libxml-xmlreader.html">xmlreader</a>: the XMLReader implementation</li><li><a href="libxml-xmlregexp.html">xmlregexp</a>: regular expressions handling</li><li><a href="libxml-xmlsave.html">xmlsave</a>: the XML document serializer</li><li><a href="libxml-xmlschemas.html">xmlschemas</a>: incomplete XML Schemas structure implementation</li><li><a href="libxml-xmlschemastypes.html">xmlschemastypes</a>: implementation of XML Schema Datatypes</li><li><a href="libxml-xmlstring.html">xmlstring</a>: set of routines to process strings</li><li><a href="libxml-xmlunicode.html">xmlunicode</a>: Unicode character APIs</li><li><a href="libxml-xmlversion.html">xmlversion</a>: compile-time version informations</li><li><a href="libxml-xmlwriter.html">xmlwriter</a>: text writing API for XML</li><li><a href="libxml-xpath.html">xpath</a>: XML Path Language implementation</li><li><a href="libxml-xpathInternals.html">xpathInternals</a>: internal interfaces for XML Path Language implementation</li><li><a href="libxml-xpointer.html">xpointer</a>: API to handle XML Pointers</li></ul><p><a href="../bugs.html">Daniel Veillard</a></p></td></tr></table></td></tr></table></td></tr></table></td></tr></table></td></tr></table></body></html>
diff --git a/doc/html/libxml-dict.html b/doc/html/libxml-dict.html
index bdd21f4..74e243b 100644
--- a/doc/html/libxml-dict.html
+++ b/doc/html/libxml-dict.html
@@ -33,26 +33,26 @@
 </pre><p>Free the dictionary mutex. Do not call unless sure the library is not in use anymore !</p>
 <h3><a name="xmlDictCreate" id="xmlDictCreate"></a>Function: xmlDictCreate</h3><pre class="programlisting"><a href="libxml-dict.html#xmlDictPtr">xmlDictPtr</a>	xmlDictCreate		(void)<br />
 </pre><p>Create a new dictionary</p>
-<div class="variablelist"><table border="0"><col align="left" /><tbody><tr><td><span class="term"><i><tt>Returns</tt></i>:</span></td><td>the newly created dictionnary, or NULL if an error occured.</td></tr></tbody></table></div><h3><a name="xmlDictCreateSub" id="xmlDictCreateSub"></a>Function: xmlDictCreateSub</h3><pre class="programlisting"><a href="libxml-dict.html#xmlDictPtr">xmlDictPtr</a>	xmlDictCreateSub	(<a href="libxml-dict.html#xmlDictPtr">xmlDictPtr</a> sub)<br />
-</pre><p>Create a new dictionary, inheriting strings from the read-only dictionnary @sub. On lookup, strings are first searched in the new dictionnary, then in @sub, and if not found are created in the new dictionnary.</p>
-<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 dictionnary</td></tr><tr><td><span class="term"><i><tt>Returns</tt></i>:</span></td><td>the newly created dictionnary, or NULL if an error occured.</td></tr></tbody></table></div><h3><a name="xmlDictExists" id="xmlDictExists"></a>Function: xmlDictExists</h3><pre class="programlisting">const <a href="libxml-xmlstring.html#xmlChar">xmlChar</a> *	xmlDictExists		(<a href="libxml-dict.html#xmlDictPtr">xmlDictPtr</a> dict, <br />					 const <a href="libxml-xmlstring.html#xmlChar">xmlChar</a> * name, <br />					 int len)<br />
-</pre><p>Check if the @name exists in the dictionnary @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 dictionnary</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><h3><a name="xmlDictFree" id="xmlDictFree"></a>Function: xmlDictFree</h3><pre class="programlisting">void	xmlDictFree			(<a href="libxml-dict.html#xmlDictPtr">xmlDictPtr</a> dict)<br />
+<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 occured.</td></tr></tbody></table></div><h3><a name="xmlDictCreateSub" id="xmlDictCreateSub"></a>Function: xmlDictCreateSub</h3><pre class="programlisting"><a href="libxml-dict.html#xmlDictPtr">xmlDictPtr</a>	xmlDictCreateSub	(<a href="libxml-dict.html#xmlDictPtr">xmlDictPtr</a> sub)<br />
+</pre><p>Create a new dictionary, inheriting strings from the read-only 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 occured.</td></tr></tbody></table></div><h3><a name="xmlDictExists" id="xmlDictExists"></a>Function: xmlDictExists</h3><pre class="programlisting">const <a href="libxml-xmlstring.html#xmlChar">xmlChar</a> *	xmlDictExists		(<a href="libxml-dict.html#xmlDictPtr">xmlDictPtr</a> dict, <br />					 const <a href="libxml-xmlstring.html#xmlChar">xmlChar</a> * name, <br />					 int len)<br />
+</pre><p>Check if the @name exists in the dictionary @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>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><h3><a name="xmlDictFree" id="xmlDictFree"></a>Function: xmlDictFree</h3><pre class="programlisting">void	xmlDictFree			(<a href="libxml-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 dictionnary</td></tr></tbody></table></div><h3><a name="xmlDictGetUsage" id="xmlDictGetUsage"></a>Function: xmlDictGetUsage</h3><pre class="programlisting">size_t	xmlDictGetUsage			(<a href="libxml-dict.html#xmlDictPtr">xmlDictPtr</a> dict)<br />
+<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><h3><a name="xmlDictGetUsage" id="xmlDictGetUsage"></a>Function: xmlDictGetUsage</h3><pre class="programlisting">size_t	xmlDictGetUsage			(<a href="libxml-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 dictionnary</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><h3><a name="xmlDictLookup" id="xmlDictLookup"></a>Function: xmlDictLookup</h3><pre class="programlisting">const <a href="libxml-xmlstring.html#xmlChar">xmlChar</a> *	xmlDictLookup		(<a href="libxml-dict.html#xmlDictPtr">xmlDictPtr</a> dict, <br />					 const <a href="libxml-xmlstring.html#xmlChar">xmlChar</a> * name, <br />					 int len)<br />
-</pre><p>Add the @name to the dictionnary @dict if not present.</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 dictionnary</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 in case of internal error</td></tr></tbody></table></div><h3><a name="xmlDictOwns" id="xmlDictOwns"></a>Function: xmlDictOwns</h3><pre class="programlisting">int	xmlDictOwns			(<a href="libxml-dict.html#xmlDictPtr">xmlDictPtr</a> dict, <br />					 const <a href="libxml-xmlstring.html#xmlChar">xmlChar</a> * str)<br />
+<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><h3><a name="xmlDictLookup" id="xmlDictLookup"></a>Function: xmlDictLookup</h3><pre class="programlisting">const <a href="libxml-xmlstring.html#xmlChar">xmlChar</a> *	xmlDictLookup		(<a href="libxml-dict.html#xmlDictPtr">xmlDictPtr</a> dict, <br />					 const <a href="libxml-xmlstring.html#xmlChar">xmlChar</a> * name, <br />					 int len)<br />
+</pre><p>Add the @name to the dictionary @dict if not present.</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 in case of internal error</td></tr></tbody></table></div><h3><a name="xmlDictOwns" id="xmlDictOwns"></a>Function: xmlDictOwns</h3><pre class="programlisting">int	xmlDictOwns			(<a href="libxml-dict.html#xmlDictPtr">xmlDictPtr</a> dict, <br />					 const <a href="libxml-xmlstring.html#xmlChar">xmlChar</a> * str)<br />
 </pre><p>check if a string is owned by the disctionary</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 dictionnary</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><h3><a name="xmlDictQLookup" id="xmlDictQLookup"></a>Function: xmlDictQLookup</h3><pre class="programlisting">const <a href="libxml-xmlstring.html#xmlChar">xmlChar</a> *	xmlDictQLookup		(<a href="libxml-dict.html#xmlDictPtr">xmlDictPtr</a> dict, <br />					 const <a href="libxml-xmlstring.html#xmlChar">xmlChar</a> * prefix, <br />					 const <a href="libxml-xmlstring.html#xmlChar">xmlChar</a> * name)<br />
+<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><h3><a name="xmlDictQLookup" id="xmlDictQLookup"></a>Function: xmlDictQLookup</h3><pre class="programlisting">const <a href="libxml-xmlstring.html#xmlChar">xmlChar</a> *	xmlDictQLookup		(<a href="libxml-dict.html#xmlDictPtr">xmlDictPtr</a> dict, <br />					 const <a href="libxml-xmlstring.html#xmlChar">xmlChar</a> * prefix, <br />					 const <a href="libxml-xmlstring.html#xmlChar">xmlChar</a> * name)<br />
 </pre><p>Add the QName @prefix:@name to the hash @dict if not present.</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 dictionnary</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 internal copy of the QName or NULL in case of internal error</td></tr></tbody></table></div><h3><a name="xmlDictReference" id="xmlDictReference"></a>Function: xmlDictReference</h3><pre class="programlisting">int	xmlDictReference		(<a href="libxml-dict.html#xmlDictPtr">xmlDictPtr</a> dict)<br />
+<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 internal copy of the QName or NULL in case of internal error</td></tr></tbody></table></div><h3><a name="xmlDictReference" id="xmlDictReference"></a>Function: xmlDictReference</h3><pre class="programlisting">int	xmlDictReference		(<a href="libxml-dict.html#xmlDictPtr">xmlDictPtr</a> dict)<br />
 </pre><p>Increment the <a href="libxml-SAX.html#reference">reference</a> 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 dictionnary</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><h3><a name="xmlDictSetLimit" id="xmlDictSetLimit"></a>Function: xmlDictSetLimit</h3><pre class="programlisting">size_t	xmlDictSetLimit			(<a href="libxml-dict.html#xmlDictPtr">xmlDictPtr</a> dict, <br />					 size_t limit)<br />
+<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><h3><a name="xmlDictSetLimit" id="xmlDictSetLimit"></a>Function: xmlDictSetLimit</h3><pre class="programlisting">size_t	xmlDictSetLimit			(<a href="libxml-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 dictionnary</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><h3><a name="xmlDictSize" id="xmlDictSize"></a>Function: xmlDictSize</h3><pre class="programlisting">int	xmlDictSize			(<a href="libxml-dict.html#xmlDictPtr">xmlDictPtr</a> dict)<br />
+<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><h3><a name="xmlDictSize" id="xmlDictSize"></a>Function: xmlDictSize</h3><pre class="programlisting">int	xmlDictSize			(<a href="libxml-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 dictionnary</td></tr><tr><td><span class="term"><i><tt>Returns</tt></i>:</span></td><td>the number of elements in the dictionnary or -1 in case of error</td></tr></tbody></table></div><h3><a name="xmlInitializeDict" id="xmlInitializeDict"></a>Function: xmlInitializeDict</h3><pre class="programlisting">int	xmlInitializeDict		(void)<br />
+<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><h3><a name="xmlInitializeDict" id="xmlInitializeDict"></a>Function: xmlInitializeDict</h3><pre class="programlisting">int	xmlInitializeDict		(void)<br />
 </pre><p>Do the dictionary mutex initialization. this function is 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>0 if initialization was already done, and 1 if that call led to the initialization</td></tr></tbody></table></div><p><a href="../bugs.html">Daniel Veillard</a></p></td></tr></table></td></tr></table></td></tr></table></td></tr></table></td></tr></table></body></html>
diff --git a/doc/html/libxml-lib.html b/doc/html/libxml-lib.html
index 1a58210..42d71a6 100644
--- a/doc/html/libxml-lib.html
+++ b/doc/html/libxml-lib.html
@@ -10,4 +10,4 @@
 </style><style type="text/css">
       div.deprecated pre.programlisting {border-style: double;border-color:red}
       pre.programlisting {border-style: double;background: #EECFA1}
-    </style><title>Reference Manual for libxml2</title></head><body bgcolor="#8b7765" text="#000000" link="#a06060" vlink="#000000"><table border="0" width="100%" cellpadding="5" cellspacing="0" align="center"><tr><td width="120"><a href="http://swpat.ffii.org/"><img src="../epatents.png" alt="Action against software patents" /></a></td><td width="180"><a href="http://www.gnome.org/"><img src="../gnome2.png" alt="Gnome2 Logo" /></a><a href="http://www.w3.org/Status"><img src="../w3c.png" alt="W3C Logo" /></a><a href="http://www.redhat.com/"><img src="../redhat.gif" alt="Red Hat Logo" /></a><div align="left"><a href="http://xmlsoft.org/"><img src="../Libxml2-Logo-180x168.gif" alt="Made with Libxml2 Logo" /></a></div></td><td><table border="0" width="90%" cellpadding="2" cellspacing="0" align="center" bgcolor="#000000"><tr><td><table width="100%" border="0" cellspacing="1" cellpadding="3" bgcolor="#fffacd"><tr><td align="center"><h1></h1><h2>Reference Manual for libxml2</h2></td></tr></table></td></tr></table></td></tr></table><table border="0" cellpadding="4" cellspacing="0" width="100%" align="center"><tr><td bgcolor="#8b7765"><table border="0" cellspacing="0" cellpadding="2" width="100%"><tr><td valign="top" width="200" bgcolor="#8b7765"><table border="0" cellspacing="0" cellpadding="1" width="100%" bgcolor="#000000"><tr><td><table width="100%" border="0" cellspacing="1" cellpadding="3"><tr><td colspan="1" bgcolor="#eecfa1" align="center"><center><b>API Menu</b></center></td></tr><tr><td bgcolor="#fffacd"><form action="../search.php" enctype="application/x-www-form-urlencoded" method="get"><input name="query" type="text" size="20" value="" /><input name="submit" type="submit" value="Search ..." /></form><ul><li><a style="font-weight:bold" href="../index.html">Main Menu</a></li><li><a style="font-weight:bold" href="../docs.html">Developer Menu</a></li><li><a style="font-weight:bold" href="../examples/index.html">Code Examples</a></li><li><a style="font-weight:bold" href="index.html">API Menu</a></li><li><a href="libxml-parser.html">Parser API</a></li><li><a href="libxml-tree.html">Tree API</a></li><li><a href="libxml-xmlreader.html">Reader API</a></li><li><a href="../guidelines.html">XML Guidelines</a></li><li><a href="../ChangeLog.html">ChangeLog</a></li></ul></td></tr></table><table width="100%" border="0" cellspacing="1" cellpadding="3"><tr><td colspan="1" bgcolor="#eecfa1" align="center"><center><b>API Indexes</b></center></td></tr><tr><td bgcolor="#fffacd"><ul><li><a href="../APIchunk0.html">Alphabetic</a></li><li><a href="../APIconstructors.html">Constructors</a></li><li><a href="../APIfunctions.html">Functions/Types</a></li><li><a href="../APIfiles.html">Modules</a></li><li><a href="../APIsymbols.html">Symbols</a></li></ul></td></tr></table><table width="100%" border="0" cellspacing="1" cellpadding="3"><tr><td colspan="1" bgcolor="#eecfa1" align="center"><center><b>Related links</b></center></td></tr><tr><td bgcolor="#fffacd"><ul><li><a href="http://mail.gnome.org/archives/xml/">Mail archive</a></li><li><a href="http://xmlsoft.org/XSLT/">XSLT libxslt</a></li><li><a href="http://phd.cs.unibo.it/gdome2/">DOM gdome2</a></li><li><a href="http://www.aleksey.com/xmlsec/">XML-DSig xmlsec</a></li><li><a href="ftp://xmlsoft.org/">FTP</a></li><li><a href="http://www.zlatkovic.com/projects/libxml/">Windows binaries</a></li><li><a href="http://opencsw.org/packages/libxml2">Solaris binaries</a></li><li><a href="http://www.explain.com.au/oss/libxml2xslt.html">MacOsX binaries</a></li><li><a href="http://lxml.de/">lxml Python bindings</a></li><li><a href="http://cpan.uwinnipeg.ca/dist/XML-LibXML">Perl bindings</a></li><li><a href="http://libxmlplusplus.sourceforge.net/">C++ bindings</a></li><li><a href="http://www.zend.com/php5/articles/php5-xmlphp.php#Heading4">PHP bindings</a></li><li><a href="http://sourceforge.net/projects/libxml2-pas/">Pascal bindings</a></li><li><a href="http://libxml.rubyforge.org/">Ruby bindings</a></li><li><a href="http://tclxml.sourceforge.net/">Tcl bindings</a></li><li><a href="http://bugzilla.gnome.org/buglist.cgi?product=libxml2">Bug Tracker</a></li></ul></td></tr></table></td></tr></table></td><td valign="top" bgcolor="#8b7765"><table border="0" cellspacing="0" cellpadding="1" width="100%"><tr><td><table border="0" cellspacing="0" cellpadding="1" width="100%" bgcolor="#000000"><tr><td><table border="0" cellpadding="3" cellspacing="1" width="100%"><tr><td bgcolor="#fffacd"><h2>Table of Contents</h2><ul><li><a href="libxml-DOCBparser.html">DOCBparser</a>: old DocBook SGML parser</li><li><a href="libxml-HTMLparser.html">HTMLparser</a>: interface for an HTML 4.0 non-verifying parser</li><li><a href="libxml-HTMLtree.html">HTMLtree</a>: specific APIs to process HTML tree, especially serialization</li><li><a href="libxml-SAX.html">SAX</a>: Old SAX version 1 handler, deprecated</li><li><a href="libxml-SAX2.html">SAX2</a>: SAX2 parser interface used to build the DOM tree</li><li><a href="libxml-c14n.html">c14n</a>: Provide Canonical XML and Exclusive XML Canonicalization</li><li><a href="libxml-catalog.html">catalog</a>: interfaces to the Catalog handling system</li><li><a href="libxml-chvalid.html">chvalid</a>: Unicode character range checking</li><li><a href="libxml-debugXML.html">debugXML</a>: Tree debugging APIs</li><li><a href="libxml-dict.html">dict</a>: string dictionnary</li><li><a href="libxml-encoding.html">encoding</a>: interface for the encoding conversion functions</li><li><a href="libxml-entities.html">entities</a>: interface for the XML entities handling</li><li><a href="libxml-globals.html">globals</a>: interface for all global variables of the library</li><li><a href="libxml-hash.html">hash</a>: Chained hash tables</li><li><a href="libxml-list.html">list</a>: lists interfaces</li><li><a href="libxml-nanoftp.html">nanoftp</a>: minimal FTP implementation</li><li><a href="libxml-nanohttp.html">nanohttp</a>: minimal HTTP implementation</li><li><a href="libxml-parser.html">parser</a>: the core parser module</li><li><a href="libxml-parserInternals.html">parserInternals</a>: internals routines and limits exported by the parser.</li><li><a href="libxml-pattern.html">pattern</a>: pattern expression handling</li><li><a href="libxml-relaxng.html">relaxng</a>: implementation of the Relax-NG validation</li><li><a href="libxml-schemasInternals.html">schemasInternals</a>: internal interfaces for XML Schemas</li><li><a href="libxml-schematron.html">schematron</a>: XML Schemastron implementation</li><li><a href="libxml-threads.html">threads</a>: interfaces for thread handling</li><li><a href="libxml-tree.html">tree</a>: interfaces for tree manipulation</li><li><a href="libxml-uri.html">uri</a>: library of generic URI related routines</li><li><a href="libxml-valid.html">valid</a>: The DTD validation</li><li><a href="libxml-xinclude.html">xinclude</a>: implementation of XInclude</li><li><a href="libxml-xlink.html">xlink</a>: unfinished XLink detection module</li><li><a href="libxml-xmlIO.html">xmlIO</a>: interface for the I/O interfaces used by the parser</li><li><a href="libxml-xmlautomata.html">xmlautomata</a>: API to build regexp automata</li><li><a href="libxml-xmlerror.html">xmlerror</a>: error handling</li><li><a href="libxml-xmlexports.html">xmlexports</a>: macros for marking symbols as exportable/importable.</li><li><a href="libxml-xmlmemory.html">xmlmemory</a>: interface for the memory allocator</li><li><a href="libxml-xmlmodule.html">xmlmodule</a>: dynamic module loading</li><li><a href="libxml-xmlreader.html">xmlreader</a>: the XMLReader implementation</li><li><a href="libxml-xmlregexp.html">xmlregexp</a>: regular expressions handling</li><li><a href="libxml-xmlsave.html">xmlsave</a>: the XML document serializer</li><li><a href="libxml-xmlschemas.html">xmlschemas</a>: incomplete XML Schemas structure implementation</li><li><a href="libxml-xmlschemastypes.html">xmlschemastypes</a>: implementation of XML Schema Datatypes</li><li><a href="libxml-xmlstring.html">xmlstring</a>: set of routines to process strings</li><li><a href="libxml-xmlunicode.html">xmlunicode</a>: Unicode character APIs</li><li><a href="libxml-xmlversion.html">xmlversion</a>: compile-time version informations</li><li><a href="libxml-xmlwriter.html">xmlwriter</a>: text writing API for XML</li><li><a href="libxml-xpath.html">xpath</a>: XML Path Language implementation</li><li><a href="libxml-xpathInternals.html">xpathInternals</a>: internal interfaces for XML Path Language implementation</li><li><a href="libxml-xpointer.html">xpointer</a>: API to handle XML Pointers</li></ul><p><a href="../bugs.html">Daniel Veillard</a></p></td></tr></table></td></tr></table></td></tr></table></td></tr></table></td></tr></table></body></html>
+    </style><title>Reference Manual for libxml2</title></head><body bgcolor="#8b7765" text="#000000" link="#a06060" vlink="#000000"><table border="0" width="100%" cellpadding="5" cellspacing="0" align="center"><tr><td width="120"><a href="http://swpat.ffii.org/"><img src="../epatents.png" alt="Action against software patents" /></a></td><td width="180"><a href="http://www.gnome.org/"><img src="../gnome2.png" alt="Gnome2 Logo" /></a><a href="http://www.w3.org/Status"><img src="../w3c.png" alt="W3C Logo" /></a><a href="http://www.redhat.com/"><img src="../redhat.gif" alt="Red Hat Logo" /></a><div align="left"><a href="http://xmlsoft.org/"><img src="../Libxml2-Logo-180x168.gif" alt="Made with Libxml2 Logo" /></a></div></td><td><table border="0" width="90%" cellpadding="2" cellspacing="0" align="center" bgcolor="#000000"><tr><td><table width="100%" border="0" cellspacing="1" cellpadding="3" bgcolor="#fffacd"><tr><td align="center"><h1></h1><h2>Reference Manual for libxml2</h2></td></tr></table></td></tr></table></td></tr></table><table border="0" cellpadding="4" cellspacing="0" width="100%" align="center"><tr><td bgcolor="#8b7765"><table border="0" cellspacing="0" cellpadding="2" width="100%"><tr><td valign="top" width="200" bgcolor="#8b7765"><table border="0" cellspacing="0" cellpadding="1" width="100%" bgcolor="#000000"><tr><td><table width="100%" border="0" cellspacing="1" cellpadding="3"><tr><td colspan="1" bgcolor="#eecfa1" align="center"><center><b>API Menu</b></center></td></tr><tr><td bgcolor="#fffacd"><form action="../search.php" enctype="application/x-www-form-urlencoded" method="get"><input name="query" type="text" size="20" value="" /><input name="submit" type="submit" value="Search ..." /></form><ul><li><a style="font-weight:bold" href="../index.html">Main Menu</a></li><li><a style="font-weight:bold" href="../docs.html">Developer Menu</a></li><li><a style="font-weight:bold" href="../examples/index.html">Code Examples</a></li><li><a style="font-weight:bold" href="index.html">API Menu</a></li><li><a href="libxml-parser.html">Parser API</a></li><li><a href="libxml-tree.html">Tree API</a></li><li><a href="libxml-xmlreader.html">Reader API</a></li><li><a href="../guidelines.html">XML Guidelines</a></li><li><a href="../ChangeLog.html">ChangeLog</a></li></ul></td></tr></table><table width="100%" border="0" cellspacing="1" cellpadding="3"><tr><td colspan="1" bgcolor="#eecfa1" align="center"><center><b>API Indexes</b></center></td></tr><tr><td bgcolor="#fffacd"><ul><li><a href="../APIchunk0.html">Alphabetic</a></li><li><a href="../APIconstructors.html">Constructors</a></li><li><a href="../APIfunctions.html">Functions/Types</a></li><li><a href="../APIfiles.html">Modules</a></li><li><a href="../APIsymbols.html">Symbols</a></li></ul></td></tr></table><table width="100%" border="0" cellspacing="1" cellpadding="3"><tr><td colspan="1" bgcolor="#eecfa1" align="center"><center><b>Related links</b></center></td></tr><tr><td bgcolor="#fffacd"><ul><li><a href="http://mail.gnome.org/archives/xml/">Mail archive</a></li><li><a href="http://xmlsoft.org/XSLT/">XSLT libxslt</a></li><li><a href="http://phd.cs.unibo.it/gdome2/">DOM gdome2</a></li><li><a href="http://www.aleksey.com/xmlsec/">XML-DSig xmlsec</a></li><li><a href="ftp://xmlsoft.org/">FTP</a></li><li><a href="http://www.zlatkovic.com/projects/libxml/">Windows binaries</a></li><li><a href="http://opencsw.org/packages/libxml2">Solaris binaries</a></li><li><a href="http://www.explain.com.au/oss/libxml2xslt.html">MacOsX binaries</a></li><li><a href="http://lxml.de/">lxml Python bindings</a></li><li><a href="http://cpan.uwinnipeg.ca/dist/XML-LibXML">Perl bindings</a></li><li><a href="http://libxmlplusplus.sourceforge.net/">C++ bindings</a></li><li><a href="http://www.zend.com/php5/articles/php5-xmlphp.php#Heading4">PHP bindings</a></li><li><a href="http://sourceforge.net/projects/libxml2-pas/">Pascal bindings</a></li><li><a href="http://libxml.rubyforge.org/">Ruby bindings</a></li><li><a href="http://tclxml.sourceforge.net/">Tcl bindings</a></li><li><a href="http://bugzilla.gnome.org/buglist.cgi?product=libxml2">Bug Tracker</a></li></ul></td></tr></table></td></tr></table></td><td valign="top" bgcolor="#8b7765"><table border="0" cellspacing="0" cellpadding="1" width="100%"><tr><td><table border="0" cellspacing="0" cellpadding="1" width="100%" bgcolor="#000000"><tr><td><table border="0" cellpadding="3" cellspacing="1" width="100%"><tr><td bgcolor="#fffacd"><h2>Table of Contents</h2><ul><li><a href="libxml-DOCBparser.html">DOCBparser</a>: old DocBook SGML parser</li><li><a href="libxml-HTMLparser.html">HTMLparser</a>: interface for an HTML 4.0 non-verifying parser</li><li><a href="libxml-HTMLtree.html">HTMLtree</a>: specific APIs to process HTML tree, especially serialization</li><li><a href="libxml-SAX.html">SAX</a>: Old SAX version 1 handler, deprecated</li><li><a href="libxml-SAX2.html">SAX2</a>: SAX2 parser interface used to build the DOM tree</li><li><a href="libxml-c14n.html">c14n</a>: Provide Canonical XML and Exclusive XML Canonicalization</li><li><a href="libxml-catalog.html">catalog</a>: interfaces to the Catalog handling system</li><li><a href="libxml-chvalid.html">chvalid</a>: Unicode character range checking</li><li><a href="libxml-debugXML.html">debugXML</a>: Tree debugging APIs</li><li><a href="libxml-dict.html">dict</a>: string dictionary</li><li><a href="libxml-encoding.html">encoding</a>: interface for the encoding conversion functions</li><li><a href="libxml-entities.html">entities</a>: interface for the XML entities handling</li><li><a href="libxml-globals.html">globals</a>: interface for all global variables of the library</li><li><a href="libxml-hash.html">hash</a>: Chained hash tables</li><li><a href="libxml-list.html">list</a>: lists interfaces</li><li><a href="libxml-nanoftp.html">nanoftp</a>: minimal FTP implementation</li><li><a href="libxml-nanohttp.html">nanohttp</a>: minimal HTTP implementation</li><li><a href="libxml-parser.html">parser</a>: the core parser module</li><li><a href="libxml-parserInternals.html">parserInternals</a>: internals routines and limits exported by the parser.</li><li><a href="libxml-pattern.html">pattern</a>: pattern expression handling</li><li><a href="libxml-relaxng.html">relaxng</a>: implementation of the Relax-NG validation</li><li><a href="libxml-schemasInternals.html">schemasInternals</a>: internal interfaces for XML Schemas</li><li><a href="libxml-schematron.html">schematron</a>: XML Schemastron implementation</li><li><a href="libxml-threads.html">threads</a>: interfaces for thread handling</li><li><a href="libxml-tree.html">tree</a>: interfaces for tree manipulation</li><li><a href="libxml-uri.html">uri</a>: library of generic URI related routines</li><li><a href="libxml-valid.html">valid</a>: The DTD validation</li><li><a href="libxml-xinclude.html">xinclude</a>: implementation of XInclude</li><li><a href="libxml-xlink.html">xlink</a>: unfinished XLink detection module</li><li><a href="libxml-xmlIO.html">xmlIO</a>: interface for the I/O interfaces used by the parser</li><li><a href="libxml-xmlautomata.html">xmlautomata</a>: API to build regexp automata</li><li><a href="libxml-xmlerror.html">xmlerror</a>: error handling</li><li><a href="libxml-xmlexports.html">xmlexports</a>: macros for marking symbols as exportable/importable.</li><li><a href="libxml-xmlmemory.html">xmlmemory</a>: interface for the memory allocator</li><li><a href="libxml-xmlmodule.html">xmlmodule</a>: dynamic module loading</li><li><a href="libxml-xmlreader.html">xmlreader</a>: the XMLReader implementation</li><li><a href="libxml-xmlregexp.html">xmlregexp</a>: regular expressions handling</li><li><a href="libxml-xmlsave.html">xmlsave</a>: the XML document serializer</li><li><a href="libxml-xmlschemas.html">xmlschemas</a>: incomplete XML Schemas structure implementation</li><li><a href="libxml-xmlschemastypes.html">xmlschemastypes</a>: implementation of XML Schema Datatypes</li><li><a href="libxml-xmlstring.html">xmlstring</a>: set of routines to process strings</li><li><a href="libxml-xmlunicode.html">xmlunicode</a>: Unicode character APIs</li><li><a href="libxml-xmlversion.html">xmlversion</a>: compile-time version informations</li><li><a href="libxml-xmlwriter.html">xmlwriter</a>: text writing API for XML</li><li><a href="libxml-xpath.html">xpath</a>: XML Path Language implementation</li><li><a href="libxml-xpathInternals.html">xpathInternals</a>: internal interfaces for XML Path Language implementation</li><li><a href="libxml-xpointer.html">xpointer</a>: API to handle XML Pointers</li></ul><p><a href="../bugs.html">Daniel Veillard</a></p></td></tr></table></td></tr></table></td></tr></table></td></tr></table></td></tr></table></body></html>
diff --git a/doc/html/libxml-parser.html b/doc/html/libxml-parser.html
index 98123f7..4d890c6 100644
--- a/doc/html/libxml-parser.html
+++ b/doc/html/libxml-parser.html
@@ -279,7 +279,7 @@
     <a name="XML_PARSE_SAX1" id="XML_PARSE_SAX1">XML_PARSE_SAX1</a> = 512 : use the SAX1 interface internally
     <a name="XML_PARSE_XINCLUDE" id="XML_PARSE_XINCLUDE">XML_PARSE_XINCLUDE</a> = 1024 : Implement XInclude substitition
     <a name="XML_PARSE_NONET" id="XML_PARSE_NONET">XML_PARSE_NONET</a> = 2048 : Forbid network access
-    <a name="XML_PARSE_NODICT" id="XML_PARSE_NODICT">XML_PARSE_NODICT</a> = 4096 : Do not reuse the context dictionnary
+    <a name="XML_PARSE_NODICT" id="XML_PARSE_NODICT">XML_PARSE_NODICT</a> = 4096 : Do not reuse the context dictionary
     <a name="XML_PARSE_NSCLEAN" id="XML_PARSE_NSCLEAN">XML_PARSE_NSCLEAN</a> = 8192 : remove redundant namespaces declarations
     <a name="XML_PARSE_NOCDATA" id="XML_PARSE_NOCDATA">XML_PARSE_NOCDATA</a> = 16384 : merge CDATA as text nodes
     <a name="XML_PARSE_NOXINCNODE" id="XML_PARSE_NOXINCNODE">XML_PARSE_NOXINCNODE</a> = 32768 : do not generate XINCLUDE START/END nodes
diff --git a/doc/html/libxml-tree.html b/doc/html/libxml-tree.html
index d1d005f..d95872d 100644
--- a/doc/html/libxml-tree.html
+++ b/doc/html/libxml-tree.html
@@ -555,7 +555,7 @@
     void *	catalogs	: document's own catalog
     int	recovery	: run in recovery mode
     int	progressive	: is this a progressive parsing
-    <a href="libxml-dict.html#xmlDictPtr">xmlDictPtr</a>	dict	: dictionnary for the parser
+    <a href="libxml-dict.html#xmlDictPtr">xmlDictPtr</a>	dict	: dictionary for the parser
     const <a href="libxml-xmlstring.html#xmlChar">xmlChar</a> * *	atts	: array for the attributes callbacks
     int	maxatts	: the size of the array
     int	docdict	: * pre-interned strings *
diff --git a/doc/html/libxml-xmlmemory.html b/doc/html/libxml-xmlmemory.html
index d653775..3406e09 100644
--- a/doc/html/libxml-xmlmemory.html
+++ b/doc/html/libxml-xmlmemory.html
@@ -65,7 +65,7 @@
 </pre><p>Initialize the memory layer.</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</td></tr></tbody></table></div><h3><a name="xmlMallocAtomicLoc" id="xmlMallocAtomicLoc"></a>Function: xmlMallocAtomicLoc</h3><pre class="programlisting">void *	xmlMallocAtomicLoc		(size_t size, <br />					 const char * file, <br />					 int line)<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>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><h3><a name="xmlMallocFunc" id="xmlMallocFunc"></a>Function type: xmlMallocFunc</h3><pre class="programlisting">Function type: xmlMallocFunc
+<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><h3><a name="xmlMallocFunc" id="xmlMallocFunc"></a>Function type: xmlMallocFunc</h3><pre class="programlisting">Function type: xmlMallocFunc
 void *	xmlMallocFunc			(size_t size)
 </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><br />
 <h3><a name="xmlMallocLoc" id="xmlMallocLoc"></a>Function: xmlMallocLoc</h3><pre class="programlisting">void *	xmlMallocLoc			(size_t size, <br />					 const char * file, <br />					 int line)<br />
diff --git a/doc/html/libxml-xmlregexp.html b/doc/html/libxml-xmlregexp.html
index 8dda699..564f65e 100644
--- a/doc/html/libxml-xmlregexp.html
+++ b/doc/html/libxml-xmlregexp.html
@@ -101,7 +101,7 @@
 </pre><p>Get the atom associated to this name from that 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 expression context</td></tr><tr><td><span class="term"><i><tt>name</tt></i>:</span></td><td>the atom name</td></tr><tr><td><span class="term"><i><tt>len</tt></i>:</span></td><td>the atom name length in byte (or -1);</td></tr><tr><td><span class="term"><i><tt>Returns</tt></i>:</span></td><td>the node or NULL in case of error</td></tr></tbody></table></div><h3><a name="xmlExpNewCtxt" id="xmlExpNewCtxt"></a>Function: xmlExpNewCtxt</h3><pre class="programlisting"><a href="libxml-xmlregexp.html#xmlExpCtxtPtr">xmlExpCtxtPtr</a>	xmlExpNewCtxt		(int maxNodes, <br />					 <a href="libxml-dict.html#xmlDictPtr">xmlDictPtr</a> dict)<br />
 </pre><p>Creates a new context for manipulating expressions</p>
-<div class="variablelist"><table border="0"><col align="left" /><tbody><tr><td><span class="term"><i><tt>maxNodes</tt></i>:</span></td><td>the maximum number of nodes</td></tr><tr><td><span class="term"><i><tt>dict</tt></i>:</span></td><td>optional dictionnary to use internally</td></tr><tr><td><span class="term"><i><tt>Returns</tt></i>:</span></td><td>the context or NULL in case of error</td></tr></tbody></table></div><h3><a name="xmlExpNewOr" id="xmlExpNewOr"></a>Function: xmlExpNewOr</h3><pre class="programlisting"><a href="libxml-xmlregexp.html#xmlExpNodePtr">xmlExpNodePtr</a>	xmlExpNewOr		(<a href="libxml-xmlregexp.html#xmlExpCtxtPtr">xmlExpCtxtPtr</a> ctxt, <br />					 <a href="libxml-xmlregexp.html#xmlExpNodePtr">xmlExpNodePtr</a> left, <br />					 <a href="libxml-xmlregexp.html#xmlExpNodePtr">xmlExpNodePtr</a> right)<br />
+<div class="variablelist"><table border="0"><col align="left" /><tbody><tr><td><span class="term"><i><tt>maxNodes</tt></i>:</span></td><td>the maximum number of nodes</td></tr><tr><td><span class="term"><i><tt>dict</tt></i>:</span></td><td>optional dictionary to use internally</td></tr><tr><td><span class="term"><i><tt>Returns</tt></i>:</span></td><td>the context or NULL in case of error</td></tr></tbody></table></div><h3><a name="xmlExpNewOr" id="xmlExpNewOr"></a>Function: xmlExpNewOr</h3><pre class="programlisting"><a href="libxml-xmlregexp.html#xmlExpNodePtr">xmlExpNodePtr</a>	xmlExpNewOr		(<a href="libxml-xmlregexp.html#xmlExpCtxtPtr">xmlExpCtxtPtr</a> ctxt, <br />					 <a href="libxml-xmlregexp.html#xmlExpNodePtr">xmlExpNodePtr</a> left, <br />					 <a href="libxml-xmlregexp.html#xmlExpNodePtr">xmlExpNodePtr</a> right)<br />
 </pre><p>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).</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 expression context</td></tr><tr><td><span class="term"><i><tt>left</tt></i>:</span></td><td>left expression</td></tr><tr><td><span class="term"><i><tt>right</tt></i>:</span></td><td>right expression</td></tr><tr><td><span class="term"><i><tt>Returns</tt></i>:</span></td><td>the node or NULL in case of error</td></tr></tbody></table></div><h3><a name="xmlExpNewRange" id="xmlExpNewRange"></a>Function: xmlExpNewRange</h3><pre class="programlisting"><a href="libxml-xmlregexp.html#xmlExpNodePtr">xmlExpNodePtr</a>	xmlExpNewRange		(<a href="libxml-xmlregexp.html#xmlExpCtxtPtr">xmlExpCtxtPtr</a> ctxt, <br />					 <a href="libxml-xmlregexp.html#xmlExpNodePtr">xmlExpNodePtr</a> subset, <br />					 int min, <br />					 int max)<br />
 </pre><p>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).</p>
diff --git a/doc/html/libxml-xmlstring.html b/doc/html/libxml-xmlstring.html
index 4f12cc7..89e9809 100644
--- a/doc/html/libxml-xmlstring.html
+++ b/doc/html/libxml-xmlstring.html
@@ -16,9 +16,9 @@
 <pre class="programlisting">int	<a href="#xmlCheckUTF8">xmlCheckUTF8</a>			(const unsigned char * utf)</pre>
 <pre class="programlisting">int	<a href="#xmlGetUTF8Char">xmlGetUTF8Char</a>			(const unsigned char * utf, <br />					 int * len)</pre>
 <pre class="programlisting">int	<a href="#xmlStrEqual">xmlStrEqual</a>			(const <a href="libxml-xmlstring.html#xmlChar">xmlChar</a> * str1, <br />					 const <a href="libxml-xmlstring.html#xmlChar">xmlChar</a> * str2)</pre>
-<pre class="programlisting">int	<a href="#xmlStrPrintf">xmlStrPrintf</a>			(<a href="libxml-xmlstring.html#xmlChar">xmlChar</a> * buf, <br />					 int len, <br />					 const <a href="libxml-xmlstring.html#xmlChar">xmlChar</a> * msg, <br />					 ... ...)</pre>
+<pre class="programlisting">int	<a href="#xmlStrPrintf">xmlStrPrintf</a>			(<a href="libxml-xmlstring.html#xmlChar">xmlChar</a> * buf, <br />					 int len, <br />					 const char * msg, <br />					 ... ...)</pre>
 <pre class="programlisting">int	<a href="#xmlStrQEqual">xmlStrQEqual</a>			(const <a href="libxml-xmlstring.html#xmlChar">xmlChar</a> * pref, <br />					 const <a href="libxml-xmlstring.html#xmlChar">xmlChar</a> * name, <br />					 const <a href="libxml-xmlstring.html#xmlChar">xmlChar</a> * str)</pre>
-<pre class="programlisting">int	<a href="#xmlStrVPrintf">xmlStrVPrintf</a>			(<a href="libxml-xmlstring.html#xmlChar">xmlChar</a> * buf, <br />					 int len, <br />					 const <a href="libxml-xmlstring.html#xmlChar">xmlChar</a> * msg, <br />					 va_list ap)</pre>
+<pre class="programlisting">int	<a href="#xmlStrVPrintf">xmlStrVPrintf</a>			(<a href="libxml-xmlstring.html#xmlChar">xmlChar</a> * buf, <br />					 int len, <br />					 const char * msg, <br />					 va_list ap)</pre>
 <pre class="programlisting">int	<a href="#xmlStrcasecmp">xmlStrcasecmp</a>			(const <a href="libxml-xmlstring.html#xmlChar">xmlChar</a> * str1, <br />					 const <a href="libxml-xmlstring.html#xmlChar">xmlChar</a> * str2)</pre>
 <pre class="programlisting">const <a href="libxml-xmlstring.html#xmlChar">xmlChar</a> *	<a href="#xmlStrcasestr">xmlStrcasestr</a>		(const <a href="libxml-xmlstring.html#xmlChar">xmlChar</a> * str, <br />					 const <a href="libxml-xmlstring.html#xmlChar">xmlChar</a> * val)</pre>
 <pre class="programlisting"><a href="libxml-xmlstring.html#xmlChar">xmlChar</a> *	<a href="#xmlStrcat">xmlStrcat</a>		(<a href="libxml-xmlstring.html#xmlChar">xmlChar</a> * cur, <br />					 const <a href="libxml-xmlstring.html#xmlChar">xmlChar</a> * add)</pre>
@@ -55,11 +55,11 @@
 </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><h3><a name="xmlStrEqual" id="xmlStrEqual"></a>Function: xmlStrEqual</h3><pre class="programlisting">int	xmlStrEqual			(const <a href="libxml-xmlstring.html#xmlChar">xmlChar</a> * str1, <br />					 const <a href="libxml-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="libxml-xmlstring.html#xmlChar">xmlChar</a> *</td></tr><tr><td><span class="term"><i><tt>str2</tt></i>:</span></td><td>the second <a href="libxml-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><h3><a name="xmlStrPrintf" id="xmlStrPrintf"></a>Function: xmlStrPrintf</h3><pre class="programlisting">int	xmlStrPrintf			(<a href="libxml-xmlstring.html#xmlChar">xmlChar</a> * buf, <br />					 int len, <br />					 const <a href="libxml-xmlstring.html#xmlChar">xmlChar</a> * msg, <br />					 ... ...)<br />
+<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="libxml-xmlstring.html#xmlChar">xmlChar</a> *</td></tr><tr><td><span class="term"><i><tt>str2</tt></i>:</span></td><td>the second <a href="libxml-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><h3><a name="xmlStrPrintf" id="xmlStrPrintf"></a>Function: xmlStrPrintf</h3><pre class="programlisting">int	xmlStrPrintf			(<a href="libxml-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 <a href="libxml-SAX.html#characters">characters</a> written to @buf or -1 if an error occurs.</td></tr></tbody></table></div><h3><a name="xmlStrQEqual" id="xmlStrQEqual"></a>Function: xmlStrQEqual</h3><pre class="programlisting">int	xmlStrQEqual			(const <a href="libxml-xmlstring.html#xmlChar">xmlChar</a> * pref, <br />					 const <a href="libxml-xmlstring.html#xmlChar">xmlChar</a> * name, <br />					 const <a href="libxml-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="libxml-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><h3><a name="xmlStrVPrintf" id="xmlStrVPrintf"></a>Function: xmlStrVPrintf</h3><pre class="programlisting">int	xmlStrVPrintf			(<a href="libxml-xmlstring.html#xmlChar">xmlChar</a> * buf, <br />					 int len, <br />					 const <a href="libxml-xmlstring.html#xmlChar">xmlChar</a> * msg, <br />					 va_list ap)<br />
+<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="libxml-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><h3><a name="xmlStrVPrintf" id="xmlStrVPrintf"></a>Function: xmlStrVPrintf</h3><pre class="programlisting">int	xmlStrVPrintf			(<a href="libxml-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 <a href="libxml-SAX.html#characters">characters</a> written to @buf or -1 if an error occurs.</td></tr></tbody></table></div><h3><a name="xmlStrcasecmp" id="xmlStrcasecmp"></a>Function: xmlStrcasecmp</h3><pre class="programlisting">int	xmlStrcasecmp			(const <a href="libxml-xmlstring.html#xmlChar">xmlChar</a> * str1, <br />					 const <a href="libxml-xmlstring.html#xmlChar">xmlChar</a> * str2)<br />
 </pre><p>a strcasecmp for xmlChar's</p>
diff --git a/doc/index.py b/doc/index.py
index 578f288..1895d84 100755
--- a/doc/index.py
+++ b/doc/index.py
@@ -49,7 +49,7 @@
 libxml2.registerErrorHandler(callback, None)
 
 #
-# The dictionnary of tables required and the SQL command needed
+# The dictionary of tables required and the SQL command needed
 # to create them
 #
 TABLES={
@@ -438,12 +438,12 @@
 	    print """UPDATE wordsArchive SET relevance='%d' where name='%s' and ID='%d'""" % (relevance, name, id)
 	    print sys.exc_type, sys.exc_value
 	    return -1
-	     
+
     return ret
 
 #########################################################################
 #									#
-#                  Word dictionnary and analysis routines		#
+#                  Word dictionary and analysis routines		#
 #									#
 #########################################################################
 
diff --git a/doc/libxml2-api.xml b/doc/libxml2-api.xml
index 5573f0c..a0a0117 100644
--- a/doc/libxml2-api.xml
+++ b/doc/libxml2-api.xml
@@ -367,7 +367,7 @@
      <exports symbol='xmlShell' type='function'/>
     </file>
     <file name='dict'>
-     <summary>string dictionnary</summary>
+     <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'/>
@@ -5142,7 +5142,7 @@
     <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 dictionnary'/>
+    <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'/>
@@ -6410,7 +6410,7 @@
       <field name='catalogs' type='void *' info=' document&apos;s own catalog'/>
       <field name='recovery' type='int' info=' run in recovery mode'/>
       <field name='progressive' type='int' info=' is this a progressive parsing'/>
-      <field name='dict' type='xmlDictPtr' info=' dictionnary for the parser'/>
+      <field name='dict' type='xmlDictPtr' info=' dictionary for the parser'/>
       <field name='atts' type='const xmlChar * *' info=' array for the attributes callbacks'/>
       <field name='maxatts' type='int' info=' the size of the array'/>
       <field name='docdict' type='int' info='* pre-interned strings
@@ -9504,65 +9504,65 @@
     </function>
     <function name='xmlDictCreate' file='dict' module='dict'>
       <info>Create a new dictionary</info>
-      <return type='xmlDictPtr' info='the newly created dictionnary, or NULL if an error occured.'/>
+      <return type='xmlDictPtr' info='the newly created dictionary, or NULL if an error occured.'/>
     </function>
     <function name='xmlDictCreateSub' file='dict' module='dict'>
-      <info>Create a new dictionary, inheriting strings from the read-only dictionnary @sub. On lookup, strings are first searched in the new dictionnary, then in @sub, and if not found are created in the new dictionnary.</info>
-      <return type='xmlDictPtr' info='the newly created dictionnary, or NULL if an error occured.'/>
-      <arg name='sub' type='xmlDictPtr' info='an existing dictionnary'/>
+      <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 occured.'/>
+      <arg name='sub' type='xmlDictPtr' info='an existing dictionary'/>
     </function>
     <function name='xmlDictExists' file='dict' module='dict'>
-      <info>Check if the @name exists in the dictionnary @dict.</info>
+      <info>Check if the @name exists in the dictionary @dict.</info>
       <return type='const xmlChar *' info='the internal copy of the name or NULL if not found.'/>
-      <arg name='dict' type='xmlDictPtr' info='the dictionnary'/>
+      <arg name='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 dictionnary'/>
+      <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 dictionnary'/>
+      <arg name='dict' type='xmlDictPtr' info='the dictionary'/>
     </function>
     <function name='xmlDictLookup' file='dict' module='dict'>
-      <info>Add the @name to the dictionnary @dict if not present.</info>
+      <info>Add the @name to the dictionary @dict if not present.</info>
       <return type='const xmlChar *' info='the internal copy of the name or NULL in case of internal error'/>
-      <arg name='dict' type='xmlDictPtr' info='the dictionnary'/>
+      <arg name='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='xmlDictOwns' file='dict' module='dict'>
       <info>check if a string is owned by the disctionary</info>
       <return type='int' info='1 if true, 0 if false and -1 in case of error -1 in case of error'/>
-      <arg name='dict' type='xmlDictPtr' info='the dictionnary'/>
+      <arg name='dict' type='xmlDictPtr' info='the dictionary'/>
       <arg name='str' type='const xmlChar *' info='the string'/>
     </function>
     <function name='xmlDictQLookup' file='dict' module='dict'>
       <info>Add the QName @prefix:@name to the hash @dict if not present.</info>
       <return type='const xmlChar *' info='the internal copy of the QName or NULL in case of internal error'/>
-      <arg name='dict' type='xmlDictPtr' info='the dictionnary'/>
+      <arg name='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 dictionnary'/>
+      <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 dictionnary'/>
+      <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 dictionnary or -1 in case of error'/>
-      <arg name='dict' type='xmlDictPtr' info='the dictionnary'/>
+      <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='xmlDllMain' file='threads' module='threads'>
       <info></info>
@@ -9827,7 +9827,7 @@
       <info>Creates a new context for manipulating expressions</info>
       <return type='xmlExpCtxtPtr' info='the context or NULL in case of error'/>
       <arg name='maxNodes' type='int' info='the maximum number of nodes'/>
-      <arg name='dict' type='xmlDictPtr' info='optional dictionnary to use internally'/>
+      <arg name='dict' type='xmlDictPtr' info='optional dictionary to use internally'/>
     </function>
     <function name='xmlExpNewOr' file='xmlregexp' module='xmlregexp'>
       <cond>defined(LIBXML_REGEXP_ENABLED) &amp;&amp; defined(LIBXML_EXPR_ENABLED)</cond>
@@ -10985,7 +10985,7 @@
     <function name='xmlMallocAtomicLoc' file='xmlmemory' module='xmlmemory'>
       <info>a malloc() equivalent, with logging of the allocation info.</info>
       <return type='void *' info='a pointer to the allocated area or NULL in case of lack of memory.'/>
-      <arg name='size' type='size_t' info='an int specifying the size in byte to allocate.'/>
+      <arg name='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>
@@ -14487,7 +14487,7 @@
       <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 xmlChar *' info='the message with printf formatting.'/>
+      <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'>
@@ -14502,7 +14502,7 @@
       <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 xmlChar *' info='the message with printf formatting.'/>
+      <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'>
diff --git a/doc/libxml2-refs.xml b/doc/libxml2-refs.xml
index 7158609..6dce37f 100644
--- a/doc/libxml2-refs.xml
+++ b/doc/libxml2-refs.xml
@@ -8406,9 +8406,7 @@
       <ref name='xmlSplitQName2'/>
       <ref name='xmlSplitQName3'/>
       <ref name='xmlStrEqual'/>
-      <ref name='xmlStrPrintf'/>
       <ref name='xmlStrQEqual'/>
-      <ref name='xmlStrVPrintf'/>
       <ref name='xmlStrcasecmp'/>
       <ref name='xmlStrcasestr'/>
       <ref name='xmlStrcat'/>
@@ -21822,38 +21820,6 @@
         <word name='dictionaries'>
           <ref name='XML_MAX_NAME_LENGTH'/>
         </word>
-        <word name='dictionary'>
-          <ref name='XML_MAX_DICTIONARY_LIMIT'/>
-          <ref name='_xmlParserCtxt'/>
-          <ref name='_xmlXPathContext'/>
-          <ref name='xmlDictCleanup'/>
-          <ref name='xmlDictCreate'/>
-          <ref name='xmlDictCreateSub'/>
-          <ref name='xmlDictGetUsage'/>
-          <ref name='xmlDictReference'/>
-          <ref name='xmlDictSetLimit'/>
-          <ref name='xmlHashCreateDict'/>
-          <ref name='xmlInitializeDict'/>
-          <ref name='xmlPatterncompile'/>
-          <ref name='xmlStreamPush'/>
-          <ref name='xmlStreamPushAttr'/>
-          <ref name='xmlStreamPushNode'/>
-        </word>
-        <word name='dictionnary'>
-          <ref name='_xmlParserCtxt'/>
-          <ref name='xmlDictCreate'/>
-          <ref name='xmlDictCreateSub'/>
-          <ref name='xmlDictExists'/>
-          <ref name='xmlDictFree'/>
-          <ref name='xmlDictGetUsage'/>
-          <ref name='xmlDictLookup'/>
-          <ref name='xmlDictOwns'/>
-          <ref name='xmlDictQLookup'/>
-          <ref name='xmlDictReference'/>
-          <ref name='xmlDictSetLimit'/>
-          <ref name='xmlDictSize'/>
-          <ref name='xmlExpNewCtxt'/>
-        </word>
         <word name='did'>
           <ref name='XML_SCHEMAS_TYPE_BLOCK_DEFAULT'/>
           <ref name='xmlTextReaderGetRemainder'/>
@@ -30381,6 +30347,7 @@
         </word>
         <word name='unsigned'>
           <ref name='c'/>
+          <ref name='xmlMallocAtomicLoc'/>
           <ref name='xmlURIUnescapeString'/>
         </word>
         <word name='unsupported'>
diff --git a/doc/libxml2.xsa b/doc/libxml2.xsa
index 0825d53..0d4b8fe 100644
--- a/doc/libxml2.xsa
+++ b/doc/libxml2.xsa
@@ -8,182 +8,73 @@
   </vendor>
   <product id="libxml2">
     <name>libxml2</name>
-    <version>2.9.2</version>
-    <last-release> Oct 16 2014</last-release>
+    <version>v2.9.3</version>
+    <last-release> Nov 20 2015</last-release>
     <info-url>http://xmlsoft.org/</info-url>
     <changes>   - Security:
-  Fix for CVE-2014-3660 billion laugh variant (Daniel Veillard),
-  CVE-2014-0191 Do not fetch external parameter entities (Daniel Veillard)
-  
-   - Bug Fixes:
-  fix memory leak xml header encoding field with XML_PARSE_IGNORE_ENC (Bart De Schuymer),
-  xmlmemory: handle realloc properly (Yegor Yefremov),
-  Python generator bug raised by the const change (Daniel Veillard),
-  Windows Critical sections not released correctly (Daniel Veillard),
-  Parser error on repeated recursive entity expansion containing &amp;lt; (Daniel Veillard),
-  xpointer : fixing Null Pointers (Gaurav Gupta),
-  Remove Unnecessary Null check in xpointer.c (Gaurav Gupta),
-  parser bug on misformed namespace attributes (Dennis Filder),
-  Pointer dereferenced before null check (Daniel Veillard),
-  Leak of struct addrinfo in xmlNanoFTPConnect() (Gaurav Gupta),
-  Possible overflow in HTMLParser.c (Daniel Veillard),
-  python/tests/sync.py assumes Python dictionaries are ordered (John Beck),
-  Fix Enum check and missing break (Gaurav Gupta),
-  xmlIO: Handle error returns from dup() (Philip Withnall),
-  Fix a problem properly saving URIs (Daniel Veillard),
-  wrong error column in structured error when parsing attribute values (Juergen Keil),
-  wrong error column in structured error when skipping whitespace in xml decl (Juergen Keil),
-  no error column in structured error handler for xml schema validation errors (Juergen Keil),
-  Couple of Missing Null checks (Gaurav Gupta),
-  Add couple of missing Null checks (Daniel Veillard),
-  xmlschemastypes: Fix potential array overflow (Philip Withnall),
-  runtest: Fix a memory leak on parse failure (Philip Withnall),
-  xmlIO: Fix an FD leak on gzdopen() failure (Philip Withnall),
-  xmlcatalog: Fix a memory leak on quit (Philip Withnall),
-  HTMLparser: Correctly initialise a stack allocated structure (Philip Withnall),
-  Check for tmon in _xmlSchemaDateAdd() is incorrect (David Kilzer),
-  Avoid Possible Null Pointer in trio.c (Gaurav Gupta),
-  Fix processing in SAX2 in case of an allocation failure (Daniel Veillard),
-  XML Shell command "cd" does not handle "/" at end of path (Daniel Veillard),
-  Fix various Missing Null checks (Gaurav Gupta),
-  Fix a potential NULL dereference (Daniel Veillard),
-  Add a couple of misisng check in xmlRelaxNGCleanupTree (Gaurav Gupta),
-  Add a missing argument check (Gaurav Gupta),
-  Adding a check in case of allocation error (Gaurav Gupta),
-  xmlSaveUri() incorrectly recomposes URIs with rootless paths (Dennis Filder),
-  Adding some missing NULL checks (Gaurav),
-  Fixes for xmlInitParserCtxt (Daniel Veillard),
-  Fix regressions introduced by CVE-2014-0191 patch (Daniel Veillard),
-  erroneously ignores a validation error if no error callback set (Daniel Veillard),
-  xmllint was not parsing the --c14n11 flag (Sérgio Batista),
-  Avoid Possible null pointer dereference in memory debug mode (Gaurav),
-  Avoid Double Null Check (Gaurav),
-  Restore context size and position after XPATH_OP_ARG (Nick Wellnhofer),
-  Fix xmlParseInNodeContext() if node is not element (Daniel Veillard),
-  Avoid a possible NULL pointer dereference (Gaurav),
-  Fix xmlTextWriterWriteElement when a null content is given (Daniel Veillard),
-  Fix an typo 'onrest' in htmlScriptAttributes (Daniel Veillard),
-  fixing a ptotential uninitialized access (Daniel Veillard),
-  Fix an fd leak in an error case (Daniel Veillard),
-  Missing initialization for the catalog module (Daniel Veillard),
-  Handling of XPath function arguments in error case (Nick Wellnhofer),
-  Fix a couple of missing NULL checks (Gaurav),
-  Avoid a possibility of dangling encoding handler (Gaurav),
-  Fix HTML push parser to accept HTML_PARSE_NODEFDTD (Arnold Hendriks),
-  Fix a bug loading some compressed files (Mike Alexander),
-  Fix XPath node comparison bug (Gaurav),
-  Type mismatch in xmlschemas.c (Gaurav),
-  Type mismatch in xmlschemastypes.c (Gaurav),
-  Avoid a deadcode in catalog.c (Daniel Veillard),
-  run close socket on Solaris, same as we do on other platforms (Denis Pauk),
-  Fix pointer dereferenced before null check (Gaurav),
-  Fix a potential NULL dereference in tree code (Daniel Veillard),
-  Fix potential NULL pointer dereferences in regexp code (Gaurav),
-  xmllint --pretty crashed without following numeric argument (Tim Galeckas),
-  Fix XPath expressions of the form '@ns:*' (Nick Wellnhofer),
-  Fix XPath '//' optimization with predicates (Nick Wellnhofer),
-  Clear up a potential NULL dereference (Daniel Veillard),
-  Fix a possible NULL dereference (Gaurav),
-  Avoid crash if allocation fails (Daniel Veillard),
-  Remove occasional leading space in XPath number formatting (Daniel Veillard),
-  Fix handling of mmap errors (Daniel Veillard),
-  Catch malloc error and exit accordingly (Daniel Veillard),
-  missing else in xlink.c (Ami Fischman),
-  Fix a parsing bug on non-ascii element and CR/LF usage (Daniel Veillard),
-  Fix a regression in xmlGetDocCompressMode() (Daniel Veillard),
-  properly quote the namespace uris written out during c14n (Aleksey Sanin),
-  Remove premature XInclude check on URI being relative (Alexey Neyman),
-  Fix missing break on last() function for attributes (dcb),
-  Do not URI escape in server side includes (Romain Bondue),
-  Fix an error in xmlCleanupParser (Alexander Pastukhov)
+  CVE-2015-8242 Buffer overead with HTML parser in push mode (Hugh Davenport),
+  CVE-2015-7500 Fix memory access error due to incorrect entities boundaries (Daniel Veillard),
+  CVE-2015-7499-2 Detect incoherency on GROW (Daniel Veillard),
+  CVE-2015-7499-1 Add xmlHaltParser() to stop the parser (Daniel Veillard),
+  CVE-2015-5312 Another entity expansion issue (David Drysdale),
+  CVE-2015-7497 Avoid an heap buffer overflow in xmlDictComputeFastQKey (David Drysdale),
+  CVE-2015-7498 Avoid processing entities after encoding conversion failures (Daniel Veillard),
+  CVE-2015-8035 Fix XZ compression support loop (Daniel Veillard),
+  CVE-2015-7942-2 Fix an error in previous Conditional section patch (Daniel Veillard),
+  CVE-2015-7942 Another variation of overflow in Conditional sections (Daniel Veillard),
+  CVE-2015-1819 Enforce the reader to run in constant memory (Daniel Veillard)
+  CVE-2015-7941_2 Cleanup conditional section error handling (Daniel Veillard),
+  CVE-2015-7941_1 Stop parsing on entities boundaries errors (Daniel Veillard),
   
    - Documentation:
-  typo in error messages "colon are forbidden from..." (Daniel Veillard),
-  Fix a link to James SAX documentation old page (Daniel Veillard),
-  Fix typos in relaxng.c (Jan Pokorný),
-  Fix a doc typo (Daniel Veillard),
-  Fix typos in {tree,xpath}.c (errror) (Jan Pokorný),
-  Add limitations about encoding conversion (Daniel Veillard),
-  Fix typos in xmlschemas{,types}.c (Jan Pokorný),
-  Fix incorrect spelling entites-&gt;entities (Jan Pokorný),
-  Forgot to document 2.9.1 release, regenerate docs (Daniel Veillard)
+  Correct spelling of "calling" (Alex Henrie),
+  Fix a small error in xmllint --format description (Fabien Degomme),
+  Avoid XSS on the search of xmlsoft.org (Daniel Veillard)
   
    - Portability:
-  AC_CONFIG_FILES and executable bit (Roumen Petrov),
-  remove HAVE_CONFIG_H dependency in testlimits.c (Roumen Petrov),
-  fix some tabs mixing incompatible with python3 (Roumen Petrov),
-  Visual Studio 14 CTP defines snprintf() (Francis Dupont),
-  OS400: do not try to copy unexisting doc files (Patrick Monnerat),
-  OS400: use either configure.ac or configure.in. (Patrick Monnerat),
-  os400: make-src.sh: create physical file with target CCSID (Patrick Monnerat),
-  OS400: Add some more C macros equivalent procedures. (Patrick Monnerat),
-  OS400: use C macros to implement equivalent RPG support procedures. (Patrick Monnerat),
-  OS400: implement XPath macros as procedures for ILE/RPG support. (Patrick Monnerat),
-  OS400: include in distribution tarball. (Patrick Monnerat),
-  OS400: Add README: compilation directives and OS/400 specific stuff. (Patrick Monnerat),
-  OS400: Add compilation scripts. (Patrick Monnerat),
-  OS400: ILE RPG language header files. (Patrick Monnerat),
-  OS400: implement some macros as functions for ILE/RPG language support (that as no macros). (Patrick Monnerat),
-  OS400: UTF8&lt;--&gt;EBCDIC wrappers for system and external library calls (Patrick Monnerat),
-  OS400: Easy character transcoding support (Patrick Monnerat),
-  OS400: iconv functions compatibility wrappers and table builder. (Patrick Monnerat),
-  OS400: create architecture directory. Implement dlfcn emulation. (Patrick Monnerat),
-  Fix building when configuring without xpath and xptr (Daniel Veillard),
-  configure: Add --with-python-install-dir (Jonas Eriksson),
-  Fix compilation with minimum and xinclude. (Nicolas Le Cam),
-  Compile out use of xmlValidateNCName() when not available. (Nicolas Le Cam),
-  Fix compilation with minimum and schematron. (Nicolas Le Cam),
-  Legacy needs xmlSAX2StartElement() and xmlSAX2EndElement(). (Nicolas Le Cam),
-  Don't use xmlValidateName() when not available. (Nicolas Le Cam),
-  Fix a portability issue on Windows (Longstreth Jon),
-  Various portability patches for OpenVMS (Jacob (Jouk) Jansen),
-  Use specific macros for portability to OS/400 (Patrick Monnerat),
-  Add macros needed for OS/400 portability (Patrick Monnerat),
-  Portability patch for fopen on OS/400 (Patrick Monnerat),
-  Portability fixes for OS/400 (Patrick Monnerat),
-  Improve va_list portability (Patrick Monnerat),
-  Portability fix (Patrick Monnerat),
-  Portability fix (Patrick Monnerat),
-  Generic portability fix (Patrick Monnerat),
-  Shortening lines in headers (Patrick Monnerat),
-  build: Use pkg-config to find liblzma in preference to AC_CHECK_LIB (Philip Withnall),
-  build: Add @LZMA_LIBS@ to libxml’s pkg-config files (Philip Withnall),
-  fix some tabs mixing incompatible with python3 (Daniel Veillard),
-  add additional defines checks for support "./configure --with-minimum" (Denis Pauk),
-  Another round of fixes for older versions of Python (Arfrever Frehtes Taifersar Arahesis),
-  python: fix drv_libxml2.py for python3 compatibility (Alexandre Rostovtsev),
-  python: Fix compiler warnings when building python3 bindings (Armin K),
-  Fix for compilation with python 2.6.8 (Petr Sumbera)
+  threads: use forward declarations only for glibc (Michael Heimpold),
+  Update Win32 configure.js to search for configure.ac (Daniel Veillard)
+  
+   - Bug Fixes:
+  Bug on creating new stream from entity (Daniel Veillard),
+  Fix some loop issues embedding NEXT (Daniel Veillard),
+  Do not print error context when there is none (Daniel Veillard),
+  Avoid extra processing of MarkupDecl when EOF (Hugh Davenport),
+  Fix parsing short unclosed comment uninitialized access (Daniel Veillard),
+  Add missing Null check in xmlParseExternalEntityPrivate (Gaurav Gupta),
+  Fix a bug in CData error handling in the push parser (Daniel Veillard),
+  Fix a bug on name parsing at the end of current input buffer (Daniel Veillard),
+  Fix the spurious ID already defined error (Daniel Veillard),
+  Fix previous change to node sort order (Nick Wellnhofer),
+  Fix a self assignment issue raised by clang (Scott Graham),
+  Fail parsing early on if encoding conversion failed (Daniel Veillard),
+  Do not process encoding values if the declaration if broken (Daniel Veillard),
+  Silence clang's -Wunknown-attribute (Michael Catanzaro),
+  xmlMemUsed is not thread-safe (Martin von Gagern),
+  Fix support for except in nameclasses (Daniel Veillard),
+  Fix order of root nodes (Nick Wellnhofer),
+  Allow attributes on descendant-or-self axis (Nick Wellnhofer),
+  Fix the fix to Windows locking (Steve Nairn),
+  Fix timsort invariant loop re: Envisage article (Christopher Swenson),
+  Don't add IDs in xmlSetTreeDoc (Nick Wellnhofer),
+  Account for ID attributes in xmlSetTreeDoc (Nick Wellnhofer),
+  Remove various unused value assignments (Philip Withnall),
+  Fix missing entities after CVE-2014-3660 fix (Daniel Veillard),
+  Revert "Missing initialization for the catalog module" (Daniel Veillard)
   
    - Improvements:
-  win32/libxml2.def.src after rebuild in doc (Roumen Petrov),
-  elfgcchack.h: more legacy needs xmlSAX2StartElement() and xmlSAX2EndElement() (Roumen Petrov),
-  elfgcchack.h: add xmlXPathNodeEval and xmlXPathSetContextNode (Roumen Petrov),
-  Provide cmake module (Samuel Martin),
-  Fix a couple of issues raised by make dist (Daniel Veillard),
-  Fix and add const qualifiers (Kurt Roeckx),
-  Preparing for upcoming release of 2.9.2 (Daniel Veillard),
-  Fix zlib and lzma libraries check via command line (Dmitriy),
-  wrong error column in structured error when parsing end tag (Juergen Keil),
-  doc/news.html: small update to avoid line join while generating NEWS. (Patrick Monnerat),
-  Add methods for python3 iterator (Ron Angeles),
-  Support element node traversal in document fragments. (Kyle VanderBeek),
-  xmlNodeSetName: Allow setting the name to a substring of the currently set name (Tristan Van Berkom),
-  Added macros for argument casts (Eric Zurcher),
-  adding init calls to xml and html Read parsing entry points (Daniel Veillard),
-  Get rid of 'REPLACEMENT CHARACTER' Unicode chars in xmlschemas.c (Jan Pokorný),
-  Implement choice for name classes on attributes (Shaun McCance),
-  Two small namespace tweaks (Daniel Veillard),
-  xmllint --memory should fail on empty files (Daniel Veillard),
-  Cast encoding name to char pointer to match arg type (Nikolay Sivov)
+  Reuse xmlHaltParser() where it makes sense (Daniel Veillard),
+  xmlStopParser reset errNo (Daniel Veillard),
+  Reenable xz support by default (Daniel Veillard),
+  Recover unescaped less-than character in HTML recovery parsing (Daniel Veillard),
+  Allow HTML serializer to output HTML5 DOCTYPE (Shaun McCance),
+  Regression test for bug #695699 (Nick Wellnhofer),
+  Add a couple of XPath tests (Nick Wellnhofer),
+  Add Python 3 rpm subpackage (Tomas Radej),
+  libxml2-config.cmake.in: update include directories (Samuel Martin),
+  Adding example from bugs 738805 to regression tests (Daniel Veillard)
   
    - Cleanups:
-  Removal of old configure.in (Daniel Veillard),
-  Unreachable code in tree.c (Gaurav Gupta),
-  Remove a couple of dead conditions (Gaurav Gupta),
-  Avoid some dead code and cleanup in relaxng.c (Gaurav),
-  Drop not needed checks (Denis Pauk),
-  Fix a wrong test (Daniel Veillard)
   
 
 </changes>
diff --git a/doc/news.html b/doc/news.html
index e76ef55..0c692c8 100644
--- a/doc/news.html
+++ b/doc/news.html
@@ -8,7 +8,97 @@
 H3 {font-family: Verdana,Arial,Helvetica}
 A:link, A:visited, A:active { text-decoration: underline }
 </style><title>Releases</title></head><body bgcolor="#8b7765" text="#000000" link="#a06060" vlink="#000000"><table border="0" width="100%" cellpadding="5" cellspacing="0" align="center"><tr><td width="120"><a href="http://swpat.ffii.org/"><img src="epatents.png" alt="Action against software patents" /></a></td><td width="180"><a href="http://www.gnome.org/"><img src="gnome2.png" alt="Gnome2 Logo" /></a><a href="http://www.w3.org/Status"><img src="w3c.png" alt="W3C Logo" /></a><a href="http://www.redhat.com/"><img src="redhat.gif" alt="Red Hat Logo" /></a><div align="left"><a href="http://xmlsoft.org/"><img src="Libxml2-Logo-180x168.gif" alt="Made with Libxml2 Logo" /></a></div></td><td><table border="0" width="90%" cellpadding="2" cellspacing="0" align="center" bgcolor="#000000"><tr><td><table width="100%" border="0" cellspacing="1" cellpadding="3" bgcolor="#fffacd"><tr><td align="center"><h1>The XML C parser and toolkit of Gnome</h1><h2>Releases</h2></td></tr></table></td></tr></table></td></tr></table><table border="0" cellpadding="4" cellspacing="0" width="100%" align="center"><tr><td bgcolor="#8b7765"><table border="0" cellspacing="0" cellpadding="2" width="100%"><tr><td valign="top" width="200" bgcolor="#8b7765"><table border="0" cellspacing="0" cellpadding="1" width="100%" bgcolor="#000000"><tr><td><table width="100%" border="0" cellspacing="1" cellpadding="3"><tr><td colspan="1" bgcolor="#eecfa1" align="center"><center><b>Main Menu</b></center></td></tr><tr><td bgcolor="#fffacd"><form action="search.php" enctype="application/x-www-form-urlencoded" method="get"><input name="query" type="text" size="20" value="" /><input name="submit" type="submit" value="Search ..." /></form><ul><li><a href="index.html">Home</a></li><li><a href="html/index.html">Reference Manual</a></li><li><a href="intro.html">Introduction</a></li><li><a href="FAQ.html">FAQ</a></li><li><a href="docs.html" style="font-weight:bold">Developer Menu</a></li><li><a href="bugs.html">Reporting bugs and getting help</a></li><li><a href="help.html">How to help</a></li><li><a href="downloads.html">Downloads</a></li><li><a href="news.html">Releases</a></li><li><a href="XMLinfo.html">XML</a></li><li><a href="XSLT.html">XSLT</a></li><li><a href="xmldtd.html">Validation &amp; DTDs</a></li><li><a href="encoding.html">Encodings support</a></li><li><a href="catalog.html">Catalog support</a></li><li><a href="namespaces.html">Namespaces</a></li><li><a href="contribs.html">Contributions</a></li><li><a href="examples/index.html" style="font-weight:bold">Code Examples</a></li><li><a href="html/index.html" style="font-weight:bold">API Menu</a></li><li><a href="guidelines.html">XML Guidelines</a></li><li><a href="ChangeLog.html">Recent Changes</a></li></ul></td></tr></table><table width="100%" border="0" cellspacing="1" cellpadding="3"><tr><td colspan="1" bgcolor="#eecfa1" align="center"><center><b>Related links</b></center></td></tr><tr><td bgcolor="#fffacd"><ul><li><a href="http://mail.gnome.org/archives/xml/">Mail archive</a></li><li><a href="http://xmlsoft.org/XSLT/">XSLT libxslt</a></li><li><a href="http://phd.cs.unibo.it/gdome2/">DOM gdome2</a></li><li><a href="http://www.aleksey.com/xmlsec/">XML-DSig xmlsec</a></li><li><a href="ftp://xmlsoft.org/">FTP</a></li><li><a href="http://www.zlatkovic.com/projects/libxml/">Windows binaries</a></li><li><a href="http://opencsw.org/packages/libxml2">Solaris binaries</a></li><li><a href="http://www.explain.com.au/oss/libxml2xslt.html">MacOsX binaries</a></li><li><a href="http://lxml.de/">lxml Python bindings</a></li><li><a href="http://cpan.uwinnipeg.ca/dist/XML-LibXML">Perl bindings</a></li><li><a href="http://libxmlplusplus.sourceforge.net/">C++ bindings</a></li><li><a href="http://www.zend.com/php5/articles/php5-xmlphp.php#Heading4">PHP bindings</a></li><li><a href="http://sourceforge.net/projects/libxml2-pas/">Pascal bindings</a></li><li><a href="http://libxml.rubyforge.org/">Ruby bindings</a></li><li><a href="http://tclxml.sourceforge.net/">Tcl bindings</a></li><li><a href="http://bugzilla.gnome.org/buglist.cgi?product=libxml2">Bug Tracker</a></li></ul></td></tr></table></td></tr></table></td><td valign="top" bgcolor="#8b7765"><table border="0" cellspacing="0" cellpadding="1" width="100%"><tr><td><table border="0" cellspacing="0" cellpadding="1" width="100%" bgcolor="#000000"><tr><td><table border="0" cellpadding="3" cellspacing="1" width="100%"><tr><td bgcolor="#fffacd"><p>The <a href="ChangeLog.html">change log</a> describes the recents commits
-to the <a href="http://git.gnome.org/browse/libxml2/">GIT</a> code base.</p><p>Here is the list of public releases:</p><h3>v2.9.3: Nov 20 2015</h3><ul>
+to the <a href="http://git.gnome.org/browse/libxml2/">GIT</a> code base.</p><p>Here is the list of public releases:</p><h3>2.9.4: May 23 2016</h3><ul>
+  <li>Security:<br />
+  More format string warnings with possible format string vulnerability (David Kilzer),<br />
+  Avoid building recursive entities (Daniel Veillard),<br />
+  Heap-based buffer overread in htmlCurrentChar (Pranjal Jumde),<br />
+  Heap-based buffer-underreads due to xmlParseName (David Kilzer),<br />
+  Heap use-after-free in xmlSAX2AttributeNs (Pranjal Jumde),<br />
+  Heap use-after-free in htmlParsePubidLiteral and htmlParseSystemiteral (Pranjal Jumde),<br />
+  Fix some format string warnings with possible format string vulnerability (David Kilzer),<br />
+  Detect change of encoding when parsing HTML names (Hugh Davenport),<br />
+  Fix inappropriate fetch of entities content (Daniel Veillard),<br />
+  Bug 759398: Heap use-after-free in xmlDictComputeFastKey &lt;https://bugzilla.gnome.org/show_bug.cgi?id=759398&gt; (Pranjal Jumde),<br />
+  Bug 758605: Heap-based buffer overread in xmlDictAddString &lt;https://bugzilla.gnome.org/show_bug.cgi?id=758605&gt; (Pranjal Jumde),<br />
+  Bug 758588: Heap-based buffer overread in xmlParserPrintFileContextInternal &lt;https://bugzilla.gnome.org/show_bug.cgi?id=758588&gt; (David Kilzer),<br />
+  Bug 757711: heap-buffer-overflow in xmlFAParsePosCharGroup &lt;https://bugzilla.gnome.org/show_bug.cgi?id=757711&gt; (Pranjal Jumde),<br />
+  Add missing increments of recursion depth counter to XML parser. (Peter Simons)<br />
+  </li>
+
+  <li>Documentation:<br />
+  Fix typo: s{ ec -&gt; cr }cipt (Jan Pokorný),<br />
+  Fix typos: dictio{ nn -&gt; n }ar{y,ies} (Jan Pokorný),<br />
+  Fix typos: PATH_{ SEAPARATOR -&gt; SEPARATOR } (Jan Pokorný),<br />
+  Correct a typo. (Shlomi Fish)<br />
+  </li>
+
+  <li>Portability:<br />
+  Correct the usage of LDFLAGS (Mattias Hansson),<br />
+  Revert the use of SAVE_LDFLAGS in configure.ac (Mattias Hansson),<br />
+  libxml2 hardcodes -L/lib in zlib/lzma tests which breaks cross-compiles (Mike Frysinger),<br />
+  Fix apibuild for a recently added construct (Daniel Veillard),<br />
+  Use pkg-config to locate zlib when possible (Stewart Brodie),<br />
+  Use pkg-config to locate ICU when possible (Stewart Brodie),<br />
+  Portability to non C99 compliant compilers (Patrick Monnerat),<br />
+  dict.h: Move xmlDictPtr definition before includes to allow direct inclusion. (Patrick Monnerat),<br />
+  os400: tell about xmllint and xmlcatalog in README400. (Patrick Monnerat),<br />
+  os400: properly process SGML add in XMLCATALOG command. (Patrick Monnerat),<br />
+  os400: implement CL command XMLCATALOG. (Patrick Monnerat),<br />
+  os400: compile and install program xmlcatalog (qshell-only). (Patrick Monnerat),<br />
+  os400: expand tabs in sources, strip trailing blanks. (Patrick Monnerat),<br />
+  os400: implement CL command XMLLINT. (Patrick Monnerat),<br />
+  os400: compile and install program xmllint (qshell-only). (Patrick Monnerat),<br />
+  os400: initscript make_module(): Use options instead of positional parameters. (Patrick Monnerat),<br />
+  os400: c14n.rpgle: allow *omit for nullable reference parameters. (Patrick Monnerat),<br />
+  os400: use like() for double type. (Patrick Monnerat),<br />
+  os400: use like() for int type. (Patrick Monnerat),<br />
+  os400: use like() for unsigned int type. (Patrick Monnerat),<br />
+  os400: use like() for enum types. (Patrick Monnerat),<br />
+  Add xz to xml2-config --libs output (Baruch Siach),<br />
+  Bug 760190: configure.ac should be able to build --with-icu without icu-config tool &lt;https://bugzilla.gnome.org/show_bug.cgi?id=760190&gt; (David Kilzer),<br />
+  win32\VC10\config.h and VS 2015 (Bruce Dawson),<br />
+  Add configure maintainer mode (orzen)<br />
+  </li>
+
+  <li>Bug Fixes:<br />
+  Avoid an out of bound access when serializing malformed strings (Daniel Veillard),<br />
+  Unsigned addition may overflow in xmlMallocAtomicLoc() (David Kilzer),<br />
+  Integer signed/unsigned type mismatch in xmlParserInputGrow() (David Kilzer),<br />
+  Bug 763071: heap-buffer-overflow in xmlStrncat &lt;https://bugzilla.gnome.org/show_bug.cgi?id=763071&gt; (Pranjal Jumde),<br />
+  Integer overflow parsing port number in URI (Michael Paddon),<br />
+  Fix an error with regexp on nullable counted char transition (Daniel Veillard),<br />
+  Fix memory leak with XPath namespace nodes (Nick Wellnhofer),<br />
+  Fix namespace axis traversal (Nick Wellnhofer),<br />
+      Fix null pointer deref in docs with no root element (Hugh Davenport),<br />
+  Fix XSD validation of URIs with ampersands (Alex Henrie),<br />
+  xmlschemastypes.c: accept endOfDayFrag Times set to "24:00:00" mean "end of day" and should not cause an error. (Patrick Monnerat),<br />
+  xmlcatalog: flush stdout before interactive shell input. (Patrick Monnerat),<br />
+  xmllint: flush stdout before interactive shell input. (Patrick Monnerat),<br />
+  Don't recurse into OP_VALUEs in xmlXPathOptimizeExpression (Nick Wellnhofer),<br />
+  Fix namespace::node() XPath expression (Nick Wellnhofer),<br />
+  Fix OOB write in xmlXPathEmptyNodeSet (Nick Wellnhofer),<br />
+  Fix parsing of NCNames in XPath (Nick Wellnhofer),<br />
+  Fix OOB read with invalid UTF-8 in xmlUTF8Strsize (Nick Wellnhofer),<br />
+  Do normalize string-based datatype value in RelaxNG facet checking (Audric Schiltknecht),<br />
+  Bug 760921: REGRESSION (8eb55d78): doc/examples/io1 test fails after fix for "xmlSaveUri() incorrectly recomposes URIs with rootless paths" &lt;https://bugzilla.gnome.org/show_bug.cgi?id=760921&gt; (David Kilzer),<br />
+  Bug 760861: REGRESSION (bf9c1dad): Missing results for test/schemas/regexp-char-ref_[01].xsd &lt;https://bugzilla.gnome.org/show_bug.cgi?id=760861&gt; (David Kilzer),<br />
+  error.c: *input-&gt;cur == 0 does not mean no error (Pavel Raiskup),<br />
+  Add missing RNG test files (David Kilzer),<br />
+  Bug 760183: REGRESSION (v2.9.3): XML push parser fails with bogus UTF-8 encoding error when multi-byte character in large CDATA section is split across buffer &lt;https://bugzilla.gnome.org/show_bug.cgi?id=760183&gt; (David Kilzer),<br />
+  Bug 758572: ASAN crash in make check &lt;https://bugzilla.gnome.org/show_bug.cgi?id=758572&gt; (David Kilzer),<br />
+  Bug 721158: Missing ICU string when doing --version on xmllint &lt;https://bugzilla.gnome.org/show_bug.cgi?id=721158&gt; (David Kilzer),<br />
+  python 3: libxml2.c wrappers create Unicode str already (Michael Stahl),<br />
+  Add autogen.sh to distrib (orzen),<br />
+  Heap-based buffer overread in xmlNextChar (Daniel Veillard)<br />
+  </li>
+
+  <li>Improvements:<br />
+  Add more debugging info to runtest (Daniel Veillard),<br />
+  Implement "runtest -u" mode (David Kilzer),<br />
+  Add a make rule to rebuild for ASAN (Daniel Veillard)<br />
+  </li>
+</ul><h3>v2.9.3: Nov 20 2015</h3><ul>
   <li>Security:<br />
   CVE-2015-8242 Buffer overead with HTML parser in push mode (Hugh Davenport),<br />
   CVE-2015-7500 Fix memory access error due to incorrect entities boundaries (Daniel Veillard),<br />
diff --git a/doc/xml.html b/doc/xml.html
index 51dca8c..d035934 100644
--- a/doc/xml.html
+++ b/doc/xml.html
@@ -709,6 +709,98 @@
 
 <p>Here is the list of public releases:</p>
 
+<h3>2.9.4: May 23 2016</h3>
+<ul>
+  <li>Security:<br/>
+  More format string warnings with possible format string vulnerability (David Kilzer),<br/>
+  Avoid building recursive entities (Daniel Veillard),<br/>
+  Heap-based buffer overread in htmlCurrentChar (Pranjal Jumde),<br/>
+  Heap-based buffer-underreads due to xmlParseName (David Kilzer),<br/>
+  Heap use-after-free in xmlSAX2AttributeNs (Pranjal Jumde),<br/>
+  Heap use-after-free in htmlParsePubidLiteral and htmlParseSystemiteral (Pranjal Jumde),<br/>
+  Fix some format string warnings with possible format string vulnerability (David Kilzer),<br/>
+  Detect change of encoding when parsing HTML names (Hugh Davenport),<br/>
+  Fix inappropriate fetch of entities content (Daniel Veillard),<br/>
+  Bug 759398: Heap use-after-free in xmlDictComputeFastKey &lt;https://bugzilla.gnome.org/show_bug.cgi?id=759398&gt; (Pranjal Jumde),<br/>
+  Bug 758605: Heap-based buffer overread in xmlDictAddString &lt;https://bugzilla.gnome.org/show_bug.cgi?id=758605&gt; (Pranjal Jumde),<br/>
+  Bug 758588: Heap-based buffer overread in xmlParserPrintFileContextInternal &lt;https://bugzilla.gnome.org/show_bug.cgi?id=758588&gt; (David Kilzer),<br/>
+  Bug 757711: heap-buffer-overflow in xmlFAParsePosCharGroup &lt;https://bugzilla.gnome.org/show_bug.cgi?id=757711&gt; (Pranjal Jumde),<br/>
+  Add missing increments of recursion depth counter to XML parser. (Peter Simons)<br/>
+  </li>
+
+  <li>Documentation:<br/>
+  Fix typo: s{ ec -&gt; cr }cipt (Jan Pokorný),<br/>
+  Fix typos: dictio{ nn -&gt; n }ar{y,ies} (Jan Pokorný),<br/>
+  Fix typos: PATH_{ SEAPARATOR -&gt; SEPARATOR } (Jan Pokorný),<br/>
+  Correct a typo. (Shlomi Fish)<br/>
+  </li>
+
+  <li>Portability:<br/>
+  Correct the usage of LDFLAGS (Mattias Hansson),<br/>
+  Revert the use of SAVE_LDFLAGS in configure.ac (Mattias Hansson),<br/>
+  libxml2 hardcodes -L/lib in zlib/lzma tests which breaks cross-compiles (Mike Frysinger),<br/>
+  Fix apibuild for a recently added construct (Daniel Veillard),<br/>
+  Use pkg-config to locate zlib when possible (Stewart Brodie),<br/>
+  Use pkg-config to locate ICU when possible (Stewart Brodie),<br/>
+  Portability to non C99 compliant compilers (Patrick Monnerat),<br/>
+  dict.h: Move xmlDictPtr definition before includes to allow direct inclusion. (Patrick Monnerat),<br/>
+  os400: tell about xmllint and xmlcatalog in README400. (Patrick Monnerat),<br/>
+  os400: properly process SGML add in XMLCATALOG command. (Patrick Monnerat),<br/>
+  os400: implement CL command XMLCATALOG. (Patrick Monnerat),<br/>
+  os400: compile and install program xmlcatalog (qshell-only). (Patrick Monnerat),<br/>
+  os400: expand tabs in sources, strip trailing blanks. (Patrick Monnerat),<br/>
+  os400: implement CL command XMLLINT. (Patrick Monnerat),<br/>
+  os400: compile and install program xmllint (qshell-only). (Patrick Monnerat),<br/>
+  os400: initscript make_module(): Use options instead of positional parameters. (Patrick Monnerat),<br/>
+  os400: c14n.rpgle: allow *omit for nullable reference parameters. (Patrick Monnerat),<br/>
+  os400: use like() for double type. (Patrick Monnerat),<br/>
+  os400: use like() for int type. (Patrick Monnerat),<br/>
+  os400: use like() for unsigned int type. (Patrick Monnerat),<br/>
+  os400: use like() for enum types. (Patrick Monnerat),<br/>
+  Add xz to xml2-config --libs output (Baruch Siach),<br/>
+  Bug 760190: configure.ac should be able to build --with-icu without icu-config tool &lt;https://bugzilla.gnome.org/show_bug.cgi?id=760190&gt; (David Kilzer),<br/>
+  win32\VC10\config.h and VS 2015 (Bruce Dawson),<br/>
+  Add configure maintainer mode (orzen)<br/>
+  </li>
+
+  <li>Bug Fixes:<br/>
+  Avoid an out of bound access when serializing malformed strings (Daniel Veillard),<br/>
+  Unsigned addition may overflow in xmlMallocAtomicLoc() (David Kilzer),<br/>
+  Integer signed/unsigned type mismatch in xmlParserInputGrow() (David Kilzer),<br/>
+  Bug 763071: heap-buffer-overflow in xmlStrncat &lt;https://bugzilla.gnome.org/show_bug.cgi?id=763071&gt; (Pranjal Jumde),<br/>
+  Integer overflow parsing port number in URI (Michael Paddon),<br/>
+  Fix an error with regexp on nullable counted char transition (Daniel Veillard),<br/>
+  Fix memory leak with XPath namespace nodes (Nick Wellnhofer),<br/>
+  Fix namespace axis traversal (Nick Wellnhofer),<br/>
+      Fix null pointer deref in docs with no root element (Hugh Davenport),<br/>
+  Fix XSD validation of URIs with ampersands (Alex Henrie),<br/>
+  xmlschemastypes.c: accept endOfDayFrag Times set to "24:00:00" mean "end of day" and should not cause an error. (Patrick Monnerat),<br/>
+  xmlcatalog: flush stdout before interactive shell input. (Patrick Monnerat),<br/>
+  xmllint: flush stdout before interactive shell input. (Patrick Monnerat),<br/>
+  Don't recurse into OP_VALUEs in xmlXPathOptimizeExpression (Nick Wellnhofer),<br/>
+  Fix namespace::node() XPath expression (Nick Wellnhofer),<br/>
+  Fix OOB write in xmlXPathEmptyNodeSet (Nick Wellnhofer),<br/>
+  Fix parsing of NCNames in XPath (Nick Wellnhofer),<br/>
+  Fix OOB read with invalid UTF-8 in xmlUTF8Strsize (Nick Wellnhofer),<br/>
+  Do normalize string-based datatype value in RelaxNG facet checking (Audric Schiltknecht),<br/>
+  Bug 760921: REGRESSION (8eb55d78): doc/examples/io1 test fails after fix for "xmlSaveUri() incorrectly recomposes URIs with rootless paths" &lt;https://bugzilla.gnome.org/show_bug.cgi?id=760921&gt; (David Kilzer),<br/>
+  Bug 760861: REGRESSION (bf9c1dad): Missing results for test/schemas/regexp-char-ref_[01].xsd &lt;https://bugzilla.gnome.org/show_bug.cgi?id=760861&gt; (David Kilzer),<br/>
+  error.c: *input-&gt;cur == 0 does not mean no error (Pavel Raiskup),<br/>
+  Add missing RNG test files (David Kilzer),<br/>
+  Bug 760183: REGRESSION (v2.9.3): XML push parser fails with bogus UTF-8 encoding error when multi-byte character in large CDATA section is split across buffer &lt;https://bugzilla.gnome.org/show_bug.cgi?id=760183&gt; (David Kilzer),<br/>
+  Bug 758572: ASAN crash in make check &lt;https://bugzilla.gnome.org/show_bug.cgi?id=758572&gt; (David Kilzer),<br/>
+  Bug 721158: Missing ICU string when doing --version on xmllint &lt;https://bugzilla.gnome.org/show_bug.cgi?id=721158&gt; (David Kilzer),<br/>
+  python 3: libxml2.c wrappers create Unicode str already (Michael Stahl),<br/>
+  Add autogen.sh to distrib (orzen),<br/>
+  Heap-based buffer overread in xmlNextChar (Daniel Veillard)<br/>
+  </li>
+
+  <li>Improvements:<br/>
+  Add more debugging info to runtest (Daniel Veillard),<br/>
+  Implement "runtest -u" mode (David Kilzer),<br/>
+  Add a make rule to rebuild for ASAN (Daniel Veillard)<br/>
+  </li>
+</ul>
 <h3>v2.9.3: Nov 20 2015</h3>
 <ul>
   <li>Security:<br/>
diff --git a/encoding.c b/encoding.c
index 574e1ae..e49c7f8 100644
--- a/encoding.c
+++ b/encoding.c
@@ -93,7 +93,7 @@
  *
  * n encoding error
  */
-static void
+static void LIBXML_ATTR_FORMAT(2,0)
 xmlEncodingErr(xmlParserErrors error, const char *msg, const char *val)
 {
     __xmlRaiseError(NULL, NULL, NULL, NULL, NULL,
diff --git a/entities.c b/entities.c
index a72afb3..64808ff 100644
--- a/entities.c
+++ b/entities.c
@@ -83,7 +83,7 @@
  *
  * Handle an out of memory condition
  */
-static void
+static void LIBXML_ATTR_FORMAT(2,0)
 xmlEntitiesErr(xmlParserErrors code, const char *msg)
 {
     __xmlSimpleError(XML_FROM_TREE, code, NULL, msg, NULL);
diff --git a/error.c b/error.c
index 9c45040..9606f13 100644
--- a/error.c
+++ b/error.c
@@ -18,7 +18,7 @@
 
 void XMLCDECL xmlGenericErrorDefaultFunc	(void *ctx ATTRIBUTE_UNUSED,
 				 const char *msg,
-				 ...);
+				 ...) LIBXML_ATTR_FORMAT(2,3);
 
 #define XML_GET_VAR_STR(msg, str) {				\
     int       size, prev_size = -1;				\
@@ -177,8 +177,8 @@
     xmlChar  content[81]; /* space for 80 chars + line terminator */
     xmlChar *ctnt;
 
-    if ((input == NULL) || (input->cur == NULL) ||
-        (*input->cur == 0)) return;
+    if ((input == NULL) || (input->cur == NULL))
+        return;
 
     cur = input->cur;
     base = input->base;
diff --git a/include/libxml/dict.h b/include/libxml/dict.h
index 7022ec8..b83db59 100644
--- a/include/libxml/dict.h
+++ b/include/libxml/dict.h
@@ -1,5 +1,5 @@
 /*
- * Summary: string dictionnary
+ * Summary: string dictionary
  * Description: dictionary of reusable strings, just used to avoid allocation
  *         and freeing operations.
  *
@@ -11,6 +11,18 @@
 #ifndef __XML_DICT_H__
 #define __XML_DICT_H__
 
+#ifdef __cplusplus
+#define __XML_EXTERNC	extern "C"
+#else
+#define __XML_EXTERNC
+#endif
+
+/*
+ * The dictionary.
+ */
+__XML_EXTERNC typedef struct _xmlDict xmlDict;
+__XML_EXTERNC typedef xmlDict *xmlDictPtr;
+
 #include <limits.h>
 #include <libxml/xmlversion.h>
 #include <libxml/tree.h>
@@ -20,12 +32,6 @@
 #endif
 
 /*
- * The dictionnary.
- */
-typedef struct _xmlDict xmlDict;
-typedef xmlDict *xmlDictPtr;
-
-/*
  * Initializer
  */
 XMLPUBFUN int XMLCALL  xmlInitializeDict(void);
@@ -48,7 +54,7 @@
 			xmlDictFree	(xmlDictPtr dict);
 
 /*
- * Lookup of entry in the dictionnary.
+ * Lookup of entry in the dictionary.
  */
 XMLPUBFUN const xmlChar * XMLCALL
 			xmlDictLookup	(xmlDictPtr dict,
diff --git a/include/libxml/parser.h b/include/libxml/parser.h
index 3f5730d..47fbec0 100644
--- a/include/libxml/parser.h
+++ b/include/libxml/parser.h
@@ -260,7 +260,7 @@
     void              *catalogs;      /* document's own catalog */
     int                recovery;      /* run in recovery mode */
     int                progressive;   /* is this a progressive parsing */
-    xmlDictPtr         dict;          /* dictionnary for the parser */
+    xmlDictPtr         dict;          /* dictionary for the parser */
     const xmlChar *   *atts;          /* array for the attributes callbacks */
     int                maxatts;       /* the size of the array */
     int                docdict;       /* use strings from dict to build tree */
@@ -1099,7 +1099,7 @@
     XML_PARSE_SAX1	= 1<<9,	/* use the SAX1 interface internally */
     XML_PARSE_XINCLUDE	= 1<<10,/* Implement XInclude substitition  */
     XML_PARSE_NONET	= 1<<11,/* Forbid network access */
-    XML_PARSE_NODICT	= 1<<12,/* Do not reuse the context dictionnary */
+    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 */
diff --git a/include/libxml/parserInternals.h b/include/libxml/parserInternals.h
index 6065320..f30fc68 100644
--- a/include/libxml/parserInternals.h
+++ b/include/libxml/parserInternals.h
@@ -351,7 +351,7 @@
 						 xmlParserErrors xmlerr,
 						 const char *msg,
 						 const xmlChar * str1,
-						 const xmlChar * str2);
+						 const xmlChar * str2) LIBXML_ATTR_FORMAT(3,0);
 #endif
 
 /**
diff --git a/include/libxml/schemasInternals.h b/include/libxml/schemasInternals.h
index 4f0ca9a..c7cf552 100644
--- a/include/libxml/schemasInternals.h
+++ b/include/libxml/schemasInternals.h
@@ -28,52 +28,52 @@
 
 typedef enum {
     XML_SCHEMAS_UNKNOWN = 0,
-    XML_SCHEMAS_STRING,
-    XML_SCHEMAS_NORMSTRING,
-    XML_SCHEMAS_DECIMAL,
-    XML_SCHEMAS_TIME,
-    XML_SCHEMAS_GDAY,
-    XML_SCHEMAS_GMONTH,
-    XML_SCHEMAS_GMONTHDAY,
-    XML_SCHEMAS_GYEAR,
-    XML_SCHEMAS_GYEARMONTH,
-    XML_SCHEMAS_DATE,
-    XML_SCHEMAS_DATETIME,
-    XML_SCHEMAS_DURATION,
-    XML_SCHEMAS_FLOAT,
-    XML_SCHEMAS_DOUBLE,
-    XML_SCHEMAS_BOOLEAN,
-    XML_SCHEMAS_TOKEN,
-    XML_SCHEMAS_LANGUAGE,
-    XML_SCHEMAS_NMTOKEN,
-    XML_SCHEMAS_NMTOKENS,
-    XML_SCHEMAS_NAME,
-    XML_SCHEMAS_QNAME,
-    XML_SCHEMAS_NCNAME,
-    XML_SCHEMAS_ID,
-    XML_SCHEMAS_IDREF,
-    XML_SCHEMAS_IDREFS,
-    XML_SCHEMAS_ENTITY,
-    XML_SCHEMAS_ENTITIES,
-    XML_SCHEMAS_NOTATION,
-    XML_SCHEMAS_ANYURI,
-    XML_SCHEMAS_INTEGER,
-    XML_SCHEMAS_NPINTEGER,
-    XML_SCHEMAS_NINTEGER,
-    XML_SCHEMAS_NNINTEGER,
-    XML_SCHEMAS_PINTEGER,
-    XML_SCHEMAS_INT,
-    XML_SCHEMAS_UINT,
-    XML_SCHEMAS_LONG,
-    XML_SCHEMAS_ULONG,
-    XML_SCHEMAS_SHORT,
-    XML_SCHEMAS_USHORT,
-    XML_SCHEMAS_BYTE,
-    XML_SCHEMAS_UBYTE,
-    XML_SCHEMAS_HEXBINARY,
-    XML_SCHEMAS_BASE64BINARY,
-    XML_SCHEMAS_ANYTYPE,
-    XML_SCHEMAS_ANYSIMPLETYPE
+    XML_SCHEMAS_STRING = 1,
+    XML_SCHEMAS_NORMSTRING = 2,
+    XML_SCHEMAS_DECIMAL = 3,
+    XML_SCHEMAS_TIME = 4,
+    XML_SCHEMAS_GDAY = 5,
+    XML_SCHEMAS_GMONTH = 6,
+    XML_SCHEMAS_GMONTHDAY = 7,
+    XML_SCHEMAS_GYEAR = 8,
+    XML_SCHEMAS_GYEARMONTH = 9,
+    XML_SCHEMAS_DATE = 10,
+    XML_SCHEMAS_DATETIME = 11,
+    XML_SCHEMAS_DURATION = 12,
+    XML_SCHEMAS_FLOAT = 13,
+    XML_SCHEMAS_DOUBLE = 14,
+    XML_SCHEMAS_BOOLEAN = 15,
+    XML_SCHEMAS_TOKEN = 16,
+    XML_SCHEMAS_LANGUAGE = 17,
+    XML_SCHEMAS_NMTOKEN = 18,
+    XML_SCHEMAS_NMTOKENS = 19,
+    XML_SCHEMAS_NAME = 20,
+    XML_SCHEMAS_QNAME = 21,
+    XML_SCHEMAS_NCNAME = 22,
+    XML_SCHEMAS_ID = 23,
+    XML_SCHEMAS_IDREF = 24,
+    XML_SCHEMAS_IDREFS = 25,
+    XML_SCHEMAS_ENTITY = 26,
+    XML_SCHEMAS_ENTITIES = 27,
+    XML_SCHEMAS_NOTATION = 28,
+    XML_SCHEMAS_ANYURI = 29,
+    XML_SCHEMAS_INTEGER = 30,
+    XML_SCHEMAS_NPINTEGER = 31,
+    XML_SCHEMAS_NINTEGER = 32,
+    XML_SCHEMAS_NNINTEGER = 33,
+    XML_SCHEMAS_PINTEGER = 34,
+    XML_SCHEMAS_INT = 35,
+    XML_SCHEMAS_UINT = 36,
+    XML_SCHEMAS_LONG = 37,
+    XML_SCHEMAS_ULONG = 38,
+    XML_SCHEMAS_SHORT = 39,
+    XML_SCHEMAS_USHORT = 40,
+    XML_SCHEMAS_BYTE = 41,
+    XML_SCHEMAS_UBYTE = 42,
+    XML_SCHEMAS_HEXBINARY = 43,
+    XML_SCHEMAS_BASE64BINARY = 44,
+    XML_SCHEMAS_ANYTYPE = 45,
+    XML_SCHEMAS_ANYSIMPLETYPE = 46
 } xmlSchemaValType;
 
 /*
diff --git a/include/libxml/xmlerror.h b/include/libxml/xmlerror.h
index 43e68ca..037c16d 100644
--- a/include/libxml/xmlerror.h
+++ b/include/libxml/xmlerror.h
@@ -937,7 +937,7 @@
 				 int code,
 				 xmlNodePtr node,
 				 const char *msg,
-				 const char *extra);
+				 const char *extra) LIBXML_ATTR_FORMAT(4,0);
 #endif
 #ifdef __cplusplus
 }
diff --git a/include/libxml/xmlstring.h b/include/libxml/xmlstring.h
index 2036236..2d0b2d1 100644
--- a/include/libxml/xmlstring.h
+++ b/include/libxml/xmlstring.h
@@ -97,13 +97,13 @@
 XMLPUBFUN int XMLCALL
                 xmlStrPrintf             (xmlChar *buf,
                                          int len,
-                                         const xmlChar *msg,
-                                         ...);
+                                         const char *msg,
+                                         ...) LIBXML_ATTR_FORMAT(3,4);
 XMLPUBFUN int XMLCALL
                 xmlStrVPrintf                (xmlChar *buf,
                                          int len,
-                                         const xmlChar *msg,
-                                         va_list ap);
+                                         const char *msg,
+                                         va_list ap) LIBXML_ATTR_FORMAT(3,0);
 
 XMLPUBFUN int XMLCALL
         xmlGetUTF8Char                   (const unsigned char *utf,
diff --git a/include/libxml/xpathInternals.h b/include/libxml/xpathInternals.h
index 70c9db9..76a6b48 100644
--- a/include/libxml/xpathInternals.h
+++ b/include/libxml/xpathInternals.h
@@ -229,7 +229,7 @@
  * Empties a node-set.
  */
 #define xmlXPathEmptyNodeSet(ns)					\
-    { while ((ns)->nodeNr > 0) (ns)->nodeTab[(ns)->nodeNr--] = NULL; }
+    { while ((ns)->nodeNr > 0) (ns)->nodeTab[--(ns)->nodeNr] = NULL; }
 
 /**
  * CHECK_ERROR:
diff --git a/libxml.h b/libxml.h
index 2da9044..88e515f 100644
--- a/libxml.h
+++ b/libxml.h
@@ -9,6 +9,8 @@
 #ifndef __XML_LIBXML_H__
 #define __XML_LIBXML_H__
 
+#include <libxml/xmlstring.h>
+
 #ifndef NO_LARGEFILE_SOURCE
 #ifndef _LARGEFILE_SOURCE
 #define _LARGEFILE_SOURCE
@@ -68,7 +70,7 @@
  * internal error reporting routines, shared but not partof the API.
  */
 void __xmlIOErr(int domain, int code, const char *extra);
-void __xmlLoaderErr(void *ctx, const char *msg, const char *filename);
+void __xmlLoaderErr(void *ctx, const char *msg, const char *filename) LIBXML_ATTR_FORMAT(2,0);
 #ifdef LIBXML_HTML_ENABLED
 /*
  * internal function of HTML parser needed for xmlParseInNodeContext
@@ -93,6 +95,7 @@
 int __xmlRandom(void);
 #endif
 
+XMLPUBFUN xmlChar * XMLCALL xmlEscapeFormatString(xmlChar **msg);
 int xmlNop(void);
 
 #ifdef IN_LIBXML
diff --git a/optim/hash_dict.txt b/optim/hash_dict.txt
index f655deb..a447b7e 100644
--- a/optim/hash_dict.txt
+++ b/optim/hash_dict.txt
@@ -1,4 +1,4 @@
-Reuses a dictionnary for the hash table to reduce the string compare
+Reuses a dictionary for the hash table to reduce the string compare
 costs. Not worth it unless validating big DTDs
 
 		without		with
diff --git a/os400/README400 b/os400/README400
index 6c16de9..fff923c 100644
--- a/os400/README400
+++ b/os400/README400
@@ -185,15 +185,27 @@
                              va_list args);
 
 
+xmllint and xmlcatalog programs:
+
+  These programs are fully implemented at the qshell level, with standard
+command line options. Links to these are installed in sub-directory bin of
+the IFS installation directory.
+  CL command interfaces to these programs are also provided with limited
+support. In particular, interactive mode is not supported and argument count
+and lengths are limited by the CL command syntax.
+
 
 ILE/RPG binding:
 
   All standard types and procedures are provided. Since ILE/RPG does not
-support macros, they have not been ported, with the exceptions of the more
-useful ones and the global/threaded variables access macros. These variables
-can be read with function get_xxx(void), where xxxx is the name of the
-variable; they may be set by calling function set_xxxx(value), where value is
-of the same type as the variable.
+support macros, they have not been ported. However some of them are emulated
+as functions: these are the more useful ones (xmlXPathNodeSetGetLength,
+xmlXPathNodeSetItem, xmlXPathNodeSetIsEmpty, htmlDefaultSubelement,
+htmlElementAllowedHereDesc, htmlRequiredAttrs) and the global/threaded
+variables access macros. These variables can be read with function
+get_xxx(void), where xxxx is the name of the variable; they may be set by
+calling function set_xxxx(value), where value is of the same type as the
+variable.
 
   The C va_list is not implemented as such in ILE/RPG. Functions implementing
 va_list and associated methods are provided:
diff --git a/os400/dlfcn/dlfcn.c b/os400/dlfcn/dlfcn.c
index 1488e12..77190b3 100644
--- a/os400/dlfcn/dlfcn.c
+++ b/os400/dlfcn/dlfcn.c
@@ -375,7 +375,7 @@
                         case 2:
                                 if (tail[1] != '.')
                                         break;
-                                        
+
                                 pathlen = dlparentpath(path, pathlen);
 
                         case 1:
diff --git a/os400/initscript.sh b/os400/initscript.sh
index fb80507..cc52e45 100644
--- a/os400/initscript.sh
+++ b/os400/initscript.sh
@@ -165,15 +165,38 @@
 }
 
 
-#       make_module module_name source_name [additional_definitions]
+#       make_module [option] module_name source_name
 #
 #       Compile source name into ASCII module if needed.
 #       As side effect, append the module name to variable MODULES.
 #       Set LINK to "YES" if the module has been compiled.
+#       Options are:
+#         --define <additional definitions>
+#         --ebcdic
+#         --sysiconv
 
 make_module()
 
 {
+        DEFN=
+        EBCDIC=
+        SYSICONV=
+        while true
+        do      case "${1}" in
+                --define)
+                        DEFN="${2}"
+                        shift
+                        ;;
+                --ebcdic)
+                        EBCDIC=yes
+                        ;;
+                --sysiconv)
+                        SYSICONV=yes
+                        ;;
+                *)      break
+                esac
+                shift
+        done
         MODULES="${MODULES} ${1}"
         MODIFSNAME="${LIBIFSNAME}/${1}.MODULE"
         action_needed "${MODIFSNAME}" "${2}" || return 0;
@@ -185,7 +208,7 @@
         #               the source file and we compile that temporary file.
 
         rm -f __tmpsrcf.c
-        if [ "${4}" != 'ebcdic' ]
+        if [ -z "${EBCDIC}" ]
         then    echo "#line 1 \"${2}\"" >> __tmpsrcf.c
                 echo "#pragma convert(819)" >> __tmpsrcf.c
                 echo '#include "wrappers.h"' >> __tmpsrcf.c
@@ -197,8 +220,10 @@
         CMD="${CMD} OPTION(*INCDIRFIRST)"
         CMD="${CMD} SYSIFCOPT(*IFS64IO) LANGLVL(*EXTENDED) LOCALETYPE(*LOCALE)"
         CMD="${CMD} INCDIR("
-        CMD="${CMD} '${TOPDIR}/os400/iconv'"
-        if [ "${4}" != 'ebcdic' ]
+        if [  -z "${SYSICONV}" ]
+        then    CMD="${CMD} '${TOPDIR}/os400/iconv'"
+        fi
+        if [ -z "${EBCDIC}" ]
         then    CMD="${CMD} '/qibm/proddata/qadrt/include'"
         fi
         CMD="${CMD} '${TOPDIR}/os400' '${TOPDIR}/os400/dlfcn'"
@@ -211,7 +236,7 @@
         CMD="${CMD} OUTPUT(${OUTPUT})"
         CMD="${CMD} OPTIMIZE(${OPTIMIZE})"
         CMD="${CMD} DBGVIEW(${DEBUG})"
-        CMD="${CMD} DEFINE('_REENTRANT' 'TRIO_HAVE_CONFIG_H' 'NDEBUG' ${3})"
+        CMD="${CMD} DEFINE('_REENTRANT' 'TRIO_HAVE_CONFIG_H' 'NDEBUG' ${DEFN})"
 
         system "${CMD}"
         rm -f __tmpsrcf.c
diff --git a/os400/libxmlmain.c b/os400/libxmlmain.c
new file mode 100644
index 0000000..91c848a
--- /dev/null
+++ b/os400/libxmlmain.c
@@ -0,0 +1,102 @@
+/**
+***     QADRT/QADRTMAIN2 substitution program.
+***     This is needed because the IBM-provided QADRTMAIN2 does not
+***     properly translate arguments by default or if no locale is provided.
+***
+***     See Copyright for the status of this software.
+***
+***     Author: Patrick Monnerat <pm@datasphere.ch>, DATASPHERE S.A.
+**/
+
+#include <stdlib.h>
+#include <string.h>
+#include <iconv.h>
+#include <errno.h>
+#include <locale.h>
+
+/* Do not use qadrt.h since it defines unneeded static procedures. */
+extern void     QadrtInit(void);
+extern int      QadrtFreeConversionTable(void);
+extern int      QadrtFreeEnviron(void);
+extern char *   setlocale_a(int, const char *);
+
+
+/* The ASCII main program. */
+extern int      main_a(int argc, char * * argv);
+
+/* Global values of original EBCDIC arguments. */
+int             ebcdic_argc;
+char * *        ebcdic_argv;
+
+
+int
+main(int argc, char * * argv)
+
+{
+        int i;
+        int j;
+        iconv_t cd;
+        size_t bytecount = 0;
+        char * inbuf;
+        char * outbuf;
+        size_t inbytesleft;
+        size_t outbytesleft;
+        char dummybuf[128];
+        char tocode[32];
+        char fromcode[32];
+
+        ebcdic_argc = argc;
+        ebcdic_argv = argv;
+
+        /* Build the encoding converter. */
+        strncpy(tocode, "IBMCCSID01208", sizeof tocode);
+        strncpy(fromcode, "IBMCCSID000000000010", sizeof fromcode);
+        cd = iconv_open(tocode, fromcode);
+
+        /* Measure the arguments. */
+        for (i = 0; i < argc; i++) {
+                inbuf = argv[i];
+                do {
+                        inbytesleft = 0;
+                        outbuf = dummybuf;
+                        outbytesleft = sizeof dummybuf;
+                        j = iconv(cd,
+                                  &inbuf, &inbytesleft, &outbuf, &outbytesleft);
+                        bytecount += outbuf - dummybuf;
+                } while (j == -1 && errno == E2BIG);
+                /* Reset the shift state. */
+                iconv(cd, NULL, &inbytesleft, &outbuf, &outbytesleft);
+                }
+
+        /* Allocate memory for the ASCII arguments and vector. */
+        argv = (char * *) malloc((argc + 1) * sizeof *argv + bytecount);
+
+        /* Build the vector and convert argument encoding. */
+        outbuf = (char *) (argv + argc + 1);
+        outbytesleft = bytecount;
+
+        for (i = 0; i < argc; i++) {
+                argv[i] = outbuf;
+                inbuf = ebcdic_argv[i];
+                inbytesleft = 0;
+                iconv(cd, &inbuf, &inbytesleft, &outbuf, &outbytesleft);
+                iconv(cd, NULL, &inbytesleft, &outbuf, &outbytesleft);
+                }
+
+        iconv_close(cd);
+        argv[argc] = NULL;
+
+        /* Try setting the locale regardless of QADRT_ENV_LOCALE. */
+        setlocale_a(LC_ALL, "");
+
+        /* Call the program. */
+        i = main_a(argc, argv);
+
+        /* Clean-up allocated items. */
+        free((char *) argv);
+        QadrtFreeConversionTable();
+        QadrtFreeEnviron();
+
+        /* Terminate. */
+        return i;
+}
diff --git a/os400/libxmlrpg/DOCBparser.rpgle b/os400/libxmlrpg/DOCBparser.rpgle
index bf5aaa2..08a6b8c 100644
--- a/os400/libxmlrpg/DOCBparser.rpgle
+++ b/os400/libxmlrpg/DOCBparser.rpgle
@@ -13,6 +13,7 @@
 
       /if defined(LIBXML_DOCB_ENABLED)
 
+      /include "libxmlrpg/xmlTypesC"
       /include "libxmlrpg/parser"
       /include "libxmlrpg/parserInternals"
 
@@ -46,13 +47,14 @@
       * There is only few public functions.
 
      d docbEncodeEntities...
-     d                 pr            10i 0 extproc('docbEncodeEntities')
+     d                 pr                  extproc('docbEncodeEntities')
+     d                                     like(xmlCint)
      d  out                            *   value options(*string)               unsigned char *
      d  outlen                         *   value                                int *
      d  in                             *   value options(*string)               const unsigned char
      d                                                                          *
      d  inlen                          *   value                                int *
-     d  quoteChar                    10i 0 value
+     d  quoteChar                          value like(xmlCint)
 
      d docbSAXParseDoc...
      d                 pr                  extproc('docbSAXParseDoc')
@@ -92,15 +94,16 @@
      d  sax                                value like(docbSAXHandlerPtr)
      d  user_data                      *   value                                void *
      d  chunk                          *   value options(*string)               const char *
-     d  size                         10i 0 value
+     d  size                               value like(xmlCint)
      d  filename                       *   value options(*string)               const char *
      d  enc                                value like(xmlCharEncoding)
 
-     d docbParseChunk  pr            10i 0 extproc('docbParseChunk')
+     d docbParseChunk  pr                  extproc('docbParseChunk')
+     d                                     like(xmlCint)
      d  ctxt                               value like(docbParserCtxtPtr)
      d  chunk                          *   value options(*string)               const char *
-     d  size                         10i 0 value
-     d  terminate                    10i 0 value
+     d  size                               value like(xmlCint)
+     d  terminate                          value like(xmlCint)
 
      d docbCreateFileParserCtxt...
      d                 pr                  extproc('docbCreateFileParserCtxt')
@@ -109,7 +112,8 @@
      d  encoding                       *   value options(*string)               const char *
 
      d docbParseDocument...
-     d                 pr            10i 0 extproc('docbParseDocument')
+     d                 pr                  extproc('docbParseDocument')
+     d                                     like(xmlCint)
      d  ctxt                               value like(docbParserCtxtPtr)
 
       /endif                                                                    LIBXML_DOCB_ENABLED
diff --git a/os400/libxmlrpg/HTMLparser.rpgle b/os400/libxmlrpg/HTMLparser.rpgle
index d4c5f8d..c27d8e5 100644
--- a/os400/libxmlrpg/HTMLparser.rpgle
+++ b/os400/libxmlrpg/HTMLparser.rpgle
@@ -12,11 +12,12 @@
       /define HTML_PARSER_H__
 
       /include "libxmlrpg/xmlversion"
-      /include "libxmlrpg/xmlTypesC"
-      /include "libxmlrpg/parser"
 
       /if defined(LIBXML_HTML_ENABLED)
 
+      /include "libxmlrpg/xmlTypesC"
+      /include "libxmlrpg/parser"
+
       * Most of the back-end structures from XML and HTML are shared.
 
      d htmlParserCtxtPtr...
@@ -96,7 +97,7 @@
      d htmlEntityDesc...
      d                 ds                  based(htmlEntityDescPtr)
      d                                     align qualified
-     d  value                        10u 0                                      Unicode char value
+     d  value                              like(xmlCuint)
      d  name                           *                                        const char *
      d  desc                           *                                        const char *
 
@@ -114,15 +115,17 @@
      d htmlEntityValueLookup...
      d                 pr                  extproc('htmlEntityValueLookup')
      d                                     like(htmlEntityDescPtr)              const
-     d  value                        10u 0 value
+     d  value                              value like(xmlCuint)
 
      d htmlIsAutoClosed...
-     d                 pr            10i 0 extproc('htmlIsAutoClosed')
+     d                 pr                  extproc('htmlIsAutoClosed')
+     d                                     like(xmlCint)
      d  doc                                value like(htmlDocPtr)
      d  elem                               value like(htmlNodePtr)
 
      d htmlAutoCloseTag...
-     d                 pr            10i 0 extproc('htmlAutoCloseTag')
+     d                 pr                  extproc('htmlAutoCloseTag')
+     d                                     like(xmlCint)
      d  doc                                value like(htmlDocPtr)
      d  name                           *   value options(*string)               const xmlChar *
      d  elem                               value like(htmlNodePtr)
@@ -134,7 +137,8 @@
      d  str                            *                                        const xmlChar *(*)
 
      d htmlParseCharRef...
-     d                 pr            10i 0 extproc('htmlParseCharRef')
+     d                 pr                  extproc('htmlParseCharRef')
+     d                                     like(xmlCint)
      d  ctxt                               value like(htmlParserCtxtPtr)
 
      d htmlParseElement...
@@ -149,10 +153,11 @@
      d                 pr                  extproc('htmlCreateMemoryParserCtxt')
      d                                     like(htmlParserCtxtPtr)
      d  buffer                         *   value options(*string)               const char *
-     d  size                         10i 0 value
+     d  size                               value like(xmlCint)
 
      d htmlParseDocument...
-     d                 pr            10i 0 extproc('htmlParseDocument')
+     d                 pr                  extproc('htmlParseDocument')
+     d                                     like(xmlCint)
      d  ctxt                               value like(htmlParserCtxtPtr)
 
      d htmlSAXParseDoc...
@@ -181,27 +186,31 @@
      d  filename                       *   value options(*string)               const char *
      d  encoding                       *   value options(*string)               const char *
 
-     d UTF8ToHtml      pr            10i 0 extproc('UTF8ToHtml')
+     d UTF8ToHtml      pr                  extproc('UTF8ToHtml')
+     d                                     like(xmlCint)
      d  out                       65535    options(*varsize)                    unsigned char []
-     d  outlen                       10i 0
+     d  outlen                             like(xmlCint)
      d  in                             *   value options(*string)               const unsigned char*
-     d  inlen                        10i 0
+     d  inlen                              like(xmlCint)
 
      d htmlEncodeEntities...
-     d                 pr            10i 0 extproc('htmlEncodeEntities')
+     d                 pr                  extproc('htmlEncodeEntities')
+     d                                     like(xmlCint)
      d  out                       65535    options(*varsize)                    unsigned char []
-     d  outlen                       10i 0
+     d  outlen                             like(xmlCint)
      d  in                             *   value options(*string)               const unsigned char*
-     d  inlen                        10i 0
-     d  quoteChar                    10i 0 value
+     d  inlen                              like(xmlCint)
+     d  quoteChar                          value like(xmlCint)
 
      d htmlIsScriptAttribute...
-     d                 pr            10i 0 extproc('htmlIsScriptAttribute')
+     d                 pr                  extproc('htmlIsScriptAttribute')
+     d                                     like(xmlCint)
      d  name                           *   value options(*string)               const xmlChar *
 
      d htmlHandleOmittedElem...
-     d                 pr            10i 0 extproc('htmlHandleOmittedElem')
-     d  val                          10i 0 value
+     d                 pr                  extproc('htmlHandleOmittedElem')
+     d                                     like(xmlCint)
+     d  val                                value like(xmlCint)
 
       /if defined(LIBXML_PUSH_ENABLED)
 
@@ -213,15 +222,16 @@
      d  sax                                value like(htmlSAXHandlerPtr)
      d  user_data                      *   value                                void *
      d  chunk                          *   value options(*string)               const char *
-     d  size                         10i 0 value
+     d  size                               value like(xmlCint)
      d  filename                       *   value options(*string)               const char *
      d  enc                                value like(xmlCharEncoding)
 
-     d htmlParseChunk  pr            10i 0 extproc('htmlParseChunk')
+     d htmlParseChunk  pr                  extproc('htmlParseChunk')
+     d                                     like(xmlCint)
      d  ctxt                               value like(htmlParserCtxtPtr)
      d  chunk                          *   value options(*string)               const char *
-     d  size                         10i 0 value
-     d  terminate                    10i 0 value
+     d  size                               value like(xmlCint)
+     d  terminate                          value like(xmlCint)
       /endif                                                                    LIBXML_PUSH_ENABLED
 
      d htmlFreeParserCtxt...
@@ -236,7 +246,8 @@
       * to the xmlReadDoc() and similar calls.
 
      d htmlParserOption...
-     d                 s             10i 0 based(######typedef######)           enum
+     d                 s                   based(######typedef######)
+     d                                     like(xmlCenum)
      d  HTML_PARSE_RECOVER...                                                   Relaxed parsing
      d                 c                   X'00000001'
      d  HTML_PARSE_NODEFDTD...                                                  No default doctype
@@ -262,37 +273,38 @@
      d ctxt                                value like(htmlParserCtxtPtr)
 
      d htmlCtxtUseOptions...
-     d                 pr            10i 0 extproc('htmlCtxtUseOptions')
+     d                 pr                  extproc('htmlCtxtUseOptions')
+     d                                     like(xmlCint)
      d ctxt                                value like(htmlParserCtxtPtr)
-     d options                       10i 0 value
+     d options                             value like(xmlCint)
 
      d htmlReadDoc     pr                  extproc('htmlReadDoc')
      d                                     like(htmlDocPtr)
      d  cur                            *   value options(*string)               const xmlChar *
      d  URL                            *   value options(*string)               const char *
      d  encoding                       *   value options(*string)               const char *
-     d  options                      10i 0 value
+     d  options                            value like(xmlCint)
 
      d htmlReadFile    pr                  extproc('htmlReadFile')
      d                                     like(htmlDocPtr)
      d  URL                            *   value options(*string)               const char *
      d  encoding                       *   value options(*string)               const char *
-     d  options                      10i 0 value
+     d  options                            value like(xmlCint)
 
      d htmlReadMemory  pr                  extproc('htmlReadMemory')
      d                                     like(htmlDocPtr)
      d  buffer                         *   value options(*string)               const char *
-     d  size                         10i 0 value
+     d  size                               value like(xmlCint)
      d  URL                            *   value options(*string)               const char *
      d  encoding                       *   value options(*string)               const char *
-     d  options                      10i 0 value
+     d  options                            value like(xmlCint)
 
      d htmlReadFd      pr                  extproc('htmlReadFd')
      d                                     like(htmlDocPtr)
-     d  fd                           10i 0 value
+     d  fd                                 value like(xmlCint)
      d  URL                            *   value options(*string)               const char *
      d  encoding                       *   value options(*string)               const char *
-     d  options                      10i 0 value
+     d  options                            value like(xmlCint)
 
      d htmlReadIO      pr                  extproc('htmlReadIO')
      d                                     like(htmlDocPtr)
@@ -301,7 +313,7 @@
      d  ioctx                          *   value                                void *
      d  URL                            *   value options(*string)               const char *
      d  encoding                       *   value options(*string)               const char *
-     d  options                      10i 0 value
+     d  options                            value like(xmlCint)
 
      d htmlCtxtReadDoc...
      d                 pr                  extproc('htmlCtxtReadDoc')
@@ -310,7 +322,7 @@
      d  cur                            *   value options(*string)               const xmlChar *
      d  URL                            *   value options(*string)               const char *
      d  encoding                       *   value options(*string)               const char *
-     d  options                      10i 0 value
+     d  options                            value like(xmlCint)
 
      d htmlCtxtReadFile...
      d                 pr                  extproc('htmlCtxtReadFile')
@@ -318,25 +330,25 @@
      d  ctxt                               value like(xmlParserCtxtPtr)
      d  filename                       *   value options(*string)               const char *
      d  encoding                       *   value options(*string)               const char *
-     d  options                      10i 0 value
+     d  options                            value like(xmlCint)
 
      d htmlCtxtReadMemory...
      d                 pr                  extproc('htmlCtxtReadMemory')
      d                                     like(htmlDocPtr)
      d  ctxt                               value like(xmlParserCtxtPtr)
      d  buffer                         *   value options(*string)               const char *
-     d  size                         10i 0 value
+     d  size                               value like(xmlCint)
      d  URL                            *   value options(*string)               const char *
      d  encoding                       *   value options(*string)               const char *
-     d  options                      10i 0 value
+     d  options                            value like(xmlCint)
 
      d htmlCtxtReadFd  pr                  extproc('htmlCtxtReadFd')
      d                                     like(htmlDocPtr)
      d  ctxt                               value like(xmlParserCtxtPtr)
-     d  fd                           10i 0 value
+     d  fd                                 value like(xmlCint)
      d  URL                            *   value options(*string)               const char *
      d  encoding                       *   value options(*string)               const char *
-     d  options                      10i 0 value
+     d  options                            value like(xmlCint)
 
      d htmlCtxtReadIO  pr                  extproc('htmlCtxtReadIO')
      d                                     like(htmlDocPtr)
@@ -346,11 +358,12 @@
      d  ioctx                          *   value                                void *
      d  URL                            *   value options(*string)               const char *
      d  encoding                       *   value options(*string)               const char *
-     d  options                      10i 0 value
+     d  options                            value like(xmlCint)
 
       * Further knowledge of HTML structure
 
-     d htmlStatus      s             10i 0 based(######typedef######)           enum
+     d htmlStatus      s                   based(######typedef######)
+     d                                     like(xmlCenum)
      d  HTML_NA        c                   X'0000'                              No check at all
      d  HTML_INVALID   c                   X'0001'
      d  HTML_DEPRECATED...
@@ -366,10 +379,11 @@
      d                                     like(htmlStatus)
      d  #param1                            value like(htmlElemDescPtr)          const
      d  #param2                        *   value options(*string)               const xmlChar *
-     d  #param3                      10i 0 value
+     d  #param3                            value like(xmlCint)
 
      d htmlElementAllowedHere...
-     d                 pr            10i 0 extproc('htmlElementAllowedHere')
+     d                 pr                  extproc('htmlElementAllowedHere')
+     d                                     like(xmlCint)
      d  #param1                            value like(htmlElemDescPtr)          const
      d  #param2                        *   value options(*string)               const xmlChar *
 
@@ -382,7 +396,7 @@
      d htmlNodeStatus  pr                  extproc('htmlNodeStatus')
      d                                     like(htmlStatus)
      d  #param1                            value like(htmlNodePtr)
-     d  #param2                      10i 0 value
+     d  #param2                            value like(xmlCint)
 
       * C macros implemented as procedures for ILE/RPG support.
 
@@ -391,8 +405,9 @@
      d  elt                            *   value                                const htmlElemDesc *
 
      d htmlElementAllowedHereDesc...
-     d                 pr            10i 0 extproc(
+     d                 pr                  extproc(
      d                                     '__htmlElementAllowedHereDesc')
+     d                                     like(xmlCint)
      d  parent                         *   value                                const htmlElemDesc *
      d  elt                            *   value                                const htmlElemDesc *
 
diff --git a/os400/libxmlrpg/HTMLtree.rpgle b/os400/libxmlrpg/HTMLtree.rpgle
index 82a11ca..99c38a0 100644
--- a/os400/libxmlrpg/HTMLtree.rpgle
+++ b/os400/libxmlrpg/HTMLtree.rpgle
@@ -10,11 +10,13 @@
       /define HTML_TREE_H__
 
       /include "libxmlrpg/xmlversion"
-      /include "libxmlrpg/tree"
-      /include "libxmlrpg/HTMLparser"
 
       /if defined(LIBXML_HTML_ENABLED)
 
+      /include "libxmlrpg/xmlTypesC"
+      /include "libxmlrpg/tree"
+      /include "libxmlrpg/HTMLparser"
+
       * HTML_TEXT_NODE:
       *
       * Macro. A text node in a HTML document is really implemented
@@ -69,7 +71,8 @@
      d  doc                                value like(htmlDocPtr)
 
      d htmlSetMetaEncoding...
-     d                 pr            10i 0 extproc('htmlSetMetaEncoding')
+     d                 pr                  extproc('htmlSetMetaEncoding')
+     d                                     like(xmlCint)
      d  doc                                value like(htmlDocPtr)
      d  encoding                       *   value options(*string)               const xmlChar *
 
@@ -78,24 +81,27 @@
      d                 pr                  extproc('htmlDocDumpMemory')
      d  cur                                value like(xmlDocPtr)
      d  mem                            *   value                                xmlChar * *
-     d  size                         10i 0
+     d  size                               like(xmlCint)
 
      d htmlDocDumpMemoryFormat...
      d                 pr                  extproc('htmlDocDumpMemoryFormat')
      d  cur                                value like(xmlDocPtr)
      d  mem                            *   value                                xmlChar * *
-     d  size                         10i 0
-     d  format                       10i 0 value
+     d  size                               like(xmlCint)
+     d  format                             value like(xmlCint)
 
-     d htmlDocDump     pr            10i 0 extproc('htmlDocDump')
+     d htmlDocDump     pr                  extproc('htmlDocDump')
+     d                                     like(xmlCint)
      d  f                              *   value                                FILE *
      d  cur                                value like(xmlDocPtr)
 
-     d htmlSaveFile    pr            10i 0 extproc('htmlSaveFile')
+     d htmlSaveFile    pr                  extproc('htmlSaveFile')
+     d                                     like(xmlCint)
      d  filename                       *   value options(*string)               const char *
      d  cur                                value like(xmlDocPtr)
 
-     d htmlNodeDump    pr            10i 0 extproc('htmlNodeDump')
+     d htmlNodeDump    pr                  extproc('htmlNodeDump')
+     d                                     like(xmlCint)
      d  buf                                value like(xmlBufferPtr)
      d  doc                                value like(xmlDocPtr)
      d  cur                                value like(xmlNodePtr)
@@ -107,25 +113,28 @@
      d  cur                                value like(xmlNodePtr)
 
      d htmlNodeDumpFileFormat...
-     d                 pr            10i 0 extproc('htmlNodeDumpFileFormat')
+     d                 pr                  extproc('htmlNodeDumpFileFormat')
+     d                                     like(xmlCint)
      d  out                            *   value                                FILE *
      d  doc                                value like(xmlDocPtr)
      d  cur                                value like(xmlNodePtr)
      d  encoding                       *   value options(*string)               const char *
-     d  format                       10i 0 value
+     d  format                             value like(xmlCint)
 
      d htmlSaveFileEnc...
-     d                 pr            10i 0 extproc('htmlSaveFileEnc')
+     d                 pr                  extproc('htmlSaveFileEnc')
+     d                                     like(xmlCint)
      d  filename                       *   value options(*string)               const char *
      d  cur                                value like(xmlDocPtr)
      d  encoding                       *   value options(*string)               const char *
 
      d htmlSaveFileFormat...
-     d                 pr            10i 0 extproc('htmlSaveFileFormat')
+     d                 pr                  extproc('htmlSaveFileFormat')
+     d                                     like(xmlCint)
      d  filename                       *   value options(*string)               const char *
      d  cur                                value like(xmlDocPtr)
      d  encoding                       *   value options(*string)               const char *
-     d  format                       10i 0 value
+     d  format                             value like(xmlCint)
 
      d htmlNodeDumpFormatOutput...
      d                 pr                  extproc('htmlNodeDumpFormatOutput')
@@ -133,7 +142,7 @@
      d  doc                                value like(xmlDocPtr)
      d  cur                                value like(xmlNodePtr)
      d  encoding                       *   value options(*string)               const char *
-     d  format                       10i 0 value
+     d  format                             value like(xmlCint)
 
      d htmlDocContentDumpOutput...
      d                 pr                  extproc('htmlDocContentDumpOutput')
@@ -147,7 +156,7 @@
      d  buf                                value like(xmlOutputBufferPtr)
      d  cur                                value like(xmlDocPtr)
      d  encoding                       *   value options(*string)               const char *
-     d  format                       10i 0 value
+     d  format                             value like(xmlCint)
 
      d htmlNodeDumpOutput...
      d                 pr                  extproc('htmlNodeDumpOutput')
@@ -159,7 +168,8 @@
       /endif                                                                    LIBXML_OUTPUT_ENABLD
 
      d htmlIsBooleanAttr...
-     d                 pr            10i 0 extproc('htmlIsBooleanAttr')
+     d                 pr                  extproc('htmlIsBooleanAttr')
+     d                                     like(xmlCint)
      d  name                           *   value options(*string)               const xmlChar *
 
       /endif                                                                    LIBXML_HTML_ENABLED
diff --git a/os400/libxmlrpg/SAX.rpgle b/os400/libxmlrpg/SAX.rpgle
index 85f15cc..a22d49a 100644
--- a/os400/libxmlrpg/SAX.rpgle
+++ b/os400/libxmlrpg/SAX.rpgle
@@ -26,22 +26,27 @@
      d  ctx                            *   value                                void *
      d  loc                                value like(xmlSAXLocatorPtr)
 
-     d getLineNumber   pr            10i 0 extproc('getLineNumber')
+     d getLineNumber   pr                  extproc('getLineNumber')
+     d                                     like(xmlCint)
      d  ctx                            *   value                                void *
 
      d getColumnNumber...
-     d                 pr            10i 0 extproc('getColumnNumber')
+     d                 pr                  extproc('getColumnNumber')
+     d                                     like(xmlCint)
      d  ctx                            *   value                                void *
 
-     d isStandalone    pr            10i 0 extproc('isStandalone')
+     d isStandalone    pr                  extproc('isStandalone')
+     d                                     like(xmlCint)
      d  ctx                            *   value                                void *
 
      d hasInternalSubset...
-     d                 pr            10i 0 extproc('hasInternalSubset')
+     d                 pr                  extproc('hasInternalSubset')
+     d                                     like(xmlCint)
      d  ctx                            *   value                                void *
 
      d hasExternalSubset...
-     d                 pr            10i 0 extproc('hasExternalSubset')
+     d                 pr                  extproc('hasExternalSubset')
+     d                                     like(xmlCint)
      d  ctx                            *   value                                void *
 
      d internalSubset  pr                  extproc('internalSubset')
@@ -76,7 +81,7 @@
      d entityDecl      pr                  extproc('entityDecl')
      d  ctx                            *   value                                void *
      d  name                           *   value options(*string)               const xmlChar *
-     d  type                         10i 0 value
+     d  type                               value like(xmlCint)
      d  publicId                       *   value options(*string)               const xmlChar *
      d  systemId                       *   value options(*string)               const xmlChar *
      d  content                        *   value options(*string)               xmlChar *
@@ -85,15 +90,15 @@
      d  ctx                            *   value                                void *
      d  elem                           *   value options(*string)               const xmlChar *
      d  fullname                       *   value options(*string)               const xmlChar *
-     d  type                         10i 0 value
-     d  def                          10i 0 value
+     d  type                               value like(xmlCint)
+     d  def                                value like(xmlCint)
      d  defaultValue                   *   value options(*string)               const xmlChar *
      d  tree                               value like(xmlEnumerationPtr)
 
      d elementDecl     pr                  extproc('elementDecl')
      d  ctx                            *   value                                void *
      d  name                           *   value options(*string)               const xmlChar *
-     d  type                         10i 0 value
+     d  type                               value like(xmlCint)
      d  content                            value like(xmlElementContentPtr)
 
      d notationDecl    pr                  extproc('notationDecl')
@@ -137,13 +142,13 @@
      d characters      pr                  extproc('characters')
      d  ctx                            *   value                                void *
      d  ch                             *   value options(*string)               const xmlChar *
-     d  len                          10i 0 value
+     d  len                                value like(xmlCint)
 
      d ignorableWhitespace...
      d                 pr                  extproc('ignorableWhitespace')
      d  ctx                            *   value                                void *
      d  ch                             *   value options(*string)               const xmlChar *
-     d  len                          10i 0 value
+     d  len                                value like(xmlCint)
 
      d processingInstruction...
      d                 pr                  extproc('processingInstruction')
@@ -165,7 +170,8 @@
      d                                     like(xmlNsPtr)
      d  ctx                            *   value                                void *
 
-     d checkNamespace  pr            10i 0 extproc('checkNamespace')
+     d checkNamespace  pr                  extproc('checkNamespace')
+     d                                     like(xmlCint)
      d  ctx                            *   value                                void *
      d  nameSpace                      *   value options(*string)               xmlChar *
 
@@ -181,13 +187,13 @@
      d cdataBlock      pr                  extproc('cdataBlock')
      d  ctx                            *   value                                void *
      d  value                          *   value options(*string)               const xmlChar *
-     d  len                          10i 0 value
+     d  len                                value like(xmlCint)
 
       /if defined(LIBXML_SAX1_ENABLED)
      d initxmlDefaultSAXHandler...
      d                 pr                  extproc('initxmlDefaultSAXHandler')
      d  hdlr                               likeds(xmlSAXHandlerV1)
-     d  warning                      10i 0 value
+     d  warning                            value like(xmlCint)
 
       /if defined(LIBXML_HTML_ENABLED)
      d inithtmlDefaultSAXHandler...
diff --git a/os400/libxmlrpg/SAX2.rpgle b/os400/libxmlrpg/SAX2.rpgle
index fb687e9..c72be25 100644
--- a/os400/libxmlrpg/SAX2.rpgle
+++ b/os400/libxmlrpg/SAX2.rpgle
@@ -10,6 +10,7 @@
       /define XML_SAX2_H__
 
       /include "libxmlrpg/xmlversion"
+      /include "libxmlrpg/xmlTypesC"
       /include "libxmlrpg/parser"
       /include "libxmlrpg/xlink"
 
@@ -27,23 +28,28 @@
      d  loc                                value like(xmlSAXLocatorPtr)
 
      d xmlSAX2GetLineNumber...
-     d                 pr            10i 0 extproc('xmlSAX2GetLineNumber')
+     d                 pr                  extproc('xmlSAX2GetLineNumber')
+     d                                     like(xmlCint)
      d  ctx                            *   value                                void *
 
      d xmlSAX2GetColumnNumber...
-     d                 pr            10i 0 extproc('xmlSAX2GetColumnNumber')
+     d                 pr                  extproc('xmlSAX2GetColumnNumber')
+     d                                     like(xmlCint)
      d  ctx                            *   value                                void *
 
      d xmlSAX2IsStandalone...
-     d                 pr            10i 0 extproc('xmlSAX2IsStandalone')
+     d                 pr                  extproc('xmlSAX2IsStandalone')
+     d                                     like(xmlCint)
      d  ctx                            *   value                                void *
 
      d xmlSAX2HasInternalSubset...
-     d                 pr            10i 0 extproc('xmlSAX2HasInternalSubset')
+     d                 pr                  extproc('xmlSAX2HasInternalSubset')
+     d                                     like(xmlCint)
      d  ctx                            *   value                                void *
 
      d xmlSAX2HasExternalSubset...
-     d                 pr            10i 0 extproc('xmlSAX2HasExternalSubset')
+     d                 pr                  extproc('xmlSAX2HasExternalSubset')
+     d                                     like(xmlCint)
      d  ctx                            *   value                                void *
 
      d xmlSAX2InternalSubset...
@@ -83,7 +89,7 @@
      d                 pr                  extproc('xmlSAX2EntityDecl')
      d  ctx                            *   value                                void *
      d  name                           *   value options(*string)               const xmlChar *
-     d  type                         10i 0 value
+     d  type                               value like(xmlCint)
      d  publicId                       *   value options(*string)               const xmlChar *
      d  systemId                       *   value options(*string)               const xmlChar *
      d  content                        *   value options(*string)               xmlChar *
@@ -93,8 +99,8 @@
      d  ctx                            *   value                                void *
      d  elem                           *   value options(*string)               const xmlChar *
      d  fullname                       *   value options(*string)               const xmlChar *
-     d  type                         10i 0 value
-     d  def                          10i 0 value
+     d  type                               value like(xmlCint)
+     d  def                                value like(xmlCint)
      d  defaultValue                   *   value options(*string)               const xmlChar *
      d  tree                               value like(xmlEnumerationPtr)
 
@@ -102,7 +108,7 @@
      d                 pr                  extproc('xmlSAX2ElementDecl')
      d  ctx                            *   value                                void *
      d  name                           *   value options(*string)               const xmlChar *
-     d  type                         10i 0 value
+     d  type                               value like(xmlCint)
      d  content                            value like(xmlElementContentPtr)
 
      d xmlSAX2NotationDecl...
@@ -158,10 +164,10 @@
      d  localname                      *   value options(*string)               const xmlChar *
      d  prefix                         *   value options(*string)               const xmlChar *
      d  URI                            *   value options(*string)               const xmlChar *
-     d  nb_namespaces                10i 0 value
+     d  nb_namespaces                      value like(xmlCint)
      d  namespaces                     *   value                                const xmlChar *(*)
-     d  nb_attributes                10i 0 value
-     d  nb_defaulted                 10i 0 value
+     d  nb_attributes                      value like(xmlCint)
+     d  nb_defaulted                       value like(xmlCint)
      d  attributes                     *                                        const xmlChar *(*)
 
      d xmlSAX2EndElementNs...
@@ -180,13 +186,13 @@
      d                 pr                  extproc('xmlSAX2Characters')
      d  ctx                            *   value                                void *
      d  ch                             *   value options(*string)               const xmlChar *
-     d  len                          10i 0 value
+     d  len                                value like(xmlCint)
 
      d xmlSAX2IgnorableWhitespace...
      d                 pr                  extproc('xmlSAX2IgnorableWhitespace')
      d  ctx                            *   value                                void *
      d  ch                             *   value options(*string)               const xmlChar *
-     d  len                          10i 0 value
+     d  len                                value like(xmlCint)
 
      d xmlSAX2ProcessingInstruction...
      d                 pr                  extproc(
@@ -204,23 +210,25 @@
      d                 pr                  extproc('xmlSAX2CDataBlock')
      d  ctx                            *   value                                void *
      d  value                          *   value options(*string)               const xmlChar *
-     d  len                          10i 0 value
+     d  len                                value like(xmlCint)
 
       /if defined(LIBXML_SAX1_ENABLED)
      d xmlSAXDefaultVersion...
-     d                 pr            10i 0 extproc('xmlSAXDefaultVersion')
-     d  version                      10i 0 value
+     d                 pr                  extproc('xmlSAXDefaultVersion')
+     d                                     like(xmlCint)
+     d  version                            value like(xmlCint)
       /endif                                                                    LIBXML_SAX1_ENABLED
 
-     d xmlSAXVersion   pr            10i 0 extproc('xmlSAXVersion')
+     d xmlSAXVersion   pr                  extproc('xmlSAXVersion')
+     d                                     like(xmlCint)
      d  hdlr                               likeds(xmlSAXHandler)
-     d  version                      10i 0 value
+     d  version                            value like(xmlCint)
 
      d xmlSAX2InitDefaultSAXHandler...
      d                 pr                  extproc(
      d                                      'xmlSAX2InitDefaultSAXHandler')
      d  hdlr                               likeds(xmlSAXHandler)
-     d  warning                      10i 0 value
+     d  warning                            value like(xmlCint)
 
       /if defined(LIBXML_HTML_ENABLED)
      d xmlSAX2InitHtmlDefaultSAXHandler...
diff --git a/os400/libxmlrpg/c14n.rpgle b/os400/libxmlrpg/c14n.rpgle
index b64efb2..963ed37 100644
--- a/os400/libxmlrpg/c14n.rpgle
+++ b/os400/libxmlrpg/c14n.rpgle
@@ -21,6 +21,7 @@
       /if defined(LIBXML_C14N_ENABLED)
       /if defined(LIBXML_OUTPUT_ENABLED)
 
+      /include "libxmlrpg/xmlTypesC"
       /include "libxmlrpg/tree"
       /include "libxmlrpg/xpath"
 
@@ -52,41 +53,45 @@
       * Predefined values for C14N modes
 
      d xmlBufferAllocationScheme...
-     d xmlC14NMode     s             10i 0 based(######typedef######)           enum
+     d xmlC14NMode     s                   based(######typedef######)
+     d                                     like(xmlCenum)
      d  XML_C14N_1_0   c                   0                                    Original C14N 1.0
      d  XML_C14N_EXCLUSIVE_1_0...                                               Exclusive C14N 1.0
      d                 c                   1
      d  XML_C14N_1_1   c                   2                                    C14N 1.1 spec
 
      d xmlC14NDocSaveTo...
-     d                 pr            10i 0 extproc('xmlC14NDocSaveTo')
+     d                 pr                  extproc('xmlC14NDocSaveTo')
+     d                                     like(xmlCint)
      d  doc                                value like(xmlDocPtr)
      d  nodes                              value like(xmlNodeSetPtr)
-     d  mode                         10i 0 value
+     d  mode                               value like(xmlCint)
      d  inclusive_ns_prefixes...
-     d                                 *                                        xmlChar *(*)
-     d  with_comments                10i 0 value
+     d                                 *   options(*omit)                       xmlChar *(*)
+     d  with_comments                      value like(xmlCint)
      d  buf                                value like(xmlOutputBufferPtr)
 
      d xmlC14NDocDumpMemory...
-     d                 pr            10i 0 extproc('xmlC14NDocDumpMemory')
+     d                 pr                  extproc('xmlC14NDocDumpMemory')
+     d                                     like(xmlCint)
      d  doc                                value like(xmlDocPtr)
      d  nodes                              value like(xmlNodeSetPtr)
-     d  mode                         10i 0 value
+     d  mode                               value like(xmlCint)
      d  inclusive_ns_prefixes...
-     d                                 *                                        xmlChar *(*)
-     d  with_comments                10i 0 value
+     d                                 *   options(*omit)                       xmlChar *(*)
+     d  with_comments                      value like(xmlCint)
      d  doc_txt_ptr                    *                                        xmlChar *(*)
 
-     d xmlC14NDocSave  pr            10i 0 extproc('xmlC14NDocSave')
+     d xmlC14NDocSave  pr                  extproc('xmlC14NDocSave')
+     d                                     like(xmlCint)
      d  doc                                value like(xmlDocPtr)
      d  nodes                              value like(xmlNodeSetPtr)
-     d  mode                         10i 0 value
+     d  mode                               value like(xmlCint)
      d  inclusive_ns_prefixes...
-     d                                 *                                        xmlChar *(*)
-     d  with_comments                10i 0 value
+     d                                 *   options(*omit)                       xmlChar *(*)
+     d  with_comments                      value like(xmlCint)
      d  filename                       *   value options(*string)               const char *
-     d  compression                  10i 0 value
+     d  compression                        value like(xmlCint)
 
       * This is the core C14N function
 
@@ -103,15 +108,16 @@
      d                 s               *   based(######typedef######)
      d                                     procptr
 
-     d xmlC14NExecute  pr            10i 0 extproc('xmlC14NExecute')
+     d xmlC14NExecute  pr                  extproc('xmlC14NExecute')
+     d                                     like(xmlCint)
      d  doc                                value like(xmlDocPtr)
      d  is_visible_callback...
      d                                     value like(xmlC14NIsVisibleCallback)
      d  user_data                      *   value                                void *
-     d  mode                         10i 0 value
+     d  mode                               value like(xmlCint)
      d  inclusive_ns_prefixes...
-     d                                 *                                        xmlChar *(*)
-     d  with_comments                10i 0 value
+     d                                 *   options(*omit)                       xmlChar *(*)
+     d  with_comments                      value like(xmlCint)
      d  buf                                value like(xmlOutputBufferPtr)
 
       /endif                                                                    LIBXML_OUTPUT_ENABLD
diff --git a/os400/libxmlrpg/catalog.rpgle b/os400/libxmlrpg/catalog.rpgle
index 52baf4e..1dab819 100644
--- a/os400/libxmlrpg/catalog.rpgle
+++ b/os400/libxmlrpg/catalog.rpgle
@@ -16,11 +16,13 @@
       /define XML_CATALOG_H__
 
       /include "libxmlrpg/xmlversion"
-      /include "libxmlrpg/xmlstring"
-      /include "libxmlrpg/tree"
 
       /if defined(LIBXML_CATALOG_ENABLED)
 
+      /include "libxmlrpg/xmlTypesC"
+      /include "libxmlrpg/xmlstring"
+      /include "libxmlrpg/tree"
+
       * XML_CATALOGS_NAMESPACE:
       *
       * The namespace for the XML Catalogs elements.
@@ -38,7 +40,8 @@
       * The API is voluntarily limited to general cataloging.
 
      d xmlCatalogPrefer...
-     d                 s             10u 0 based(######typedef######)           enum type
+     d                 s                   based(######typedef######)
+     d                                     like(xmlCenum)
      d XML_CATA_PREFER_NONE...
      d                 c                   0
      d XML_CATA_PREFER_PUBLIC...
@@ -47,7 +50,8 @@
      d                 c                   2
 
      d xmlCatalogAllow...
-     d                 s             10u 0 based(######typedef######)           enum type
+     d                 s                   based(######typedef######)
+     d                                     like(xmlCenum)
      d XML_CATA_ALLOW_NONE...
      d                 c                   0
      d XML_CATA_ALLOW_GLOBAL...
@@ -63,7 +67,7 @@
 
      d xmlNewCatalog   pr                  extproc('xmlNewCatalog')
      d                                     like(xmlCatalogPtr)
-     d  sgml                         10i 0 value
+     d  sgml                               value like(xmlCint)
 
      d xmlLoadACatalog...
      d                 pr                  extproc('xmlLoadACatalog')
@@ -76,17 +80,20 @@
      d  filename                       *   value options(*string)               const char *
 
      d xmlConvertSGMLCatalog...
-     d                 pr            10i 0 extproc('xmlConvertSGMLCatalog')
+     d                 pr                  extproc('xmlConvertSGMLCatalog')
+     d                                     like(xmlCint)
      d  catal                              value like(xmlCatalogPtr)
 
-     d xmlACatalogAdd  pr            10i 0 extproc('xmlACatalogAdd')
+     d xmlACatalogAdd  pr                  extproc('xmlACatalogAdd')
+     d                                     like(xmlCint)
      d  catal                              value like(xmlCatalogPtr)
      d  type                           *   value options(*string)               const xmlChar *
      d  orig                           *   value options(*string)               const xmlChar *
      d  replace                        *   value options(*string)               const xmlChar *
 
      d xmlACatalogRemove...
-     d                 pr            10i 0 extproc('xmlACatalogRemove')
+     d                 pr                  extproc('xmlACatalogRemove')
+     d                                     like(xmlCint)
      d  catal                              value like(xmlCatalogPtr)
      d  value                          *   value options(*string)               const xmlChar *
 
@@ -122,7 +129,8 @@
      d  catal                              value like(xmlCatalogPtr)
 
      d xmlCatalogIsEmpty...
-     d                 pr            10i 0 extproc('xmlCatalogIsEmpty')
+     d                 pr                  extproc('xmlCatalogIsEmpty')
+     d                                     like(xmlCint)
      d  catal                              value like(xmlCatalogPtr)
 
       * Global operations.
@@ -130,7 +138,8 @@
      d xmlInitializeCatalog...
      d                 pr                  extproc('xmlInitializeCatalog')
 
-     d xmlLoadCatalog  pr            10i 0 extproc('xmlLoadCatalog')
+     d xmlLoadCatalog  pr                  extproc('xmlLoadCatalog')
+     d                                     like(xmlCint)
      d  filename                       *   value options(*string)               const char *
 
      d xmlLoadCatalogs...
@@ -162,13 +171,15 @@
      d                 pr              *   extproc('xmlCatalogResolveURI')      xmlChar *
      d  URI                            *   value options(*string)               const xmlChar *
 
-     d xmlCatalogAdd   pr            10i 0 extproc('xmlCatalogAdd')
+     d xmlCatalogAdd   pr                  extproc('xmlCatalogAdd')
+     d                                     like(xmlCint)
      d  type                           *   value options(*string)               const xmlChar *
      d  orig                           *   value options(*string)               const xmlChar *
      d  replace                        *   value options(*string)               const xmlChar *
 
      d xmlCatalogRemove...
-     d                 pr            10i 0 extproc('xmlCatalogRemove')
+     d                 pr                  extproc('xmlCatalogRemove')
+     d                                     like(xmlCint)
      d  value                          *   value options(*string)               const xmlChar *
 
      d xmlParseCatalogFile...
@@ -177,7 +188,8 @@
      d  filename                       *   value options(*string)               const char *
 
      d xmlCatalogConvert...
-     d                 pr            10i 0 extproc('xmlCatalogConvert')
+     d                 pr                  extproc('xmlCatalogConvert')
+     d                                     like(xmlCint)
 
       * Strictly minimal interfaces for per-document catalogs used
       * by the parser.
@@ -205,8 +217,9 @@
       * Preference settings.
 
      d xmlCatalogSetDebug...
-     d                 pr            10i 0 extproc('xmlCatalogSetDebug')
-     d  level                        10i 0 value
+     d                 pr                  extproc('xmlCatalogSetDebug')
+     d                                     like(xmlCint)
+     d  level                              value like(xmlCint)
 
      d xmlCatalogSetDefaultPrefer...
      d                 pr                  extproc('xmlCatalogSetDefaultPrefer')
diff --git a/os400/libxmlrpg/chvalid.rpgle b/os400/libxmlrpg/chvalid.rpgle
index 444d1cb..c601442 100644
--- a/os400/libxmlrpg/chvalid.rpgle
+++ b/os400/libxmlrpg/chvalid.rpgle
@@ -26,8 +26,8 @@
 
      d xmlChLRange     ds                  based(xmlChLRangePtr)
      d                                     align qualified
-     d  low                          10u 0
-     d  high                         10u 0
+     d  low                                like(xmlCuint)
+     d  high                               like(xmlCuint)
 
      d xmlChRangeGroupPtr...
      d                 s               *   based(######typedef######)
@@ -35,15 +35,16 @@
      d xmlChRangeGroup...
      d                 ds                  based(xmlChRangeGroupPtr)
      d                                     align qualified
-     d  nbShortRange                 10i 0
-     d  nbLongRange                  10i 0
+     d  nbShortRange                       like(xmlCint)
+     d  nbLongRange                        like(xmlCint)
      d  shortRange                         like(xmlChSRangePtr)
      d  longRange                          like(xmlChLRangePtr)
 
       * Range checking routine
 
-     d xmlCharInRange  pr            10i 0 extproc('xmlCharInRange')
-     d val                           10u 0 value
+     d xmlCharInRange  pr                  extproc('xmlCharInRange')
+     d                                     like(xmlCint)
+     d val                                 value like(xmlCuint)
      d group                               like(xmlChRangeGroupPtr)             const
 
      d xmlIsBaseCharGroup...
@@ -70,29 +71,37 @@
      d                 ds                  import('xmlIsIdeographicGroup')
      d                                     likeds(xmlChRangeGroup)              const
 
-     d xmlIsBaseChar   pr            10i 0 extproc('xmlIsBaseChar')
-     d ch                            10u 0 value
+     d xmlIsBaseChar   pr                  extproc('xmlIsBaseChar')
+     d                                     like(xmlCint)
+     d ch                                  value like(xmlCuint)
 
-     d xmlIsBlank      pr            10i 0 extproc('xmlIsBlank')
-     d ch                            10u 0 value
+     d xmlIsBlank      pr                  extproc('xmlIsBlank')
+     d                                     like(xmlCint)
+     d ch                                  value like(xmlCuint)
 
-     d xmlIsChar       pr            10i 0 extproc('xmlIsChar')
-     d ch                            10u 0 value
+     d xmlIsChar       pr                  extproc('xmlIsChar')
+     d                                     like(xmlCint)
+     d ch                                  value like(xmlCuint)
 
-     d xmlIsCombining  pr            10i 0 extproc('xmlIsCombining')
-     d ch                            10u 0 value
+     d xmlIsCombining  pr                  extproc('xmlIsCombining')
+     d                                     like(xmlCint)
+     d ch                                  value like(xmlCuint)
 
-     d xmlIsDigit      pr            10i 0 extproc('xmlIsDigit')
-     d ch                            10u 0 value
+     d xmlIsDigit      pr                  extproc('xmlIsDigit')
+     d                                     like(xmlCint)
+     d ch                                  value like(xmlCuint)
 
-     d xmlIsExtender   pr            10i 0 extproc('xmlIsExtender')
-     d ch                            10u 0 value
+     d xmlIsExtender   pr                  extproc('xmlIsExtender')
+     d                                     like(xmlCint)
+     d ch                                  value like(xmlCuint)
 
      d xmlIsIdeographic...
-     d                 pr            10i 0 extproc('xmlIsIdeographic')
-     d ch                            10u 0 value
+     d                 pr                  extproc('xmlIsIdeographic')
+     d                                     like(xmlCint)
+     d ch                                  value like(xmlCuint)
 
-     d xmlIsPubidChar  pr            10i 0 extproc('xmlIsPubidChar')
-     d ch                            10u 0 value
+     d xmlIsPubidChar  pr                  extproc('xmlIsPubidChar')
+     d                                     like(xmlCint)
+     d ch                                  value like(xmlCuint)
 
       /endif                                                                    XML_CHVALID_H__
diff --git a/os400/libxmlrpg/debugXML.rpgle b/os400/libxmlrpg/debugXML.rpgle
index 5005a2d..81826bc 100644
--- a/os400/libxmlrpg/debugXML.rpgle
+++ b/os400/libxmlrpg/debugXML.rpgle
@@ -10,10 +10,11 @@
       /define DEBUG_XML__
 
       /include "libxmlrpg/xmlversion"
-      /include "libxmlrpg/tree"
 
       /if defined(LIBXML_DEBUG_ENABLED)
 
+      /include "libxmlrpg/xmlTypesC"
+      /include "libxmlrpg/tree"
       /include "libxmlrpg/xpath"
 
       * The standard Dump routines.
@@ -27,31 +28,31 @@
      d                 pr                  extproc('xmlDebugDumpAttr')
      d  output                         *   value                                FILE *
      d  attr                               value like(xmlAttrPtr)
-     d  depth                        10i 0 value
+     d  depth                              value like(xmlCint)
 
      d xmlDebugDumpAttrList...
      d                 pr                  extproc('xmlDebugDumpAttrList')
      d  output                         *   value                                FILE *
      d  attr                               value like(xmlAttrPtr)
-     d  depth                        10i 0 value
+     d  depth                              value like(xmlCint)
 
      d xmlDebugDumpOneNode...
      d                 pr                  extproc('xmlDebugDumpOneNode')
      d  output                         *   value                                FILE *
      d  node                               value like(xmlNodePtr)
-     d  depth                        10i 0 value
+     d  depth                              value like(xmlCint)
 
      d xmlDebugDumpNode...
      d                 pr                  extproc('xmlDebugDumpNode')
      d  output                         *   value                                FILE *
      d  node                               value like(xmlNodePtr)
-     d  depth                        10i 0 value
+     d  depth                              value like(xmlCint)
 
      d xmlDebugDumpNodeList...
      d                 pr                  extproc('xmlDebugDumpNodeList')
      d  output                         *   value                                FILE *
      d  node                               value like(xmlNodePtr)
-     d  depth                        10i 0 value
+     d  depth                              value like(xmlCint)
 
      d xmlDebugDumpDocumentHead...
      d                 pr                  extproc('xmlDebugDumpDocumentHead')
@@ -80,7 +81,8 @@
       ****************************************************************
 
      d xmlDebugCheckDocument...
-     d                 pr            10i 0 extproc('xmlDebugCheckDocument')
+     d                 pr                  extproc('xmlDebugCheckDocument')
+     d                                     like(xmlCint)
      d  output                         *   value                                FILE *
      d  doc                                value like(xmlDocPtr)
 
@@ -94,11 +96,12 @@
      d  output                         *   value                                FILE *
      d  node                               value like(xmlNodePtr)
 
-     d xmlLsCountNode  pr            10i 0 extproc('xmlLsCountNode')
+     d xmlLsCountNode  pr                  extproc('xmlLsCountNode')
+     d                                     like(xmlCint)
      d  node                               value like(xmlNodePtr)
 
      d xmlBoolToText   pr              *   extproc('xmlBoolToText')             const char *
-     d  boolval                      10i 0 value
+     d  boolval                            value like(xmlCint)
 
       ****************************************************************
       *                                                              *
@@ -133,7 +136,7 @@
      d  doc                                like(xmlDocPtr)
      d  node                               like(xmlNodePtr)
      d  pctxt                              like(xmlXPathContextPtr)
-     d  loaded                       10i 0
+     d  loaded                             like(xmlCint)
      d  output                         *                                        FILE *
      d  input                              like(xmlShellReadlineFunc)
 
@@ -152,32 +155,36 @@
 
      d xmlShellPrintXPathError...
      d                 pr                  extproc('xmlShellPrintXPathError')
-     d  errorType                    10i 0 value
+     d  errorType                          value like(xmlCint)
      d  arg                            *   value options(*string)               const char *
 
      d xmlShellPrintXPathResult...
      d                 pr                  extproc('xmlShellPrintXPathResult')
      d  list                               value like(xmlXPathObjectPtr)
 
-     d xmlShellList    pr            10i 0 extproc('xmlShellList')
+     d xmlShellList    pr                  extproc('xmlShellList')
+     d                                     like(xmlCint)
      d  ctxt                               value like(xmlShellCtxtPtr)
      d  arg                            *   value options(*string)               char *
      d  node                               value like(xmlNodePtr)
      d  node2                              value like(xmlNodePtr)
 
-     d xmlShellBase    pr            10i 0 extproc('xmlShellBase')
+     d xmlShellBase    pr                  extproc('xmlShellBase')
+     d                                     like(xmlCint)
      d  ctxt                               value like(xmlShellCtxtPtr)
      d  arg                            *   value options(*string)               char *
      d  node                               value like(xmlNodePtr)
      d  node2                              value like(xmlNodePtr)
 
-     d xmlShellDir     pr            10i 0 extproc('xmlShellDir')
+     d xmlShellDir     pr                  extproc('xmlShellDir')
+     d                                     like(xmlCint)
      d  ctxt                               value like(xmlShellCtxtPtr)
      d  arg                            *   value options(*string)               char *
      d  node                               value like(xmlNodePtr)
      d  node2                              value like(xmlNodePtr)
 
-     d xmlShellLoad    pr            10i 0 extproc('xmlShellLoad')
+     d xmlShellLoad    pr                  extproc('xmlShellLoad')
+     d                                     like(xmlCint)
      d  ctxt                               value like(xmlShellCtxtPtr)
      d  filename                       *   value options(*string)               char *
      d  node                               value like(xmlNodePtr)
@@ -188,19 +195,22 @@
      d                 pr                  extproc('xmlShellPrintNode')
      d  node                               value like(xmlNodePtr)
 
-     d xmlShellCat     pr            10i 0 extproc('xmlShellCat')
+     d xmlShellCat     pr                  extproc('xmlShellCat')
+     d                                     like(xmlCint)
      d  ctxt                               value like(xmlShellCtxtPtr)
      d  arg                            *   value options(*string)               char *
      d  node                               value like(xmlNodePtr)
      d  node2                              value like(xmlNodePtr)
 
-     d xmlShellWrite   pr            10i 0 extproc('xmlShellWrite')
+     d xmlShellWrite   pr                  extproc('xmlShellWrite')
+     d                                     like(xmlCint)
      d  ctxt                               value like(xmlShellCtxtPtr)
      d  filename                       *   value options(*string)               char *
      d  node                               value like(xmlNodePtr)
      d  node2                              value like(xmlNodePtr)
 
-     d xmlShellSave    pr            10i 0 extproc('xmlShellSave')
+     d xmlShellSave    pr                  extproc('xmlShellSave')
+     d                                     like(xmlCint)
      d  ctxt                               value like(xmlShellCtxtPtr)
      d  filename                       *   value options(*string)               char *
      d  node                               value like(xmlNodePtr)
@@ -209,20 +219,23 @@
 
       /if defined(LIBXML_VALID_ENABLED)
      d xmlShellValidate...
-     d                 pr            10i 0 extproc('xmlShellValidate')
+     d                 pr                  extproc('xmlShellValidate')
+     d                                     like(xmlCint)
      d  ctxt                               value like(xmlShellCtxtPtr)
      d  dtd                            *   value options(*string)               char *
      d  node                               value like(xmlNodePtr)
      d  node2                              value like(xmlNodePtr)
       /endif                                                                    LIBXML_VALID_ENABLED
 
-     d xmlShellDu      pr            10i 0 extproc('xmlShellDu')
+     d xmlShellDu      pr                  extproc('xmlShellDu')
+     d                                     like(xmlCint)
      d  ctxt                               value like(xmlShellCtxtPtr)
      d  arg                            *   value options(*string)               char *
      d  tree                               value like(xmlNodePtr)
      d  node2                              value like(xmlNodePtr)
 
-     d xmlShellPwd     pr            10i 0 extproc('xmlShellPwd')
+     d xmlShellPwd     pr                  extproc('xmlShellPwd')
+     d                                     like(xmlCint)
      d  ctxt                               value like(xmlShellCtxtPtr)
      d  buffer                         *   value options(*string)               char *
      d  node                               value like(xmlNodePtr)
diff --git a/os400/libxmlrpg/dict.rpgle b/os400/libxmlrpg/dict.rpgle
index bcb6576..c061e4c 100644
--- a/os400/libxmlrpg/dict.rpgle
+++ b/os400/libxmlrpg/dict.rpgle
@@ -9,18 +9,19 @@
       /if not defined(XML_DICT_H__)
       /define XML_DICT_H__
 
-      /include "libxmlrpg/xmlversion"
-      /include "libxmlrpg/xmlTypesC"
-      /include "libxmlrpg/tree"
-
       * The dictionary.
 
      d xmlDictPtr      s               *   based(######typedef######)
 
+      /include "libxmlrpg/xmlversion"
+      /include "libxmlrpg/xmlTypesC"
+      /include "libxmlrpg/tree"
+
       * Initializer
 
      d xmlInitializeDict...
-     d                 pr            10i 0 extproc('xmlInitializeDict')
+     d                 pr                  extproc('xmlInitializeDict')
+     d                                     like(xmlCint)
 
       * Constructor and destructor.
 
@@ -44,7 +45,8 @@
      d  sub                                value like(xmlDictPtr)
 
      d xmlDictReference...
-     d                 pr            10i 0 extproc('xmlDictGetReference')
+     d                 pr                  extproc('xmlDictGetReference')
+     d                                     like(xmlCint)
      d  dict                               value like(xmlDictPtr)
 
      d xmlDictFree     pr                  extproc('xmlDictFree')
@@ -55,23 +57,25 @@
      d xmlDictLookup   pr              *   extproc('xmlDictLookup')             const xmlChar *
      d  dict                               value like(xmlDictPtr)
      d  name                           *   value options(*string)               const xmlChar *
-     d  len                          10i 0 value
+     d  len                                value like(xmlCint)
 
      d xmlDictExists   pr              *   extproc('xmlDictExists')             const xmlChar *
      d  dict                               value like(xmlDictPtr)
      d  name                           *   value options(*string)               const xmlChar *
-     d  len                          10i 0 value
+     d  len                                value like(xmlCint)
 
      d xmlDictQLookup  pr              *   extproc('xmlDictQLookup')            const xmlChar *
      d  dict                               value like(xmlDictPtr)
      d  name                           *   value options(*string)               const xmlChar *
      d  name                           *   value options(*string)               const xmlChar *
 
-     d xmlDictOwns     pr            10i 0 extproc('xmlDictOwns')
+     d xmlDictOwns     pr                  extproc('xmlDictOwns')
+     d                                     like(xmlCint)
      d  dict                               value like(xmlDictPtr)
      d  str                            *   value options(*string)               const xmlChar *
 
-     d xmlDictSize     pr            10i 0 extproc('xmlDictSize')
+     d xmlDictSize     pr                  extproc('xmlDictSize')
+     d                                     like(xmlCint)
      d  dict                               value like(xmlDictPtr)
 
       * Cleanup function
diff --git a/os400/libxmlrpg/encoding.rpgle b/os400/libxmlrpg/encoding.rpgle
index c0ed7e6..8153f3c 100644
--- a/os400/libxmlrpg/encoding.rpgle
+++ b/os400/libxmlrpg/encoding.rpgle
@@ -21,6 +21,7 @@
       /define XML_CHAR_ENCODING_H__
 
       /include "libxmlrpg/xmlversion"
+      /include "libxmlrpg/xmlTypesC"
 
       * xmlCharEncoding:
       *
@@ -43,7 +44,8 @@
       * the specific UTF-16LE and UTF-16BE are present.
 
      d xmlCharEncoding...
-     d                 s             10i 0 based(######typedef######)           enum
+     d                 s                   based(######typedef######)
+     d                                     like(xmlCenum)
      d  XML_CHAR_ENCODING_ERROR...                                              No encoding detected
      d                 c                   -1
      d  XML_CHAR_ENCODING_NONE...                                               No encoding detected
@@ -200,12 +202,14 @@
       * Interfaces for encoding names and aliases.
 
      d xmlAddEncodingAlias...
-     d                 pr            10i 0 extproc('xmlAddEncodingAlias')
+     d                 pr                  extproc('xmlAddEncodingAlias')
+     d                                     like(xmlCint)
      d  name                           *   value options(*string)               const char *
      d  alias                          *   value options(*string)               const char *
 
      d xmlDelEncodingAlias...
-     d                 pr            10i 0 extproc('xmlDelEncodingAlias')
+     d                 pr                  extproc('xmlDelEncodingAlias')
+     d                                     like(xmlCint)
      d  alias                          *   value options(*string)               const char *
 
      d xmlGetEncodingAlias...
@@ -230,45 +234,51 @@
      d                 pr                  extproc('xmlDetectCharEncoding')
      d                                     like(xmlCharEncoding)
      d  in                             *   value options(*string)               const unsigned char*
-     d  len                          10i 0 value
+     d  len                                value like(xmlCint)
 
      d xmlCharEncOutFunc...
-     d                 pr            10i 0 extproc('xmlCharEncOutFunc')
+     d                 pr                  extproc('xmlCharEncOutFunc')
+     d                                     like(xmlCint)
      d  handler                            likeds(xmlCharEncodingHandler)
      d  out                                value like(xmlBufferPtr)
      d  in                                 value like(xmlBufferPtr)
 
      d xmlCharEncInFunc...
-     d                 pr            10i 0 extproc('xmlCharEncInFunc')
+     d                 pr                  extproc('xmlCharEncInFunc')
+     d                                     like(xmlCint)
      d  handler                            likeds(xmlCharEncodingHandler)
      d  out                                value like(xmlBufferPtr)
      d  in                                 value like(xmlBufferPtr)
 
      d xmlCharEncFirstLine...
-     d                 pr            10i 0 extproc('xmlCharEncFirstLine')
+     d                 pr                  extproc('xmlCharEncFirstLine')
+     d                                     like(xmlCint)
      d  handler                            likeds(xmlCharEncodingHandler)
      d  out                                value like(xmlBufferPtr)
      d  in                                 value like(xmlBufferPtr)
 
      d xmlCharEncCloseFunc...
-     d                 pr            10i 0 extproc('xmlCharEncCloseFunc')
+     d                 pr                  extproc('xmlCharEncCloseFunc')
+     d                                     like(xmlCint)
      d  handler                            likeds(xmlCharEncodingHandler)
 
       * Export a few useful functions
 
       /if defined(LIBXML_OUTPUT_ENABLED)
-     d UTF8Toisolat1   pr            10i 0 extproc('UTF8Toisolat1')
+     d UTF8Toisolat1   pr                  extproc('UTF8Toisolat1')
+     d                                     like(xmlCint)
      d  out                       65535    options(*varsize)                    unsigned char (*)
-     d  outlen                       10i 0
+     d  outlen                             like(xmlCint)
      d  in                             *   value options(*string)               const unsigned char*
-     d  inlen                        10i 0
+     d  inlen                              like(xmlCint)
 
       /endif                                                                    LIBXML_OUTPUT_ENABLD
 
-     d isolat1ToUTF8   pr            10i 0 extproc('isolat1ToUTF8')
+     d isolat1ToUTF8   pr                  extproc('isolat1ToUTF8')
+     d                                     like(xmlCint)
      d  out                       65535    options(*varsize)                    unsigned char (*)
-     d  outlen                       10i 0
+     d  outlen                             like(xmlCint)
      d  in                             *   value options(*string)               const unsigned char*
-     d  inlen                        10i 0
+     d  inlen                              like(xmlCint)
 
       /endif                                                                    XML_CHAR_ENCODING_H
diff --git a/os400/libxmlrpg/entities.rpgle b/os400/libxmlrpg/entities.rpgle
index 8d97915..eeec1b6 100644
--- a/os400/libxmlrpg/entities.rpgle
+++ b/os400/libxmlrpg/entities.rpgle
@@ -10,11 +10,13 @@
       /define XML_ENTITIES_H__
 
       /include "libxmlrpg/xmlversion"
+      /include "libxmlrpg/xmlTypesC"
       /include "libxmlrpg/tree"
 
       * The different valid entity types.
 
-     d xmlEntityType   s             10i 0 based(######typedef######)           enum
+     d xmlEntityType   s                   based(######typedef######)
+     d                                     like(xmlCenum)
      d  XML_INTERNAL_GENERAL_ENTITY...
      d                 c                   1
      d  XML_EXTERNAL_GENERAL_PARSED_ENTITY...
@@ -44,14 +46,14 @@
      d  doc                                like(xmlDocPtr)                      containing document
      d  orig                           *                                        xmlChar *
      d  content                        *                                        xmlChar *
-     d  length                       10i 0                                      content length
+     d  length                             like(xmlCint)                        content length
      d  etype                              like(xmlEntityType)                  The entity type
      d  ExternalID                     *                                        const xmlChar *
      d  SystemlID                      *                                        const xmlChar *
      d  nexte                              like(xmlEntityPtr)                   unused
      d  URI                            *                                        const xmlChar *
-     d  owner                        10i 0                                      Owns children ?
-     d  checked                      10i 0                                      Content checked ?
+     d  owner                              like(xmlCint)                        Owns children ?
+     d  checked                            like(xmlCint)                        Content checked ?
 
       * All entities are stored in an hash table.
       * There is 2 separate hash tables for global and parameter entities.
@@ -71,7 +73,7 @@
      d                                     like(xmlEntityPtr)
      d  doc                                value like(xmlDocPtr)
      d  name                           *   value options(*string)               const xmlChar *
-     d  type                         10i 0 value
+     d  type                               value like(xmlCint)
      d  ExternalID                     *   value options(*string)               const xmlChar *
      d  SystemID                       *   value options(*string)               const xmlChar *
      d  content                        *   value options(*string)               const xmlChar *
@@ -81,7 +83,7 @@
      d                                     like(xmlEntityPtr)
      d  doc                                value like(xmlDocPtr)
      d  name                           *   value options(*string)               const xmlChar *
-     d  type                         10i 0 value
+     d  type                               value like(xmlCint)
      d  ExternalID                     *   value options(*string)               const xmlChar *
      d  SystemID                       *   value options(*string)               const xmlChar *
      d  content                        *   value options(*string)               const xmlChar *
@@ -91,7 +93,7 @@
      d                                     like(xmlEntityPtr)
      d  doc                                value like(xmlDocPtr)
      d  name                           *   value options(*string)               const xmlChar *
-     d  type                         10i 0 value
+     d  type                               value like(xmlCint)
      d  ExternalID                     *   value options(*string)               const xmlChar *
      d  SystemID                       *   value options(*string)               const xmlChar *
      d  content                        *   value options(*string)               const xmlChar *
diff --git a/os400/libxmlrpg/globals.rpgle b/os400/libxmlrpg/globals.rpgle
index e51182f..3fe3a9b 100644
--- a/os400/libxmlrpg/globals.rpgle
+++ b/os400/libxmlrpg/globals.rpgle
@@ -13,6 +13,7 @@
       /define XML_GLOBALS_H
 
       /include "libxmlrpg/xmlversion"
+      /include "libxmlrpg/xmlTypesC"
       /include "libxmlrpg/parser"
       /include "libxmlrpg/xmlerror"
       /include "libxmlrpg/SAX"
@@ -112,31 +113,31 @@
      d  xmlGenericErrorContext...
      d                                 *                                        void *
      d  oldXMLWDcompatibility...
-     d                               10i 0
+     d                                     like(xmlCint)
      d  xmlBufferAllocScheme...
      d                                     like(xmlBufferAllocationScheme)
      d  xmlDefaultBufferSize...
-     d                               10i 0
+     d                                     like(xmlCint)
      d  xmlSubstituteEntitiesDefaultValue...
-     d                               10i 0
+     d                                     like(xmlCint)
      d  xmlDoValidityCheckingDefaultValue...
-     d                               10i 0
+     d                                     like(xmlCint)
      d  xmlGetWarningsDefaultValue...
-     d                               10i 0
+     d                                     like(xmlCint)
      d  xmlKeepBlanksDefaultValue...
-     d                               10i 0
+     d                                     like(xmlCint)
      d  xmlLineNumbersDefaultValue...
-     d                               10i 0
+     d                                     like(xmlCint)
      d  xmlLoadExtDtdDefaultValue...
-     d                               10i 0
+     d                                     like(xmlCint)
      d  xmlParserDebugEntities...
-     d                               10i 0
+     d                                     like(xmlCint)
      d  xmlPedanticParserDefaultValue...
-     d                               10i 0
+     d                                     like(xmlCint)
      d  xmlSaveNoEmptyTags...
-     d                               10i 0
+     d                                     like(xmlCint)
      d  xmlIndentTreeOutput...
-     d                               10i 0
+     d                                     like(xmlCint)
      d  xmlTreeIndentString...
      d                                 *                                        const char *
      d  xmlRegisterNodeDefaultValue...
@@ -244,13 +245,14 @@
      d  value                              value likeds(xmlError)
 
      d get_oldXMLWDcompatibility...
-     d                 pr            10i 0 extproc(
+     d                 pr                  extproc(
      d                                       '__get_oldXMLWDcompatibility')
+     d                                     like(xmlCint)
 
      d set_oldXMLWDcompatibility...
      d                 pr                  extproc(
      d                                       '__set_oldXMLWDcompatibility')
-     d  value                        10i 0 value
+     d  value                              value like(xmlCint)
 
      d get_xmlBufferAllocScheme...
      d                 pr                  extproc('__get_xmlBufferAllocScheme')
@@ -266,15 +268,17 @@
      d  v                                  value like(xmlBufferAllocationScheme)
 
      d get_xmlDefaultBufferSize...
-     d                 pr            10i 0 extproc('__get_xmlDefaultBufferSize')
+     d                 pr                  extproc('__get_xmlDefaultBufferSize')
+     d                                     like(xmlCint)
 
      d set_xmlDefaultBufferSize...
      d                 pr                  extproc('__set_xmlDefaultBufferSize')
-     d  value                        10i 0 value
+     d  value                              value like(xmlCint)
 
      d xmlThrDefDefaultBufferSize...
-     d                 pr            10i 0 extproc('xmlThrDefDefaultBufferSize')
-     d  v                            10i 0 value
+     d                 pr                  extproc('xmlThrDefDefaultBufferSize')
+     d                                     like(xmlCint)
+     d  v                                  value like(xmlCint)
 
      d get_xmlDefaultSAXHandler...
      d                 pr                  extproc('__get_xmlDefaultSAXHandler')
@@ -293,18 +297,20 @@
      d  value                              value likeds(xmlSAXLocator)
 
      d get_xmlDoValidityCheckingDefaultValue...
-     d                 pr            10i 0 extproc('__get_xmlDoValidity+
+     d                 pr                  extproc('__get_xmlDoValidity+
      d                                       CheckingDefaultValue')
+     d                                     like(xmlCint)
 
      d set_xmlDoValidityCheckingDefaultValue...
      d                 pr                  extproc('__set_xmlDoValidity+
      d                                       CheckingDefaultValue')
-     d  value                        10i 0 value
-    
+     d  value                              value like(xmlCint)
+
      d xmlThrDefDoValidityCheckingDefaultValue...
-     d                 pr            10i 0 extproc('xmlThrDefDoValidity+
+     d                 pr                  extproc('xmlThrDefDoValidity+
      d                                       CheckingDefaultValue')
-     d  v                            10i 0 value
+     d                                     like(xmlCint)
+     d  v                                  value like(xmlCint)
 
      d get_xmlGenericError...
      d                 pr                  extproc('__get_xmlGenericError')
@@ -325,7 +331,7 @@
      d xmlStructuredError...
      d                 pr                  extproc('__call_xmlStructuredError')
      d  userData                       *   value options(*string)               void *
-     d  error                              value like(xmlErrorPtr) 
+     d  error                              value like(xmlErrorPtr)
 
      d get_xmlGenericErrorContext...
      d                 pr                  extproc(
@@ -348,29 +354,33 @@
      d  value                          *   value options(*string)               void *
 
      d get_xmlGetWarningsDefaultValue...
-     d                 pr            10i 0 extproc(
+     d                 pr                  extproc(
      d                                       '__get_xmlGetWarningsDefaultValue')
+     d                                     like(xmlCint)
 
      d set_xmlGetWarningsDefaultValue...
      d                 pr                  extproc(
      d                                       '__set_xmlGetWarningsDefaultValue')
-     d  value                        10i 0 value
+     d  value                              value like(xmlCint)
 
      d xmlThrDefGetWarningsDefaultValue...
-     d                 pr            10i 0 extproc(
+     d                 pr                  extproc(
      d                                       'xmlThrDefGetWarningsDefaultValue')
-     d  v                            10i 0 value
+     d                                     like(xmlCint)
+     d  v                                  value like(xmlCint)
 
      d get_xmlIndentTreeOutput...
-     d                 pr            10i 0 extproc('__get_xmlIndentTreeOutput')
+     d                 pr                  extproc('__get_xmlIndentTreeOutput')
+     d                                     like(xmlCint)
 
      d set_xmlIndentTreeOutput...
-     d                 pr                   extproc('__set_xmlIndentTreeOutput')
-     d  value                        10i 0 value
+     d                 pr                  extproc('__set_xmlIndentTreeOutput')
+     d  value                              value like(xmlCint)
 
      d xmlThrDefIndentTreeOutput...
-     d                 pr            10i 0 extproc('xmlThrDefIndentTreeOutput')
-     d  v                            10i 0 value
+     d                 pr                  extproc('xmlThrDefIndentTreeOutput')
+     d                                     like(xmlCint)
+     d  v                                  value like(xmlCint)
 
      d get_xmlTreeIndentString...
      d                 pr              *   extproc('__get_xmlTreeIndentString') const char *
@@ -378,66 +388,74 @@
      d set_xmlTreeIndentString...
      d                 pr                  extproc('__set_xmlTreeIndentString')
      d  value                          *   value options(*string)               const char *
- 
+
      d xmlThrDefTreeIndentString...
      d                 pr              *   extproc('xmlThrDefTreeIndentString') const char *
      d  v                              *   value options(*string)               const char *
 
      d get_xmlKeepBlanksDefaultValue...
-     d                 pr            10i 0 extproc(
-     d                                       '__get_xmlKeepBlanksDefaultValue') 
+     d                 pr                  extproc(
+     d                                       '__get_xmlKeepBlanksDefaultValue')
+     d                                     like(xmlCint)
 
      d set_xmlKeepBlanksDefaultValue...
      d                 pr                  extproc(
-     d                                       '__set_xmlKeepBlanksDefaultValue') 
-     d  value                        10i 0 value
+     d                                       '__set_xmlKeepBlanksDefaultValue')
+     d  value                              value like(xmlCint)
 
      d xmlThrDefKeepBlanksDefaultValue...
-     d                 pr            10i 0 extproc(
+     d                 pr                  extproc(
      d                                       'xmlThrDefKeepBlanksDefaultValue')
-     d  v                            10i 0 value
+     d                                     like(xmlCint)
+     d  v                                  value like(xmlCint)
 
      d get_xmlLineNumbersDefaultValue...
-     d                 pr            10i 0 extproc(
+     d                 pr                  extproc(
      d                                       '__get_xmlLineNumbersDefaultValue')
+     d                                     like(xmlCint)
 
      d set_xmlLineNumbersDefaultValue...
      d                 pr                  extproc(
      d                                       '__set_xmlLineNumbersDefaultValue')
-     d  value                        10i 0 value
+     d  value                              value like(xmlCint)
 
      d xmlThrDefLineNumbersDefaultValue...
-     d                 pr            10i 0 extproc(
+     d                 pr                  extproc(
      d                                       'xmlThrDefLineNumbersDefaultValue')
-     d  v                            10i 0 value
+     d                                     like(xmlCint)
+     d  v                                  value like(xmlCint)
 
      d get_xmlLoadExtDtdDefaultValue...
-     d                 pr            10i 0 extproc(
+     d                 pr                  extproc(
      d                                       '__get_xmlLoadExtDtdDefaultValue')
+     d                                     like(xmlCint)
 
      d set_xmlLoadExtDtdDefaultValue...
      d                 pr                  extproc(
      d                                       '__set_xmlLoadExtDtdDefaultValue')
-     d  value                        10i 0 value
+     d  value                              value like(xmlCint)
 
      d xmlThrDefLoadExtDtdDefaultValue...
-     d                 pr            10i 0 extproc(
+     d                 pr                  extproc(
      d                                       'xmlThrDefLoadExtDtdDefaultValue')
-     d  v                            10i 0 value
+     d                                     like(xmlCint)
+     d  v                                  value like(xmlCint)
 
      d get_xmlParserDebugEntities...
-     d                 pr            10i 0 extproc(
+     d                 pr                  extproc(
      d                                       '__get_xmlParserDebugEntities')
+     d                                     like(xmlCint)
 
      d set_xmlParserDebugEntities...
      d                 pr                  extproc(
      d                                       '__set_xmlParserDebugEntities')
-     d  value                        10i 0 value
+     d  value                              value like(xmlCint)
 
      d xmlThrDefParserDebugEntities...
-     d                 pr            10i 0 extproc(
+     d                 pr                  extproc(
      d                                       'xmlThrDefParserDebugEntities')
-     d  v                            10i 0 value
+     d                                     like(xmlCint)
+     d  v                                  value like(xmlCint)
 
      d get_xmlParserVersion...
      d                 pr              *   extproc('__get_xmlParserVersion')    const char *
@@ -447,43 +465,49 @@
      d  value                          *   value options(*string)               const char *
 
      d get_xmlPedanticParserDefaultValue...
-     d                 pr            10i 0 extproc('__get_xmlPedantic+
+     d                 pr                  extproc('__get_xmlPedantic+
      d                                       ParserDefaultValue')
+     d                                     like(xmlCint)
 
      d set_xmlPedanticParserDefaultValue...
      d                 pr                  extproc('__set_xmlPedantic+
      d                                       ParserDefaultValue')
-     d  value                        10i 0 value
+     d  value                              value like(xmlCint)
 
      d xmlThrDefPedanticParserDefaultValue...
-     d                 pr            10i 0 extproc('xmlThrDefPedantic+
+     d                 pr                  extproc('xmlThrDefPedantic+
      d                                       ParserDefaultValue')
-     d  v                            10i 0 value
+     d                                     like(xmlCint)
+     d  v                                  value like(xmlCint)
 
      d get_xmlSaveNoEmptyTags...
-     d                 pr            10i 0 extproc('__get_xmlSaveNoEmptyTags')
+     d                 pr                  extproc('__get_xmlSaveNoEmptyTags')
+     d                                     like(xmlCint)
 
      d set_xmlSaveNoEmptyTags...
      d                 pr                  extproc('__set_xmlSaveNoEmptyTags')
-     d  value                        10i 0 value
+     d  value                              value like(xmlCint)
 
      d xmlThrDefSaveNoEmptyTags...
-     d                 pr            10i 0 extproc('xmlThrDefSaveNoEmptyTags')
-     d  v                            10i 0 value
+     d                 pr                  extproc('xmlThrDefSaveNoEmptyTags')
+     d                                     like(xmlCint)
+     d  v                                  value like(xmlCint)
 
      d get_xmlSubstituteEntitiesDefaultValue...
-     d                 pr            10i 0 extproc('__get_xmlSubstitute+
+     d                 pr                  extproc('__get_xmlSubstitute+
      d                                       EntitiesDefaultValue')
+     d                                     like(xmlCint)
 
      d set_xmlSubstituteEntitiesDefaultValue...
      d                 pr                  extproc('__set_xmlSubstitute+
      d                                       EntitiesDefaultValue')
-     d  value                        10i 0 value
+     d  value                              value like(xmlCint)
 
      d xmlThrDefSubstituteEntitiesDefaultValue...
-     d                 pr            10i 0 extproc('xmlThrDefSubstitute+
+     d                 pr                  extproc('xmlThrDefSubstitute+
      d                                       EntitiesDefaultValue')
-     d  v                            10i 0 value
+     d                                     like(xmlCint)
+     d  v                                  value like(xmlCint)
 
      d get_xmlRegisterNodeDefaultValue...
      d                 pr                  extproc('__get_xmlRegisterNode+
@@ -552,6 +576,6 @@
      d                                     like(xmlOutputBufferPtr)
      d  URI                            *   value options(*string)               const char *
      d  encoder                            value like(xmlCharEncodingHandlerPtr)
-     d  compression                  10i 0 value
+     d  compression                        value like(xmlCint)
 
       /endif                                                                    XML_GLOBALS_H
diff --git a/os400/libxmlrpg/hash.rpgle b/os400/libxmlrpg/hash.rpgle
index 867f98f..b2169df 100644
--- a/os400/libxmlrpg/hash.rpgle
+++ b/os400/libxmlrpg/hash.rpgle
@@ -9,6 +9,8 @@
       /if not defined(XML_HASH_H__)
       /define XML_HASH_H__
 
+      /include "libxmlrpg/xmlTypesC"
+
       * The hash table.
 
      d xmlHashTablePtr...
@@ -68,12 +70,12 @@
 
      d xmlHashCreate   pr                  extproc('xmlHashCreate')
      d                                     like(xmlHashTablePtr)
-     d  size                         10i 0 value
+     d  size                               value like(xmlCint)
 
      d xmlHashCreateDict...
      d                 pr                  extproc('xmlHashCreateDict')
      d                                     like(xmlHashTablePtr)
-     d  size                         10i 0 value
+     d  size                               value like(xmlCint)
      d  dict                               value like(xmlDictPtr)
 
      d xmlHashFree     pr                  extproc('xmlHashFree')
@@ -83,27 +85,31 @@
       * Add a new entry to the hash table.
 
      d xmlHashAddEntry...
-     d                 pr            10i 0 extproc('xmlHashAddEntry')
+     d                 pr                  extproc('xmlHashAddEntry')
+     d                                     like(xmlCint)
      d  table                              value like(xmlHashTablePtr)
      d  name                           *   value options(*string)               const xmlChar *
      d  userdata                       *   value options(*string)               void *
 
      d xmlHashUpdateEntry...
-     d                 pr            10i 0 extproc('xmlHashUpdateEntry')
+     d                 pr                  extproc('xmlHashUpdateEntry')
+     d                                     like(xmlCint)
      d  table                              value like(xmlHashTablePtr)
      d  name                           *   value options(*string)               const xmlChar *
      d  userdata                       *   value options(*string)               void *
      d  f                                  value like(xmlHashDeallocator)
 
      d xmlHashAddEntry2...
-     d                 pr            10i 0 extproc('xmlHashAddEntry2')
+     d                 pr                  extproc('xmlHashAddEntry2')
+     d                                     like(xmlCint)
      d  table                              value like(xmlHashTablePtr)
      d  name                           *   value options(*string)               const xmlChar *
      d  name2                          *   value options(*string)               const xmlChar *
      d  userdata                       *   value options(*string)               void *
 
      d xmlHashUpdateEntry2...
-     d                 pr            10i 0 extproc('xmlHashUpdateEntry2')
+     d                 pr                  extproc('xmlHashUpdateEntry2')
+     d                                     like(xmlCint)
      d  table                              value like(xmlHashTablePtr)
      d  name                           *   value options(*string)               const xmlChar *
      d  name2                          *   value options(*string)               const xmlChar *
@@ -111,7 +117,8 @@
      d  f                                  value like(xmlHashDeallocator)
 
      d xmlHashAddEntry3...
-     d                 pr            10i 0 extproc('xmlHashAddEntry3')
+     d                 pr                  extproc('xmlHashAddEntry3')
+     d                                     like(xmlCint)
      d  table                              value like(xmlHashTablePtr)
      d  name                           *   value options(*string)               const xmlChar *
      d  name2                          *   value options(*string)               const xmlChar *
@@ -119,7 +126,8 @@
      d  userdata                       *   value options(*string)               void *
 
      d xmlHashUpdateEntry3...
-     d                 pr            10i 0 extproc('xmlHashUpdateEntry3')
+     d                 pr                  extproc('xmlHashUpdateEntry3')
+     d                                     like(xmlCint)
      d  table                              value like(xmlHashTablePtr)
      d  name                           *   value options(*string)               const xmlChar *
      d  name2                          *   value options(*string)               const xmlChar *
@@ -130,20 +138,23 @@
       * Remove an entry from the hash table.
 
      d xmlHashRemoveEntry...
-     d                 pr            10i 0 extproc('xmlHashRemoveEntry')
+     d                 pr                  extproc('xmlHashRemoveEntry')
+     d                                     like(xmlCint)
      d  table                              value like(xmlHashTablePtr)
      d  name                           *   value options(*string)               const xmlChar *
      d  f                                  value like(xmlHashDeallocator)
 
      d xmlHashRemoveEntry2...
-     d                 pr            10i 0 extproc('xmlHashRemoveEntry2')
+     d                 pr                  extproc('xmlHashRemoveEntry2')
+     d                                     like(xmlCint)
      d  table                              value like(xmlHashTablePtr)
      d  name                           *   value options(*string)               const xmlChar *
      d  name2                          *   value options(*string)               const xmlChar *
      d  f                                  value like(xmlHashDeallocator)
 
      d xmlHashRemoveEntry3...
-     d                 pr            10i 0 extproc('xmlHashRemoveEntry3')
+     d                 pr                  extproc('xmlHashRemoveEntry3')
+     d                                     like(xmlCint)
      d  table                              value like(xmlHashTablePtr)
      d  name                           *   value options(*string)               const xmlChar *
      d  name2                          *   value options(*string)               const xmlChar *
@@ -197,7 +208,8 @@
      d  table                              value like(xmlHashTablePtr)
      d  f                                  value like(xmlHashCopier)
 
-     d xmlHashSize     pr            10i 0 extproc('xmlHashSize')
+     d xmlHashSize     pr                  extproc('xmlHashSize')
+     d                                     like(xmlCint)
      d  table                              value like(xmlHashTablePtr)
 
      d xmlHashScan     pr                  extproc('xmlHashScan')
diff --git a/os400/libxmlrpg/list.rpgle b/os400/libxmlrpg/list.rpgle
index c62fcbd..ce2fa1c 100644
--- a/os400/libxmlrpg/list.rpgle
+++ b/os400/libxmlrpg/list.rpgle
@@ -10,6 +10,7 @@
       /define XML_LINK_INCLUDE__
 
       /include "libxmlrpg/xmlversion"
+      /include "libxmlrpg/xmlTypesC"
 
      d xmlLinkPtr      s               *   based(######typedef######)
 
@@ -68,33 +69,39 @@
      d  l                                  value like(xmlListPtr)
      d  data                           *   value                                void *
 
-     d xmlListInsert   pr            10i 0 extproc('xmlListInsert')
+     d xmlListInsert   pr                  extproc('xmlListInsert')
+     d                                     like(xmlCint)
      d  l                                  value like(xmlListPtr)
      d  data                           *   value                                void *
 
-     d xmlListAppend   pr            10i 0 extproc('xmlListAppend')
+     d xmlListAppend   pr                  extproc('xmlListAppend')
+     d                                     like(xmlCint)
      d  l                                  value like(xmlListPtr)
      d  data                           *   value                                void *
 
      d xmlListRemoveFirst...
-     d                 pr            10i 0 extproc('xmlListRemoveFirst')
+     d                 pr                  extproc('xmlListRemoveFirst')
+     d                                     like(xmlCint)
      d  l                                  value like(xmlListPtr)
      d  data                           *   value                                void *
 
      d xmlListRemoveLast...
-     d                 pr            10i 0 extproc('xmlListRemoveLast')
+     d                 pr                  extproc('xmlListRemoveLast')
+     d                                     like(xmlCint)
      d  l                                  value like(xmlListPtr)
      d  data                           *   value                                void *
 
      d xmlListRemoveAll...
-     d                 pr            10i 0 extproc('xmlListRemoveAll')
+     d                 pr                  extproc('xmlListRemoveAll')
+     d                                     like(xmlCint)
      d  l                                  value like(xmlListPtr)
      d  data                           *   value                                void *
 
      d xmlListClear    pr                  extproc('xmlListClear')
      d  l                                  value like(xmlListPtr)
 
-     d xmlListEmpty    pr            10i 0 extproc('xmlListEmpty')
+     d xmlListEmpty    pr                  extproc('xmlListEmpty')
+     d                                     like(xmlCint)
      d  l                                  value like(xmlListPtr)
 
      d xmlListFront    pr                  extproc('xmlListFront')
@@ -105,7 +112,8 @@
      d                                     like(xmlLinkPtr)
      d  l                                  value like(xmlListPtr)
 
-     d xmlListSize     pr            10i 0 extproc('xmlListSize')
+     d xmlListSize     pr                  extproc('xmlListSize')
+     d                                     like(xmlCint)
      d  l                                  value like(xmlListPtr)
 
      d xmlListPopFront...
@@ -117,12 +125,14 @@
      d  l                                  value like(xmlListPtr)
 
      d xmlListPushFront...
-     d                 pr            10i 0 extproc('xmlListPushFront')
+     d                 pr                  extproc('xmlListPushFront')
+     d                                     like(xmlCint)
      d  l                                  value like(xmlListPtr)
      d  data                           *   value                                void *
 
      d xmlListPushBack...
-     d                 pr            10i 0 extproc('xmlListPushBack')
+     d                 pr                  extproc('xmlListPushBack')
+     d                                     like(xmlCint)
      d  l                                  value like(xmlListPtr)
      d  data                           *   value                                void *
 
@@ -153,7 +163,8 @@
      d                                     like(xmlListPtr)
      d  old                                value like(xmlListPtr)
 
-     d xmlListCopy     pr            10i 0 extproc('xmlListCopy')
+     d xmlListCopy     pr                  extproc('xmlListCopy')
+     d                                     like(xmlCint)
      d  cur                                value like(xmlListPtr)
      d  old                                value like(xmlListPtr)               const
 
diff --git a/os400/libxmlrpg/nanoftp.rpgle b/os400/libxmlrpg/nanoftp.rpgle
index d8d5ef9..ac4f2aa 100644
--- a/os400/libxmlrpg/nanoftp.rpgle
+++ b/os400/libxmlrpg/nanoftp.rpgle
@@ -13,6 +13,8 @@
 
       /if defined(LIBXML_FTP_ENABLED)
 
+      /include "libxmlrpg/xmlTypesC"
+
      d INVALID_SOCKET  c                   -1
 
       * ftpListCallback:
@@ -67,7 +69,7 @@
      d xmlNanoFTPConnectTo...
      d                 pr              *   extproc('xmlNanoFTPConnectTo')       void *
      d  server                         *   value options(*string)               const char *
-     d  port                         10i 0 value
+     d  port                               value like(xmlCint)
 
       * Opening/closing session connections.
 
@@ -75,14 +77,17 @@
      d  URL                            *   value options(*string)               const char *
 
      d xmlNanoFTPConnect...
-     d                 pr            10i 0 extproc('xmlNanoFTPConnect')
+     d                 pr                  extproc('xmlNanoFTPConnect')
+     d                                     like(xmlCint)
      d  ctx                            *   value                                void *
 
      d xmlNanoFTPClose...
-     d                 pr            10i 0 extproc('xmlNanoFTPClose')
+     d                 pr                  extproc('xmlNanoFTPClose')
+     d                                     like(xmlCint)
      d  ctx                            *   value                                void *
 
-     d xmlNanoFTPQuit  pr            10i 0 extproc('xmlNanoFTPQuit')
+     d xmlNanoFTPQuit  pr                  extproc('xmlNanoFTPQuit')
+     d                                     like(xmlCint)
      d  ctx                            *   value                                void *
 
      d xmlNanoFTPScanProxy...
@@ -92,65 +97,76 @@
      d xmlNanoFTPProxy...
      d                 pr                  extproc('xmlNanoFTPProxy')
      d  host                           *   value options(*string)               const char *
-     d  port                         10i 0 value
+     d  port                               value like(xmlCint)
      d  user                           *   value options(*string)               const char *
      d  passwd                         *   value options(*string)               const char *
-     d  type                         10i 0 value
+     d  type                               value like(xmlCint)
 
      d xmlNanoFTPUpdateURL...
-     d                 pr            10i 0 extproc('xmlNanoFTPUpdateURL')
+     d                 pr                  extproc('xmlNanoFTPUpdateURL')
+     d                                     like(xmlCint)
      d  ctx                            *   value                                void *
      d  URL                            *   value options(*string)               const char *
 
       * Rather internal commands.
 
      d xmlNanoFTPGetResponse...
-     d                 pr            10i 0 extproc('xmlNanoFTPGetResponse')
+     d                 pr                  extproc('xmlNanoFTPGetResponse')
+     d                                     like(xmlCint)
      d  ctx                            *   value                                void *
 
      d xmlNanoFTPCheckResponse...
-     d                 pr            10i 0 extproc('xmlNanoFTPCheckResponse')
+     d                 pr                  extproc('xmlNanoFTPCheckResponse')
+     d                                     like(xmlCint)
      d  ctx                            *   value                                void *
 
       * CD/DIR/GET handlers.
 
-     d xmlNanoFTPCwd   pr            10i 0 extproc('xmlNanoFTPCwd')
+     d xmlNanoFTPCwd   pr                  extproc('xmlNanoFTPCwd')
+     d                                     like(xmlCint)
      d  ctx                            *   value                                void *
      d  directory                      *   value options(*string)               const char *
 
-     d xmlNanoFTPDele  pr            10i 0 extproc('xmlNanoFTPDele')
+     d xmlNanoFTPDele  pr                  extproc('xmlNanoFTPDele')
+     d                                     like(xmlCint)
      d  ctx                            *   value                                void *
      d  file                           *   value options(*string)               const char *
 
      d xmlNanoFTPGetConnection...
-     d                 pr            10i 0 extproc('xmlNanoFTPGetConnection')   Socket descriptor
+     d                 pr                  extproc('xmlNanoFTPGetConnection')   Socket descriptor
+     d                                     like(xmlCint)
      d  ctx                            *   value                                void *
 
      d xmlNanoFTPCloseConnection...
-     d                 pr            10i 0 extproc('xmlNanoFTPCloseConnection')
+     d                 pr                  extproc('xmlNanoFTPCloseConnection')
+     d                                     like(xmlCint)
      d  ctx                            *   value                                void *
 
-     d xmlNanoFTPList  pr            10i 0 extproc('xmlNanoFTPList')
+     d xmlNanoFTPList  pr                  extproc('xmlNanoFTPList')
+     d                                     like(xmlCint)
      d  ctx                            *   value                                void *
      d  callback                           value like(ftpListCallback)
      d  userData                       *   value                                void *
      d  filename                       *   value options(*string)               const char *
 
      d xmlNanoFTPGetSocket...
-     d                 pr            10i 0 extproc('xmlNanoFTPGetSocket')       Socket descriptor
+     d                 pr                  extproc('xmlNanoFTPGetSocket')       Socket descriptor
+     d                                     like(xmlCint)
      d  ctx                            *   value                                void *
      d  filename                       *   value options(*string)               const char *
 
-     d xmlNanoFTPGet   pr            10i 0 extproc('xmlNanoFTPGet')
+     d xmlNanoFTPGet   pr                  extproc('xmlNanoFTPGet')
+     d                                     like(xmlCint)
      d  ctx                            *   value                                void *
      d  callback                           value like(ftpDataCallback)
      d  userData                       *   value                                void *
      d  filename                       *   value options(*string)               const char *
 
-     d xmlNanoFTPRead  pr            10i 0 extproc('xmlNanoFTPRead')
+     d xmlNanoFTPRead  pr                  extproc('xmlNanoFTPRead')
+     d                                     like(xmlCint)
      d  ctx                            *   value                                void *
      d  dest                           *   value                                void *
-     d  len                          10i 0 value
+     d  len                                value like(xmlCint)
 
       /endif                                                                    LIBXML_FTP_ENABLED
       /endif                                                                    NANO_FTP_H__
diff --git a/os400/libxmlrpg/nanohttp.rpgle b/os400/libxmlrpg/nanohttp.rpgle
index 4a076d2..d4e6008 100644
--- a/os400/libxmlrpg/nanohttp.rpgle
+++ b/os400/libxmlrpg/nanohttp.rpgle
@@ -13,6 +13,8 @@
 
       /if defined(LIBXML_HTTP_ENABLED)
 
+      /include "libxmlrpg/xmlTypesC"
+
      d xmlNanoHTTPInit...
      d                 pr                  extproc('xmlNanoHTTPInit')
 
@@ -24,7 +26,8 @@
      d  URL                            *   value options(*string)               const char *
 
      d xmlNanoHTTPFetch...
-     d                 pr            10i 0 extproc('xmlNanoHTTPFetch')
+     d                 pr                  extproc('xmlNanoHTTPFetch')
+     d                                     like(xmlCint)
      d  URL                            *   value options(*string)               const char *
      d  filename                       *   value options(*string)               const char *
 
@@ -35,7 +38,7 @@
      d  input                          *   value options(*string)               const char *
      d  contentType                    *   value                                char * *
      d  headers                        *   value options(*string)               const char *
-     d  ilen                         10i 0 value
+     d  ilen                               value like(xmlCint)
 
      d xmlNanoHTTPMethodRedir...
      d                 pr              *   extproc('xmlNanoHTTPMethodRedir')    void *
@@ -45,7 +48,7 @@
      d  contentType                    *   value                                char * *
      d  redir                          *   value                                char * *
      d  headers                        *   value options(*string)               const char *
-     d  ilen                         10i 0 value
+     d  ilen                               value like(xmlCint)
 
      d xmlNanoHTTPOpen...
      d                 pr              *   extproc('xmlNanoHTTPOpen')           void *
@@ -59,7 +62,8 @@
      d  redir                          *   value                                char * *
 
      d xmlNanoHTTPReturnCode...
-     d                 pr            10i 0 extproc('xmlNanoHTTPReturnCode')
+     d                 pr                  extproc('xmlNanoHTTPReturnCode')
+     d                                     like(xmlCint)
      d  ctx                            *   value                                void *
 
      d xmlNanoHTTPAuthHeader...
@@ -71,7 +75,8 @@
      d  ctx                            *   value                                void *
 
      d xmlNanoHTTPContentLength...
-     d                 pr            10i 0 extproc('xmlNanoHTTPContentLength')
+     d                 pr                  extproc('xmlNanoHTTPContentLength')
+     d                                     like(xmlCint)
      d  ctx                            *   value                                void *
 
      d xmlNanoHTTPEncoding...
@@ -83,14 +88,16 @@
      d  ctx                            *   value                                void *
 
      d xmlNanoHTTPRead...
-     d                 pr            10i 0 extproc('xmlNanoHTTPRead')
+     d                 pr                  extproc('xmlNanoHTTPRead')
+     d                                     like(xmlCint)
      d  ctx                            *   value                                void *
      d  dest                           *   value                                void *
-     d  len                          10i 0 value
+     d  len                                value like(xmlCint)
 
       /if defined(LIBXML_OUTPUT_ENABLED)
      d xmlNanoHTTPSave...
-     d                 pr            10i 0 extproc('xmlNanoHTTPSave')
+     d                 pr                  extproc('xmlNanoHTTPSave')
+     d                                     like(xmlCint)
      d  ctxt                           *   value                                void *
      d  filename                       *   value options(*string)               const char *
       /endif                                                                    LIBXML_OUTPUT_ENABLD
diff --git a/os400/libxmlrpg/parser.rpgle b/os400/libxmlrpg/parser.rpgle
index f04aa2e..fa48d4f 100644
--- a/os400/libxmlrpg/parser.rpgle
+++ b/os400/libxmlrpg/parser.rpgle
@@ -53,9 +53,9 @@
      d  base                           *                                        const char *
      d  cur                            *                                        const char *
      d  end                            *                                        const char *
-     d  length                       10i 0                                      Length if known
-     d  line                         10i 0                                      Current line
-     d  col                          10i 0                                      Current column
+     d  length                             like(xmlCint)                        Length if known
+     d  line                               like(xmlCint)                        Current line
+     d  col                                like(xmlCint)                        Current column
       *
       * NOTE: consumed is only tested for equality in the parser code,
       *       so even if there is an overflow this should not give troubles
@@ -65,8 +65,8 @@
      d  free                               like(xmlParserInputDeallocate)       base deallocator
      d  encoding                       *                                        const xmlChar *
      d  version                        *                                        const xmlChar *
-     d  standalone                   10i 0                                      Standalone entity ?
-     d  id                           10i 0                                      Entity unique ID
+     d  standalone                         like(xmlCint)                        Standalone entity ?
+     d  id                                 like(xmlCint)                        Entity unique ID
 
       * xmlParserNodeInfo:
       *
@@ -103,7 +103,8 @@
       * The recursive one use the state info for entities processing.
 
      d xmlParserInputState...
-     d                 s             10i 0 based(######typedef######)           enum
+     d                 s                   based(######typedef######)
+     d                                     like(xmlCenum)
      d  XML_PARSER_EOF...                                                       Nothing to parse
      d                 c                   -1
      d  XML_PARSER_START...                                                     Nothing parsed
@@ -168,7 +169,8 @@
       *
       * A parser can operate in various modes
 
-     d xmlParserMode   s             10i 0 based(######typedef######)           enum
+     d xmlParserMode   s                   based(######typedef######)
+     d                                     like(xmlCenum)
      d  XML_PARSE_UNKNOWN...
      d                 c                   0
      d  XML_PARSE_DOM...
@@ -199,59 +201,59 @@
      d  sax                                like(xmlSAXHandlerPtr)               The SAX handler
      d  userData                       *                                        SAX only-4 DOM build
      d  myDoc                              like(xmlDocPtr)                      Document being built
-     d  wellFormed                   10i 0                                      Well formed doc ?
+     d  wellFormed                         like(xmlCint)                        Well formed doc ?
      d  replaceEntities...                                                      Replace entities ?
-     d                               10i 0
+     d                                     like(xmlCint)
      d  version                        *                                        const xmlChar *
      d  encoding                       *                                        const xmlChar *
-     d  standalone                   10i 0                                      Standalone document
-     d  html                         10i 0                                      HTML state/type
+     d  standalone                         like(xmlCint)                        Standalone document
+     d  html                               like(xmlCint)                        HTML state/type
       *
       * Input stream stack
       *
      d  input                              like(xmlParserInputPtr)              Current input stream
-     d  inputNr                      10i 0                                      # current in streams
-     d  inputMax                     10i 0                                      Max # of in streams
+     d  inputNr                            like(xmlCint)                        # current in streams
+     d  inputMax                           like(xmlCint)                        Max # of in streams
      d  inputTab                       *                                        xmlParserInputPtr *
       *
       * Node analysis stack only used for DOM building
       *
      d  node                               like(xmlNodePtr)                     Current parsed node
-     d  nodeNr                       10i 0                                      Parsing stack depth
-     d  nodeMax                      10i 0                                      Max stack depth
+     d  nodeNr                             like(xmlCint)                        Parsing stack depth
+     d  nodeMax                            like(xmlCint)                        Max stack depth
      d  nodeTab                        *                                        xmlNodePtr *
       *
-     d  record_info                  10i 0                                      Keep node info ?
+     d  record_info                        like(xmlCint)                        Keep node info ?
      d  node_seq                           likeds(xmlParserNodeInfoSeq)         Parsed nodes info
       *
-     d  errNo                        10i 0                                      Error code
+     d  errNo                              like(xmlCint)                        Error code
       *
      d  hasExternalSubset...
-     d                               10i 0
-     d  hasPErefs                    10i 0
-     d  external                     10i 0                                      Parsing ext. entity?
+     d                                     like(xmlCint)
+     d  hasPErefs                          like(xmlCint)
+     d  external                           like(xmlCint)                        Parsing ext. entity?
       *
-     d  valid                        10i 0                                      Valid document ?
-     d  validate                     10i 0                                      Try to validate ?
+     d  valid                              like(xmlCint)                        Valid document ?
+     d  validate                           like(xmlCint)                        Try to validate ?
      d  vctxt                              likeds(xmlValidCtxt)                 Validity context
       *
      d  instate                            like(xmlParserInputState)            Current input type
-     d  token                        10i 0                                      Next look-ahead char
+     d  token                              like(xmlCint)                        Next look-ahead char
       *
      d  directory                      *                                        char *
       *
       * Node name stack
       *
      d  name                           *                                        const xmlChar *
-     d  nameNr                       10i 0                                      Parsing stack depth
-     d  nameMax                      10i 0                                      Max stack depth
+     d  nameNr                             like(xmlCint)                        Parsing stack depth
+     d  nameMax                            like(xmlCint)                        Max stack depth
      d  nameTab                        *                                        const xmlChar * *
       *
      d  nbChars                            like(xmlClong)                       # xmlChars processed
      d  checkIndex                         like(xmlClong)                       4 progressive parse
-     d  keepBlanks                   10i 0                                      Ugly but ...
-     d  disableSAX                   10i 0                                      Disable SAX cllbacks
-     d  inSubset                     10i 0                                      In int 1/ext 2 sbset
+     d  keepBlanks                         like(xmlCint)                        Ugly but ...
+     d  disableSAX                         like(xmlCint)                        Disable SAX cllbacks
+     d  inSubset                           like(xmlCint)                        In int 1/ext 2 sbset
      d  intSubName                     *                                        const xmlChar *
      d  extSubURI                      *                                        const xmlChar *
      d  extSubSytem                    *                                        const xmlChar *
@@ -259,27 +261,27 @@
       * xml:space values
       *
      d  space                          *                                        int *
-     d  spaceNr                      10i 0                                      Parsing stack depth
-     d  spaceMax                     10i 0                                      Max stack depth
+     d  spaceNr                            like(xmlCint)                        Parsing stack depth
+     d  spaceMax                           like(xmlCint)                        Max stack depth
      d  spaceTab                       *                                        int *
       *
-     d  depth                        10i 0                                      To detect loops
+     d  depth                              like(xmlCint)                        To detect loops
      d  entity                             like(xmlParserInputPtr)              To check boundaries
-     d  charset                      10i 0                                      In-memory content
-     d  nodelen                      10i 0                                      Speed up parsing
-     d  nodemem                      10i 0                                      Speed up parsing
-     d  pedantic                     10i 0                                      Enb. pedantic warng
+     d  charset                            like(xmlCint)                        In-memory content
+     d  nodelen                            like(xmlCint)                        Speed up parsing
+     d  nodemem                            like(xmlCint)                        Speed up parsing
+     d  pedantic                           like(xmlCint)                        Enb. pedantic warng
      d  #private                       *                                        void *
       *
-     d  loadsubset                   10i 0                                      Load ext. subset ?
-     d  linenumbers                  10i 0                                      Set line numbers ?
+     d  loadsubset                         like(xmlCint)                        Load ext. subset ?
+     d  linenumbers                        like(xmlCint)                        Set line numbers ?
      d  catalogs                       *                                        void *
-     d  recovery                     10i 0                                      Run in recovery mode
-     d  progressive                  10i 0                                      Progressive parsing?
+     d  recovery                           like(xmlCint)                        Run in recovery mode
+     d  progressive                        like(xmlCint)                        Progressive parsing?
      d  dict                               like(xmlDictPtr)                     Parser dictionary
      d  atts                           *                                        const xmlChar *
-     d  maxatts                      10i 0                                      Above array size
-     d  docdict                      10i 0                                      Use dictionary ?
+     d  maxatts                            like(xmlCint)                        Above array size
+     d  docdict                            like(xmlCint)                        Use dictionary ?
       *
       * pre-interned strings
       *
@@ -289,23 +291,23 @@
       *
       * Everything below is used only by the new SAX mode
       *
-     d  sax2                         10i 0                                      New SAX mode ?
-     d  nsNr                         10i 0                                      # inherited nmspaces
-     d  nsMax                        10i 0                                      Array size
+     d  sax2                               like(xmlCint)                        New SAX mode ?
+     d  nsNr                               like(xmlCint)                        # inherited nmspaces
+     d  nsMax                              like(xmlCint)                        Array size
      d  nsTab                          *                                        const xmlChar *
      d  attallocs                      *                                        int *
      d  pushTab                        *                                        void *
      d  attsDefault                        like(xmlHashTablePtr)                Defaulted attrs
      d  attsSpecial                        like(xmlHashTablePtr)                non-CDATA attrs
-     d  nsWellFormed                 10i 0                                      Doc namespace OK ?
-     d  options                      10i 0                                      Extra options
+     d  nsWellFormed                       like(xmlCint)                        Doc namespace OK ?
+     d  options                            like(xmlCint)                        Extra options
       *
       * Those fields are needed only for treaming parsing so far
       *
-     d  dictNames                    10i 0                                      Dict names in tree ?
-     d  freeElemsNr                  10i 0                                      # free element nodes
+     d  dictNames                          like(xmlCint)                        Dict names in tree ?
+     d  freeElemsNr                        like(xmlCint)                        # free element nodes
      d  freeElems                          like(xmlNodePtr)                     Free elem nodes list
-     d  freeAttrsNr                  10i 0                                      # free attr. nodes
+     d  freeAttrsNr                        like(xmlCint)                        # free attr. nodes
      d  freeAttrs                          like(xmlAttrPtr)                     Free attr noes list
       *
       * the complete error informations for the last error.
@@ -318,11 +320,11 @@
       * for use by HTML non-recursive parser
       *
      d  nodeInfo                           like(xmlParserNodeInfoPtr)           Current NodeInfo
-     d  nodeInfoNr                   10i 0                                      Parsing stack depth
-     d  nodeInfoMax                  10i 0                                      Max stack depth
+     d  nodeInfoNr                         like(xmlCint)                        Parsing stack depth
+     d  nodeInfoMax                        like(xmlCint)                        Max stack depth
      d  nodeInfoTab                    *                                        xmlParserNodeInfo *
       *
-     d  input_id                     10i 0                                      Label inputs ?
+     d  input_id                           like(xmlCint)                        Label inputs ?
      d  sizeentcopy                        like(xmlCulong)                      Entity copy volume
 
       * xmlSAXLocator:
@@ -756,7 +758,7 @@
      d  cdataBlock                         like(cdataBlockSAXFunc)
      d  externalSubset...
      d                                     like(externalSubsetSAXFunc)
-     d  initialized                  10u 0
+     d  initialized                        like(xmlCuint)
       *
       * The following fields are extensions available only on version 2
       *
@@ -810,7 +812,7 @@
      d  cdataBlock                         like(cdataBlockSAXFunc)
      d  externalSubset...
      d                                     like(externalSubsetSAXFunc)
-     d  initialized                  10u 0
+     d  initialized                        like(xmlCuint)
 
       * xmlExternalEntityLoader:
       * @URL: The System ID of the resource requested
@@ -839,14 +841,16 @@
       * Input functions
 
      d xmlParserInputRead...
-     d                 pr            10i 0 extproc('xmlParserInputRead')
+     d                 pr                  extproc('xmlParserInputRead')
+     d                                     like(xmlCint)
      d  in                                 value like(xmlParserInputPtr)
-     d  len                          10i 0 value
+     d  len                                value like(xmlCint)
 
      d xmlParserInputGrow...
-     d                 pr            10i 0 extproc('xmlParserInputGrow')
+     d                 pr                  extproc('xmlParserInputGrow')
+     d                                     like(xmlCint)
      d  in                                 value like(xmlParserInputPtr)
-     d  len                          10i 0 value
+     d  len                                value like(xmlCint)
 
       * Basic parsing Interfaces
 
@@ -862,28 +866,32 @@
      d xmlParseMemory  pr                  extproc('xmlParseMemory')
      d                                     like(xmlDocPtr)
      d  buffer                         *   value options(*string)               const char *
-     d  size                         10i 0 value
+     d  size                               value like(xmlCint)
       /endif                                                                    LIBXML_SAX1_ENABLED
 
      d xmlSubstituteEntitiesDefault...
-     d                 pr            10i 0 extproc(
+     d                 pr                  extproc(
      d                                      'xmlSubstituteEntitiesDefault')
-     d  val                          10i 0 value
+     d                                     like(xmlCint)
+     d  val                                value like(xmlCint)
 
      d xmlKeepBlanksDefault...
-     d                 pr            10i 0 extproc('xmlKeepBlanksDefault')
-     d  val                          10i 0 value
+     d                 pr                  extproc('xmlKeepBlanksDefault')
+     d                                     like(xmlCint)
+     d  val                                value like(xmlCint)
 
      d xmlStopParser   pr                  extproc('xmlStopParser')
      d  ctxt                               value like(xmlParserCtxtPtr)
 
      d xmlPedanticParserDefault...
-     d                 pr            10i 0 extproc('xmlPedanticParserDefault')
-     d  val                          10i 0 value
+     d                 pr                  extproc('xmlPedanticParserDefault')
+     d                                     like(xmlCint)
+     d  val                                value like(xmlCint)
 
      d xmlLineNumbersDefault...
-     d                 pr            10i 0 extproc('xmlLineNumbersDefault')
-     d  val                          10i 0 value
+     d                 pr                  extproc('xmlLineNumbersDefault')
+     d                                     like(xmlCint)
+     d  val                                value like(xmlCint)
 
       /if defined(LIBXML_SAX1_ENABLED)
       * Recovery mode
@@ -896,7 +904,7 @@
      d                 pr                  extproc('xmlRecoverMemory')
      d                                     like(xmlDocPtr)
      d  buffer                         *   value options(*string)               const char *
-     d  size                         10i 0 value
+     d  size                               value like(xmlCint)
 
      d xmlRecoverFile  pr                  extproc('xmlRecoverFile')
      d                                     like(xmlDocPtr)
@@ -906,48 +914,52 @@
       * Less common routines and SAX interfaces
 
      d xmlParseDocument...
-     d                 pr            10i 0 extproc('xmlParseDocument')
+     d                 pr                  extproc('xmlParseDocument')
+     d                                     like(xmlCint)
      d  ctxt                               value like(xmlParserCtxtPtr)
 
      d xmlParseExtParsedEnt...
-     d                 pr            10i 0 extproc('xmlParseExtParsedEnt')
+     d                 pr                  extproc('xmlParseExtParsedEnt')
+     d                                     like(xmlCint)
      d  ctxt                               value like(xmlParserCtxtPtr)
 
       /if defined(LIBXML_SAX1_ENABLED)
      d xmlSAXUserParseFile...
-     d                 pr            10i 0 extproc('xmlSAXUserParseFile')
+     d                 pr                  extproc('xmlSAXUserParseFile')
+     d                                     like(xmlCint)
      d  sax                                value like(xmlSAXHandlerPtr)
      d  user_data                      *   value                                void *
      d  filename                       *   value options(*string)               const char *
 
      d xmlSAXUserParseMemory...
-     d                 pr            10i 0 extproc('xmlSAXUserParseMemory')
+     d                 pr                  extproc('xmlSAXUserParseMemory')
+     d                                     like(xmlCint)
      d  sax                                value like(xmlSAXHandlerPtr)
      d  user_data                      *   value                                void *
      d  buffer                         *   value options(*string)               const char *
-     d  size                         10i 0 value
+     d  size                               value like(xmlCint)
 
      d xmlSAXParseDoc  pr                  extproc('xmlSAXParseDoc')
      d                                     like(xmlDocPtr)
      d  sax                                value like(xmlSAXHandlerPtr)
      d  cur                            *   value options(*string)               const xmlChar *
-     d  recovery                     10i 0 value
+     d  recovery                           value like(xmlCint)
 
      d xmlSAXParseMemory...
      d                 pr                  extproc('xmlSAXParseMemory')
      d                                     like(xmlDocPtr)
      d  sax                                value like(xmlSAXHandlerPtr)
      d  buffer                         *   value options(*string)               const char *
-     d  size                         10i 0 value
-     d  recovery                     10i 0 value
+     d  size                               value like(xmlCint)
+     d  recovery                           value like(xmlCint)
 
      d xmlSAXParseMemoryWithData...
      d                 pr                  extproc('xmlSAXParseMemoryWithData')
      d                                     like(xmlDocPtr)
      d  sax                                value like(xmlSAXHandlerPtr)
      d  buffer                         *   value options(*string)               const char *
-     d  size                         10i 0 value
-     d  recovery                     10i 0 value
+     d  size                               value like(xmlCint)
+     d  recovery                           value like(xmlCint)
      d  data                           *   value                                void *
 
      d xmlSAXParseFile...
@@ -955,14 +967,14 @@
      d                                     like(xmlDocPtr)
      d  sax                                value like(xmlSAXHandlerPtr)
      d  filename                       *   value options(*string)               const char *
-     d  recovery                     10i 0 value
+     d  recovery                           value like(xmlCint)
 
      d xmlSAXParseFileWithData...
      d                 pr                  extproc('xmlSAXParseFileWithData')
      d                                     like(xmlDocPtr)
      d  sax                                value like(xmlSAXHandlerPtr)
      d  filename                       *   value options(*string)               const char *
-     d  recovery                     10i 0 value
+     d  recovery                           value like(xmlCint)
      d  data                           *   value                                void *
 
      d xmlSAXParseEntity...
@@ -998,12 +1010,13 @@
 
       /if defined(LIBXML_SAX1_ENABLED)
      d xmlParseBalancedChunkMemory...
-     d                 pr            10i 0 extproc(
+     d                 pr                  extproc(
      d                                      'xmlParseBalancedChunkMemory')
+     d                                     like(xmlCint)
      d  doc                                value like(xmlDocPtr)
      d  sax                                value like(xmlSAXHandlerPtr)
      d  user_data                      *   value                                void *
-     d  depth                        10i 0 value
+     d  depth                              value like(xmlCint)
      d  user_data                      *   value                                void *
      d  string                         *   value options(*string)               const xmlChar *
      d  lst                            *   value                                xmlNodePtr *
@@ -1014,35 +1027,38 @@
      d                                     like(xmlParserErrors)
      d  node                               value like(xmlNodePtr)
      d  data                           *   value options(*string)               const char *
-     d  datalen                      10i 0 value
-     d  options                      10i 0 value
+     d  datalen                            value like(xmlCint)
+     d  options                            value like(xmlCint)
      d  lst                            *   value                                xmlNodePtr *
 
       /if defined(LIBXML_SAX1_ENABLED)
      d xmlParseBalancedChunkMemoryRecover...
-     d                 pr            10i 0 extproc(
+     d                 pr                  extproc(
      d                                     'xmlParseBalancedChunkMemoryRecover')
+     d                                     like(xmlCint)
      d  doc                                value like(xmlDocPtr)
      d  sax                                value like(xmlSAXHandlerPtr)
      d  user_data                      *   value                                void *
-     d  depth                        10i 0 value
+     d  depth                              value like(xmlCint)
      d  string                         *   value options(*string)               const xmlChar *
      d  lst                            *   value                                xmlNodePtr *
-     d  recover                      10i 0 value
+     d  recover                            value like(xmlCint)
 
      d xmlParseExternalEntity...
-     d                 pr            10i 0 extproc('xmlParseExternalEntity')
+     d                 pr                  extproc('xmlParseExternalEntity')
+     d                                     like(xmlCint)
      d  doc                                value like(xmlDocPtr)
      d  sax                                value like(xmlSAXHandlerPtr)
      d  user_data                      *   value                                void *
-     d  depth                        10i 0 value
+     d  depth                              value like(xmlCint)
      d  URL                            *   value options(*string)               const xmlChar *
      d  ID                             *   value options(*string)               const xmlChar *
      d  lst                            *   value                                xmlNodePtr *
       /endif                                                                    LIBXML_SAX1_ENABLED
 
      d xmlParseCtxtExternalEntity...
-     d                 pr            10i 0 extproc('xmlParseCtxtExternalEntity')
+     d                 pr                  extproc('xmlParseCtxtExternalEntity')
+     d                                     like(xmlCint)
      d  sax                                value like(xmlSAXHandlerPtr)
      d  URL                            *   value options(*string)               const xmlChar *
      d  ID                             *   value options(*string)               const xmlChar *
@@ -1055,7 +1071,8 @@
      d                                     like(xmlParserCtxtPtr)
 
      d xmlInitParserCtxt...
-     d                 pr            10i 0 extproc('xmlInitParserCtxt')
+     d                 pr                  extproc('xmlInitParserCtxt')
+     d                                     like(xmlCint)
      d  ctxt                               value like(xmlParserCtxtPtr)
 
      d xmlClearParserCtxt...
@@ -1083,16 +1100,19 @@
       * Reading/setting optional parsing features.
 
      d xmlGetFeaturesList...
-     d                 pr            10i 0 extproc('xmlGetFeaturesList')
-     d  len                          10i 0
+     d                 pr                  extproc('xmlGetFeaturesList')
+     d                                     like(xmlCint)
+     d  len                                like(xmlCint)
      d  result                         *                                        const char *(*)
 
-     d xmlGetFeature   pr            10i 0 extproc('xmlGetFeature')
+     d xmlGetFeature   pr                  extproc('xmlGetFeature')
+     d                                     like(xmlCint)
      d  ctxt                               value like(xmlParserCtxtPtr)
      d  name                           *   value options(*string)               const char *
      d  result                         *   value                                void *
 
-     d xmlSetFeature   pr            10i 0 extproc('xmlSetFeature')
+     d xmlSetFeature   pr                  extproc('xmlSetFeature')
+     d                                     like(xmlCint)
      d  ctxt                               value like(xmlParserCtxtPtr)
      d  name                           *   value options(*string)               const char *
      d  result                         *   value                                void *
@@ -1107,14 +1127,15 @@
      d  sax                                value like(xmlSAXHandlerPtr)
      d  user_data                      *   value                                void *
      d  chunk                          *   value options(*string)               const char *
-     d  size                         10i 0 value
+     d  size                               value like(xmlCint)
      d  filename                       *   value options(*string)               const char *
 
-     d xmlParseChunk   pr            10i 0 extproc('xmlParseChunk')
+     d xmlParseChunk   pr                  extproc('xmlParseChunk')
+     d                                     like(xmlCint)
      d  ctxt                               value like(xmlParserCtxtPtr)
      d  chunk                          *   value options(*string)               const char *
-     d  size                         10i 0 value
-     d  terminate                    10i 0 value
+     d  size                               value like(xmlCint)
+     d  terminate                          value like(xmlCint)
       /endif                                                                    LIBXML_PUSH_ENABLED
 
       * Special I/O mode.
@@ -1194,7 +1215,8 @@
       * to the xmlReadDoc() and similar calls.
 
      d xmlParserOption...
-     d                 s             10i 0 based(######typedef######)           enum
+     d                 s                   based(######typedef######)
+     d                                     like(xmlCenum)
      d  XML_PARSE_RECOVER...                                                    Recover on errors
      d                 c                   X'00000001'
      d  XML_PARSE_NOENT...                                                      Substitute entities
@@ -1246,45 +1268,47 @@
      d  ctxt                               value like(xmlParserCtxtPtr)
 
      d xmlCtxtResetPush...
-     d                 pr            10i 0 extproc('xmlCtxtResetPush')
+     d                 pr                  extproc('xmlCtxtResetPush')
+     d                                     like(xmlCint)
      d  ctxt                               value like(xmlParserCtxtPtr)
      d  chunk                          *   value options(*string)               const char *
-     d  size                         10i 0 value
+     d  size                               value like(xmlCint)
      d  filename                       *   value options(*string)               const char *
      d  encoding                       *   value options(*string)               const char *
 
      d xmlCtxtUseOptions...
-     d                 pr            10i 0 extproc('xmlCtxtUseOptions')
+     d                 pr                  extproc('xmlCtxtUseOptions')
+     d                                     like(xmlCint)
      d  ctxt                               value like(xmlParserCtxtPtr)
-     d  options                      10i 0 value
+     d  options                            value like(xmlCint)
 
      d xmlReadDoc      pr                  extproc('xmlReadDoc')
      d                                     like(xmlDocPtr)
      d  cur                            *   value options(*string)               const xmlChar *
      d  URL                            *   value options(*string)               const char *
      d  encoding                       *   value options(*string)               const char *
-     d  options                      10i 0 value
+     d  options                            value like(xmlCint)
 
      d xmlReadFile     pr                  extproc('xmlReadFile')
      d                                     like(xmlDocPtr)
      d  URL                            *   value options(*string)               const char *
      d  encoding                       *   value options(*string)               const char *
-     d  options                      10i 0 value
+     d  options                            value like(xmlCint)
 
      d xmlReadMemory   pr                  extproc('xmlReadMemory')
      d                                     like(xmlDocPtr)
      d  buffer                         *   value options(*string)               const char *
-     d  size                         10i 0 value
+     d  size                               value like(xmlCint)
      d  URL                            *   value options(*string)               const char *
      d  encoding                       *   value options(*string)               const char *
-     d  options                      10i 0 value
+     d  options                            value like(xmlCint)
 
      d xmlReadFd       pr                  extproc('xmlReadFd')
      d                                     like(xmlDocPtr)
-     d  fd                           10i 0 value
+     d  fd                                 value like(xmlCint)
      d  URL                            *   value options(*string)               const char *
      d  encoding                       *   value options(*string)               const char *
-     d  options                      10i 0 value
+     d  options                            value like(xmlCint)
 
      d xmlReadIO       pr                  extproc('xmlReadIO')
      d                                     like(xmlDocPtr)
@@ -1293,7 +1317,7 @@
      d  ioctx                          *   value                                void *
      d  URL                            *   value options(*string)               const char *
      d  encoding                       *   value options(*string)               const char *
-     d  options                      10i 0 value
+     d  options                            value like(xmlCint)
 
      d xmlCtxtReadDoc  pr                  extproc('xmlCtxtReadDoc')
      d                                     like(xmlDocPtr)
@@ -1301,7 +1325,7 @@
      d  cur                            *   value options(*string)               const xmlChar *
      d  URL                            *   value options(*string)               const char *
      d  encoding                       *   value options(*string)               const char *
-     d  options                      10i 0 value
+     d  options                            value like(xmlCint)
 
      d xmlCtxtReadFile...
      d                 pr                  extproc('xmlCtxtReadFile')
@@ -1309,25 +1333,25 @@
      d  ctxt                               value like(xmlParserCtxtPtr)
      d  filename                       *   value options(*string)               const char *
      d  encoding                       *   value options(*string)               const char *
-     d  options                      10i 0 value
+     d  options                            value like(xmlCint)
 
      d xmlCtxtReadMemory...
      d                 pr                  extproc('xmlCtxtReadMemory')
      d                                     like(xmlDocPtr)
      d  ctxt                               value like(xmlParserCtxtPtr)
      d  buffer                         *   value options(*string)               const char *
-     d  size                         10i 0 value
+     d  size                               value like(xmlCint)
      d  URL                            *   value options(*string)               const char *
      d  encoding                       *   value options(*string)               const char *
-     d  options                      10i 0 value
+     d  options                            value like(xmlCint)
 
      d xmlCtxtReadFd   pr                  extproc('xmlCtxtReadFd')
      d                                     like(xmlDocPtr)
      d  ctxt                               value like(xmlParserCtxtPtr)
-     d  fd                           10i 0 value
+     d  fd                                 value like(xmlCint)
      d  URL                            *   value options(*string)               const char *
      d  encoding                       *   value options(*string)               const char *
-     d  options                      10i 0 value
+     d  options                            value like(xmlCint)
 
      d xmlCtxtReadIO   pr                  extproc('xmlCtxtReadIO')
      d                                     like(xmlDocPtr)
@@ -1337,7 +1361,7 @@
      d  ioctx                          *   value                                void *
      d  URL                            *   value options(*string)               const char *
      d  encoding                       *   value options(*string)               const char *
-     d  options                      10i 0 value
+     d  options                            value like(xmlCint)
 
       * Library wide options
 
@@ -1347,7 +1371,8 @@
       * or disabled at compile-time.
       * They used to be called XML_FEATURE_xxx but this clashed with Expat
 
-     d xmlFeature      s             10i 0 based(######typedef######)           enum
+     d xmlFeature      s                   based(######typedef######)
+     d                                     like(xmlCenum)
      d  XML_WITH_THREAD...
      d                 c                   1
      d  XML_WITH_TREE  c                   2
@@ -1404,7 +1429,8 @@
      d  XML_WITH_LZMA  c                   33
      d  XML_WITH_NONE  c                   99999
 
-     d xmlHasFeature   pr            10i 0 extproc('xmlHasFeature')
+     d xmlHasFeature   pr                  extproc('xmlHasFeature')
+     d                                     like(xmlCint)
      d  feature                            value like(xmlFeature)
 
       /endif                                                                    XML_PARSER_H__
diff --git a/os400/libxmlrpg/parserInternals.rpgle b/os400/libxmlrpg/parserInternals.rpgle
index 2691397..6c8f388 100644
--- a/os400/libxmlrpg/parserInternals.rpgle
+++ b/os400/libxmlrpg/parserInternals.rpgle
@@ -11,6 +11,7 @@
       /define XML_PARSER_INTERNALS_H__
 
       /include "libxmlrpg/xmlversion"
+      /include "libxmlrpg/xmlTypesC"
       /include "libxmlrpg/parser"
       /include "libxmlrpg/HTMLparser"
       /include "libxmlrpg/chvalid"
@@ -22,7 +23,8 @@
       * boundary feature, use XML_PARSE_HUGE option to override it.
 
      d xmlParserMaxDepth...
-     d                 s             10u 0 import('xmlParserMaxDepth')
+     d                 s                   import('xmlParserMaxDepth')
+     d                                     like(xmlCuint)
 
       * XML_MAX_TEXT_LENGTH:
       *
@@ -93,8 +95,9 @@
 
       * Function to finish the work of the macros where needed.
 
-     d xmlIsLetter     pr            10i 0 extproc('xmlIsLetter')
-     d c                             10i 0 value
+     d xmlIsLetter     pr                  extproc('xmlIsLetter')
+     d                                     like(xmlCint)
+     d c                                   value like(xmlCint)
 
       * Parser context.
 
@@ -107,13 +110,13 @@
      d                 pr                  extproc('xmlCreateURLParserCtxt')
      d                                     like(xmlParserCtxtPtr)
      d filename                        *   value options(*string)               const char *
-     d options                       10i 0 value
+     d options                             value like(xmlCint)
 
      d xmlCreateMemoryParserCtxt...
      d                 pr                  extproc('xmlCreateMemoryParserCtxt')
      d                                     like(xmlParserCtxtPtr)
      d buffer                          *   value options(*string)               const char *
-     d size                          10i 0 value
+     d size                                value like(xmlCint)
 
      d xmlCreateEntityParserCtxt...
      d                 pr                  extproc('xmlCreateEntityParserCtxt')
@@ -123,17 +126,20 @@
      d base                            *   value options(*string)               const xmlChar *
 
      d xmlSwitchEncoding...
-     d                 pr            10i 0 extproc('xmlSwitchEncoding')
+     d                 pr                  extproc('xmlSwitchEncoding')
+     d                                     like(xmlCint)
      d ctxt                                value like(xmlParserCtxtPtr)
      d enc                                 value like(xmlCharEncoding)
 
      d xmlSwitchToEncoding...
-     d                 pr            10i 0 extproc('xmlSwitchToEncoding')
+     d                 pr                  extproc('xmlSwitchToEncoding')
+     d                                     like(xmlCint)
      d ctxt                                value like(xmlParserCtxtPtr)
      d handler                             value like(xmlCharEncodingHandlerPtr)
 
      d xmlSwitchInputEncoding...
-     d                 pr            10i 0 extproc('xmlSwitchInputEncoding')
+     d                 pr                  extproc('xmlSwitchInputEncoding')
+     d                                     like(xmlCint)
      d ctxt                                value like(xmlParserCtxtPtr)
      d input                               value like(xmlParserInputPtr)
      d handler                             value like(xmlCharEncodingHandlerPtr)
@@ -152,7 +158,8 @@
      d ctxt                                value like(xmlParserCtxtPtr)
      d entity                              value like(xmlEntityPtr)
 
-     d xmlPushInput    pr            10i 0 extproc('xmlPushInput')
+     d xmlPushInput    pr                  extproc('xmlPushInput')
+     d                                     like(xmlCint)
      d ctxt                                value like(xmlParserCtxtPtr)
      d input                               value like(xmlParserInputPtr)
 
@@ -211,13 +218,13 @@
      d xmlParseCharData...
      d                 pr                  extproc('xmlParseCharData')
      d ctxt                                value like(xmlParserCtxtPtr)
-     d cdata                         10i 0 value
+     d cdata                               value like(xmlCint)
 
      d xmlParseExternalID...
      d                 pr              *   extproc('xmlParseExternalID')        xmlChar *
      d ctxt                                value like(xmlParserCtxtPtr)
      d publicID                        *                                        xmlChar *(*)
-     d strict                        10i 0 value
+     d strict                              value like(xmlCint)
 
      d xmlParseComment...
      d                 pr                  extproc('xmlParseComment')
@@ -239,7 +246,8 @@
      d ctxt                                value like(xmlParserCtxtPtr)
 
      d xmlParseDefaultDecl...
-     d                 pr            10i 0 extproc('xmlParseDefaultDecl')
+     d                 pr                  extproc('xmlParseDefaultDecl')
+     d                                     like(xmlCint)
      d ctxt                                value like(xmlParserCtxtPtr)
      d value                           *                                        xmlChar *(*)
 
@@ -254,12 +262,14 @@
      d ctxt                                value like(xmlParserCtxtPtr)
 
      d xmlParseEnumeratedType...
-     d                 pr            10i 0 extproc('xmlParseEnumeratedType')
+     d                 pr                  extproc('xmlParseEnumeratedType')
+     d                                     like(xmlCint)
      d ctxt                                value like(xmlParserCtxtPtr)
      d tree                            *   value                                xmlEnumerationPtr *
 
      d xmlParseAttributeType...
-     d                 pr            10i 0 extproc('xmlParseAttributeType')
+     d                 pr                  extproc('xmlParseAttributeType')
+     d                                     like(xmlCint)
      d ctxt                                value like(xmlParserCtxtPtr)
      d tree                            *   value                                xmlEnumerationPtr *
 
@@ -272,24 +282,26 @@
      d                                     'xmlParseElementMixedContentDecl')
      d                                     like(xmlElementContentPtr)
      d ctxt                                value like(xmlParserCtxtPtr)
-     d inputchk                      10i 0 value
+     d inputchk                            value like(xmlCint)
 
      d xmlParseElementChildrenContentDecl...
      d                 pr                  extproc(
      d                                     'xmlParseElementChildrenContentDecl')
      d                                     like(xmlElementContentPtr)
      d ctxt                                value like(xmlParserCtxtPtr)
-     d inputchk                      10i 0 value
+     d inputchk                            value like(xmlCint)
 
      d xmlParseElementContentDecl...
-     d                 pr            10i 0 extproc('xmlParseElementContentDecl')
+     d                 pr                  extproc('xmlParseElementContentDecl')
+     d                                     like(xmlCint)
      d ctxt                                value like(xmlParserCtxtPtr)
      d name                            *   value options(*string)               const xmlChar *
      d result                          *   value                                xmlElementContentPtr
      d                                                                          *
 
      d xmlParseElementDecl...
-     d                 pr            10i 0 extproc('xmlParseElementDecl')
+     d                 pr                  extproc('xmlParseElementDecl')
+     d                                     like(xmlCint)
      d ctxt                                value like(xmlParserCtxtPtr)
 
      d xmlParseMarkupDecl...
@@ -297,7 +309,8 @@
      d ctxt                                value like(xmlParserCtxtPtr)
 
      d xmlParseCharRef...
-     d                 pr            10i 0 extproc('xmlParseCharRef')
+     d                 pr                  extproc('xmlParseCharRef')
+     d                                     like(xmlCint)
      d ctxt                                value like(xmlParserCtxtPtr)
 
      d xmlParseEntityRef...
@@ -358,7 +371,8 @@
      d                 pr              *   extproc('xmlParseEncodingDecl')      const xmlChar *
      d ctxt                                value like(xmlParserCtxtPtr)
 
-     d xmlParseSDDecl  pr            10i 0 extproc('xmlParseSDDecl')
+     d xmlParseSDDecl  pr                  extproc('xmlParseSDDecl')
+     d                                     like(xmlCint)
      d ctxt                                value like(xmlParserCtxtPtr)
 
      d xmlParseXMLDecl...
@@ -410,7 +424,7 @@
      d                 pr              *   extproc('xmlStringDecodeEntities')   xmlChar *
      d ctxt                                value like(xmlParserCtxtPtr)
      d str                             *   value options(*string)               const xmlChar *
-     d what                          10i 0 value
+     d what                                value like(xmlCint)
      d end                                 value like(xmlChar)
      d end2                                value like(xmlChar)
      d end3                                value like(xmlChar)
@@ -419,15 +433,16 @@
      d                 pr              *   extproc('xmlStringLenDecodeEntities')xmlChar *
      d ctxt                                value like(xmlParserCtxtPtr)
      d str                             *   value options(*string)               const xmlChar *
-     d len                           10i 0 value
-     d what                          10i 0 value
+     d len                                 value like(xmlCint)
+     d what                                value like(xmlCint)
      d end                                 value like(xmlChar)
      d end2                                value like(xmlChar)
      d end3                                value like(xmlChar)
 
       * Generated by MACROS on top of parser.c c.f. PUSH_AND_POP.
 
-     d nodePush        pr            10i 0 extproc('nodePush')
+     d nodePush        pr                  extproc('nodePush')
+     d                                     like(xmlCint)
      d ctxt                                value like(xmlParserCtxtPtr)
      d value                               value like(xmlNodePtr)
 
@@ -435,7 +450,8 @@
      d                                     like(xmlNodePtr)
      d ctxt                                value like(xmlParserCtxtPtr)
 
-     d inputPush       pr            10i 0 extproc('inputPush')
+     d inputPush       pr                  extproc('inputPush')
+     d                                     like(xmlCint)
      d ctxt                                value like(xmlParserCtxtPtr)
      d value                               value like(xmlParserInputPtr)
 
@@ -446,18 +462,21 @@
      d namePop         pr              *   extproc('namePop')                   const xmlChar *
      d ctxt                                value like(xmlParserCtxtPtr)
 
-     d namePush        pr            10i 0 extproc('namePush')
+     d namePush        pr                  extproc('namePush')
+     d                                     like(xmlCint)
      d ctxt                                value like(xmlParserCtxtPtr)
      d value                           *   value options(*string)               const xmlChar *
 
       * other commodities shared between parser.c and parserInternals.
 
      d xmlSkipBlankChars...
-     d                 pr            10i 0 extproc('xmlSkipBlankChars')
+     d                 pr                  extproc('xmlSkipBlankChars')
+     d                                     like(xmlCint)
      d ctxt                                value like(xmlParserCtxtPtr)
 
      d xmlStringCurrentChar...
-     d                 pr            10i 0 extproc('xmlStringCurrentChar')
+     d                 pr                  extproc('xmlStringCurrentChar')
+     d                                     like(xmlCint)
      d ctxt                                value like(xmlParserCtxtPtr)
      d cur                             *   value options(*string)               const xmlChar *
      d len                             *   value                                int *
@@ -467,24 +486,28 @@
      d ctxt                                value like(xmlParserCtxtPtr)
 
      d xmlCheckLanguageID...
-     d                 pr            10i 0 extproc('xmlCheckLanguageID')
+     d                 pr                  extproc('xmlCheckLanguageID')
+     d                                     like(xmlCint)
      d lang                            *   value options(*string)               const xmlChar *
 
       * Really core function shared with HTML parser.
 
-     d xmlCurrentChar  pr            10i 0 extproc('xmlCurrentChar')
+     d xmlCurrentChar  pr                  extproc('xmlCurrentChar')
+     d                                     like(xmlCint)
      d ctxt                                value like(xmlParserCtxtPtr)
      d len                             *   value                                int *
 
      d xmlCopyCharMultiByte...
-     d                 pr            10i 0 extproc('xmlCopyCharMultiByte')
+     d                 pr                  extproc('xmlCopyCharMultiByte')
+     d                                     like(xmlCint)
      d out                             *   value options(*string)               xmlChar *
-     d val                           10i 0 value
+     d val                                 value like(xmlCint)
 
-     d xmlCopyChar     pr            10i 0 extproc('xmlCopyChar')
-     d len                           10i 0 value
+     d xmlCopyChar     pr                  extproc('xmlCopyChar')
+     d                                     like(xmlCint)
+     d len                                 value like(xmlCint)
      d out                             *   value options(*string)               xmlChar *
-     d val                           10i 0 value
+     d val                                 value like(xmlCint)
 
      d xmlNextChar     pr                  extproc('xmlNextChar')
      d ctxt                                value like(xmlParserCtxtPtr)
@@ -560,8 +583,8 @@
      d xmlDecodeEntities...
      d                 pr              *   extproc('xmlDecodeEntities')         xmlChar *
      d ctxt                                value like(xmlParserCtxtPtr)
-     d len                           10i 0 value
-     d what                          10i 0 value
+     d len                                 value like(xmlCint)
+     d what                                value like(xmlCint)
      d end                                 value like(xmlChar)
      d end2                                value like(xmlChar)
      d end3                                value like(xmlChar)
diff --git a/os400/libxmlrpg/pattern.rpgle b/os400/libxmlrpg/pattern.rpgle
index 2e881e5..ef02301 100644
--- a/os400/libxmlrpg/pattern.rpgle
+++ b/os400/libxmlrpg/pattern.rpgle
@@ -10,11 +10,13 @@
       /define XML_PATTERN_H__
 
       /include "libxmlrpg/xmlversion"
-      /include "libxmlrpg/tree"
-      /include "libxmlrpg/dict"
 
       /if defined(LIBXML_PATTERN_ENABLED)
 
+      /include "libxmlrpg/xmlTypesC"
+      /include "libxmlrpg/tree"
+      /include "libxmlrpg/dict"
+
       * xmlPattern:
       *
       * A compiled (XPath based) pattern to select nodes
@@ -28,7 +30,8 @@
       * matching with this module
 
      d xmlPatternFlags...
-     d                 s             10i 0 based(######typedef######)           enum
+     d                 s                   based(######typedef######)
+     d                                     like(xmlCenum)
      d  XML_PATTERN_DEFAULT...                                                  Simple pattern match
      d                 c                   X'0000'
      d  XML_PATTERN_XPATH...                                                    Std XPath pattern
@@ -50,11 +53,12 @@
      d                                     like(xmlPatternPtr)
      d  pattern                        *   value options(*string)               const xmlChar *
      d  dict                           *   value                                xmlDict *
-     d  flags                        10i 0 value
+     d  flags                              value like(xmlCint)
      d  namespaces                     *                                        const xmlChar *(*)
 
      d xmlPatternMatch...
-     d                 pr            10i 0 extproc('xmlPatternMatch')
+     d                 pr                  extproc('xmlPatternMatch')
+     d                                     like(xmlCint)
      d  comp                               value like(xmlPatternPtr)
      d  node                               value like(xmlNodePtr)
 
@@ -64,19 +68,23 @@
      d                 s               *   based(######typedef######)
 
      d xmlPatternStreamable...
-     d                 pr            10i 0 extproc('xmlPatternStreamable')
+     d                 pr                  extproc('xmlPatternStreamable')
+     d                                     like(xmlCint)
      d  comp                               value like(xmlPatternPtr)
 
      d xmlPatternMaxDepth...
-     d                 pr            10i 0 extproc('xmlPatternMaxDepth')
+     d                 pr                  extproc('xmlPatternMaxDepth')
+     d                                     like(xmlCint)
      d  comp                               value like(xmlPatternPtr)
 
      d xmlPatternMinDepth...
-     d                 pr            10i 0 extproc('xmlPatternMinDepth')
+     d                 pr                  extproc('xmlPatternMinDepth')
+     d                                     like(xmlCint)
      d  comp                               value like(xmlPatternPtr)
 
      d xmlPatternFromRoot...
-     d                 pr            10i 0 extproc('xmlPatternFromRoot')
+     d                 pr                  extproc('xmlPatternFromRoot')
+     d                                     like(xmlCint)
      d  comp                               value like(xmlPatternPtr)
 
      d xmlPatternGetStreamCtxt...
@@ -89,28 +97,33 @@
      d  stream                             value like(xmlStreamCtxtPtr)
 
      d xmlStreamPushNode...
-     d                 pr            10i 0 extproc('xmlStreamPushNode')
+     d                 pr                  extproc('xmlStreamPushNode')
+     d                                     like(xmlCint)
      d  stream                             value like(xmlStreamCtxtPtr)
      d  name                           *   value options(*string)               const xmlChar *
      d  ns                             *   value options(*string)               const xmlChar *
-     d  nodeType                     10i 0 value
+     d  nodeType                           value like(xmlCint)
 
-     d xmlStreamPush   pr            10i 0 extproc('xmlStreamPush')
+     d xmlStreamPush   pr                  extproc('xmlStreamPush')
+     d                                     like(xmlCint)
      d  stream                             value like(xmlStreamCtxtPtr)
      d  name                           *   value options(*string)               const xmlChar *
      d  ns                             *   value options(*string)               const xmlChar *
 
      d xmlStreamPushAttr...
-     d                 pr            10i 0 extproc('xmlStreamPushAttr')
+     d                 pr                  extproc('xmlStreamPushAttr')
+     d                                     like(xmlCint)
      d  stream                             value like(xmlStreamCtxtPtr)
      d  name                           *   value options(*string)               const xmlChar *
      d  ns                             *   value options(*string)               const xmlChar *
 
-     d xmlStreamPop    pr            10i 0 extproc('xmlStreamPop')
+     d xmlStreamPop    pr                  extproc('xmlStreamPop')
+     d                                     like(xmlCint)
      d  stream                             value like(xmlStreamCtxtPtr)
 
      d xmlStreamWantsAnyNode...
-     d                 pr            10i 0 extproc('xmlStreamWantsAnyNode')
+     d                 pr                  extproc('xmlStreamWantsAnyNode')
+     d                                     like(xmlCint)
      d  stream                             value like(xmlStreamCtxtPtr)
 
       /endif                                                                    LIBXML_PATTERN_ENBLD
diff --git a/os400/libxmlrpg/relaxng.rpgle b/os400/libxmlrpg/relaxng.rpgle
index af662aa..15b8471 100644
--- a/os400/libxmlrpg/relaxng.rpgle
+++ b/os400/libxmlrpg/relaxng.rpgle
@@ -9,11 +9,13 @@
       /define XML_RELAX_NG__
 
       /include "libxmlrpg/xmlversion"
-      /include "libxmlrpg/hash"
-      /include "libxmlrpg/xmlstring"
 
       /if defined(LIBXML_SCHEMAS_ENABLED)
 
+      /include "libxmlrpg/xmlTypesC"
+      /include "libxmlrpg/hash"
+      /include "libxmlrpg/xmlstring"
+
      d xmlRelaxNGPtr   s               *   based(######typedef######)
 
       * xmlRelaxNGValidityErrorFunc:
@@ -51,7 +53,8 @@
       * List of possible Relax NG validation errors
 
      d xmlRelaxNGValidErr...
-     d                 s             10i 0 based(######typedef######)           enum
+     d                 s                   based(######typedef######)
+     d                                     like(xmlCenum)
      d  XML_RELAXNG_OK...
      d                 c                   0
      d  XML_RELAXNG_ERR_MEMORY...
@@ -138,7 +141,8 @@
       * List of possible Relax NG Parser flags
 
      d xmlRelaxNGParserFlag...
-     d                 s             10i 0 based(######typedef######)           enum
+     d                 s                   based(######typedef######)
+     d                                     like(xmlCenum)
      d  XML_RELAXNGP_NONE...
      d                 c                   0
      d  XML_RELAXNGP_FREE_DOC...
@@ -147,7 +151,8 @@
      d                 c                   2
 
      d xmlRelaxNGInitTypes...
-     d                 pr            10i 0 extproc('xmlRelaxNGInitTypes')
+     d                 pr                  extproc('xmlRelaxNGInitTypes')
+     d                                     like(xmlCint)
 
      d xmlRelaxNGCleanupTypes...
      d                 pr                  extproc('xmlRelaxNGCleanupTypes')
@@ -164,7 +169,7 @@
      d                 pr                  extproc('xmlRelaxNGNewMemParserCtxt')
      d                                     like(xmlRelaxNGParserCtxtPtr)
      d  buffer                         *   value options(*string)               const char *
-     d  size                         10i 0 value
+     d  size                               value like(xmlCint)
 
      d xmlRelaxNGNewDocParserCtxt...
      d                 pr                  extproc('xmlRelaxNGNewDocParserCtxt')
@@ -172,9 +177,10 @@
      d  doc                                value like(xmlDocPtr)
 
      d xmlRelaxParserSetFlag...
-     d                 pr            10i 0 extproc('xmlRelaxParserSetFlag')
+     d                 pr                  extproc('xmlRelaxParserSetFlag')
+     d                                     like(xmlCint)
      d  ctxt                               value like(xmlRelaxNGParserCtxtPtr)
-     d  flag                         10i 0 value
+     d  flag                               value like(xmlCint)
 
      d xmlRelaxNGFreeParserCtxt...
      d                 pr                  extproc('xmlRelaxNGFreeParserCtxt')
@@ -190,7 +196,8 @@
      d  ctx                            *   value                                void *
 
      d xmlRelaxNGGetParserErrors...
-     d                 pr            10i 0 extproc('xmlRelaxNGGetParserErrors')
+     d                 pr                  extproc('xmlRelaxNGGetParserErrors')
+     d                                     like(xmlCint)
      d  ctxt                               value like(xmlRelaxNGParserCtxtPtr)
      d  err                                like(xmlRelaxNGValidityErrorFunc)
      d  warn                               like(xmlRelaxNGValidityWarningFunc)
@@ -236,7 +243,8 @@
      d  ctx                            *   value                                void *
 
      d xmlRelaxNGGetValidErrors...
-     d                 pr            10i 0 extproc('xmlRelaxNGGetValidErrors')
+     d                 pr                  extproc('xmlRelaxNGGetValidErrors')
+     d                                     like(xmlCint)
      d  ctxt                               value like(xmlRelaxNGValidCtxtPtr)
      d  err                                like(xmlRelaxNGValidityErrorFunc)
      d  warn                               like(xmlRelaxNGValidityWarningFunc)
@@ -259,36 +267,41 @@
      d  ctxt                               value like(xmlRelaxNGValidCtxtPtr)
 
      d xmlRelaxNGValidateDoc...
-     d                 pr            10i 0 extproc('xmlRelaxNGValidateDoc')
+     d                 pr                  extproc('xmlRelaxNGValidateDoc')
+     d                                     like(xmlCint)
      d  ctxt                               value like(xmlRelaxNGValidCtxtPtr)
      d  doc                                value like(xmlDocPtr)
 
       * Interfaces for progressive validation when possible
 
      d xmlRelaxNGValidatePushElement...
-     d                 pr            10i 0 extproc(
+     d                 pr                  extproc(
      d                                     'xmlRelaxNGValidatePushElement')
+     d                                     like(xmlCint)
      d  ctxt                               value like(xmlRelaxNGValidCtxtPtr)
      d  doc                                value like(xmlDocPtr)
      d  elem                               value like(xmlNodePtr)
 
      d xmlRelaxNGValidatePushCData...
-     d                 pr            10i 0 extproc(
+     d                 pr                  extproc(
      d                                     'xmlRelaxNGValidatePushCData')
+     d                                     like(xmlCint)
      d  ctxt                               value like(xmlRelaxNGValidCtxtPtr)
      d  data                           *   value options(*string)               const xmlChar *
-     d  len                          10i 0 value
+     d  len                                value like(xmlCint)
 
      d xmlRelaxNGValidatePopElement...
-     d                 pr            10i 0 extproc(
+     d                 pr                  extproc(
      d                                     'xmlRelaxNGValidatePopElement')
+     d                                     like(xmlCint)
      d  ctxt                               value like(xmlRelaxNGValidCtxtPtr)
      d  doc                                value like(xmlDocPtr)
      d  elem                               value like(xmlNodePtr)
 
      d xmlRelaxNGValidateFullElement...
-     d                 pr            10i 0 extproc(
+     d                 pr                  extproc(
      d                                     'xmlRelaxNGValidateFullElement')
+     d                                     like(xmlCint)
      d  ctxt                               value like(xmlRelaxNGValidCtxtPtr)
      d  doc                                value like(xmlDocPtr)
      d  elem                               value like(xmlNodePtr)
diff --git a/os400/libxmlrpg/schemasInternals.rpgle b/os400/libxmlrpg/schemasInternals.rpgle
index edeea5b..8d3013e 100644
--- a/os400/libxmlrpg/schemasInternals.rpgle
+++ b/os400/libxmlrpg/schemasInternals.rpgle
@@ -15,12 +15,15 @@
       /include "libxmlrpg/xmlversion"
 
       /if defined(LIBXML_SCHEMAS_ENABLED)
+
+      /include "libxmlrpg/xmlTypesC"
       /include "libxmlrpg/xmlregexp"
       /include "libxmlrpg/hash"
       /include "libxmlrpg/dict"
 
      d xmlSchemaValType...
-     d                 s             10i 0 based(######typedef######)           enum
+     d                 s                   based(######typedef######)
+     d                                     like(xmlCenum)
      d  XML_SCHEMAS_UNKNOWN...
      d                 c                   0
      d  XML_SCHEMAS_STRING...
@@ -119,7 +122,8 @@
       * XML Schemas defines multiple type of types.
 
      d xmlSchemaTypeType...
-     d                 s             10i 0 based(######typedef######)           enum
+     d                 s                   based(######typedef######)
+     d                                     like(xmlCenum)
      d  XML_SCHEMA_TYPE_BASIC...                                                A builtin datatype
      d                 c                   1
      d  XML_SCHEMA_TYPE_ANY...
@@ -202,7 +206,8 @@
      d                 c                   2001
 
      d xmlSchemaContentType...
-     d                 s             10i 0 based(######typedef######)           enum
+     d                 s                   based(######typedef######)
+     d                                     like(xmlCenum)
      d  XML_SCHEMA_CONTENT_UNKNOWN...
      d                 c                   0
      d  XML_SCHEMA_CONTENT_EMPTY...
@@ -357,13 +362,13 @@
      d  annot                              like(xmlSchemaAnnotPtr)
       *
      d  base                               like(xmlSchemaTypePtr)               Deprecated
-     d  occurs                       10i 0                                      Deprecated
+     d  occurs                             like(xmlCint)                        Deprecated
      d  defValue                       *                                        const xmlChar *
      d  subtypes                           like(xmlSchemaTypePtr)               The type definition
      d  node                               like(xmlNodePtr)
      d  targetNamespace...                                                      const xmlChar *
      d                                 *
-     d  flags                        10i 0
+     d  flags                              like(xmlCint)
      d  refPrefix                      *                                        const xmlChar *
      d  defVal                             like(xmlSchemaValPtr)                Compiled constraint
      d  refDecl                            like(xmlSchemaAttributePtr)          Deprecated
@@ -413,14 +418,14 @@
      d  id                             *                                        const xmlChar *
      d  annot                              like(xmlSchemaAnnotPtr)
      d  node                               like(xmlNodePtr)
-     d  minOccurs                    10i 0                                      Deprecated; not used
-     d  maxOccurs                    10i 0                                      Deprecated; not used
+     d  minOccurs                          like(xmlCint)                        Deprecated; not used
+     d  maxOccurs                          like(xmlCint)                        Deprecated; not used
      d  processContents...
-     d                               10i 0
-     d  any                          10i 0                                      Ns constraint ##any?
+     d                                     like(xmlCint)
+     d  any                                like(xmlCint)                        Ns constraint ##any?
      d  nsSet                              like(xmlSchemaWildcardNsPtr)         Allowed namspce list
      d  negNsSet                           like(xmlSchemaWildcardNsPtr)         Negated namespace
-     d  flags                        10i 0                                      Deprecated; not used
+     d  flags                              like(xmlCint)                        Deprecated; not used
 
       * XML_SCHEMAS_ATTRGROUP_WILDCARD_BUILDED:
       *
@@ -478,7 +483,7 @@
       *
      d  attributes                         like(xmlSchemaAttributePtr)          Deprecated; not used
      d  node                               like(xmlNodePtr)
-     d  flags                        10i 0
+     d  flags                              like(xmlCint)
      d  attributeWildcard...
      d                                     like(xmlSchemaWildcardPtr)
      d  refPrefix                      *                                        const xmlChar *
@@ -753,21 +758,21 @@
      d  subtypes                           like(xmlSchemaTypePtr)
      d  attributes                         like(xmlSchemaAttributePtr)          Deprecated; not used
      d  node                               like(xmlNodePtr)
-     d  minOccurs                    10i 0                                      Deprecated; not used
-     d  maxOccurs                    10i 0                                      Deprecated; not used
+     d  minOccurs                          like(xmlCint)                        Deprecated; not used
+     d  maxOccurs                          like(xmlCint)                        Deprecated; not used
       *
-     d  flags                        10i 0
+     d  flags                              like(xmlCint)
      d  contentType                        like(xmlSchemaContentType)
      d  base                           *                                        const xmlChar *
      d  baseNs                         *                                        const xmlChar *
      d  baseType                           like(xmlSchemaTypePtr)               Base type component
      d  facets                             like(xmlSchemaFacetPtr)              Local facets
      d  redef                              like(xmlSchemaTypePtr)               Deprecated; not used
-     d  recurse                      10i 0                                      Obsolete
+     d  recurse                            like(xmlCint)                        Obsolete
      d  attributeUses                      like(xmlSchemaAttributeLinkPtr)      Deprecated; not used
      d  attributeWildcard...
      d                                     like(xmlSchemaWildcardPtr)
-     d  builtInType                  10i 0                                      Built-in types type
+     d  builtInType                        like(xmlCint)                        Built-in types type
      d  memberTypes                        like(xmlSchemaTypeLinkPtr)           Union member-types
      d  facetSet                           like(xmlSchemaFacetLinkPtr)          All facets
      d  refPrefix                      *                                        const xmlChar *
@@ -937,10 +942,10 @@
      d  subtypes                           like(xmlSchemaTypePtr)
      d  attributes                         like(xmlSchemaAttributePtr)          Deprecated; not used
      d  node                               like(xmlNodePtr)
-     d  minOccurs                    10i 0                                      Deprecated; not used
-     d  maxOccurs                    10i 0                                      Deprecated; not used
+     d  minOccurs                          like(xmlCint)                        Deprecated; not used
+     d  maxOccurs                          like(xmlCint)                        Deprecated; not used
       *
-     d  flags                        10i 0
+     d  flags                              like(xmlCint)
      d  targetNamespace...
      d                                 *                                        const xmlChar *
      d  namedType                      *                                        const xmlChar *
@@ -995,8 +1000,8 @@
      d  id                             *                                        const xmlChar *
      d  annot                              like(xmlSchemaAnnotPtr)
      d  node                               like(xmlNodePtr)
-     d  fixed                        10i 0                                      _FACET_PRESERVE, etc
-     d  whitespace                   10i 0
+     d  fixed                              like(xmlCint)                        _FACET_PRESERVE, etc
+     d  whitespace                         like(xmlCint)
      d  val                                like(xmlSchemaValPtr)                Compiled value
      d  regexp                             like(xmlRegexpPtr)                   Regexp for patterns
 
@@ -1106,7 +1111,7 @@
      d  id                             *                                        const xmlChar *
      d  doc                                like(xmlDocPtr)
      d  annot                              like(xmlSchemaAnnotPtr)
-     d  flags                        10i 0
+     d  flags                              like(xmlCint)
       *
      d  typeDecl                           like(xmlHashTablePtr)
      d  attrDecl                           like(xmlHashTablePtr)
@@ -1120,8 +1125,8 @@
      d  groupDecl                          like(xmlHashTablePtr)
      d  dict                               like(xmlDictPtr)
      d  includes                       *                                        void *
-     d  preserve                     10i 0                                      Do not free doc ?
-     d  counter                      10i 0                                      For name uniqueness
+     d  preserve                           like(xmlCint)                        Do not free doc ?
+     d  counter                            like(xmlCint)                        For name uniqueness
      d  idcDef                             like(xmlHashTablePtr)                All id-constr. defs
      d  volatiles                      *                                        void *
 
diff --git a/os400/libxmlrpg/schematron.rpgle b/os400/libxmlrpg/schematron.rpgle
index c987cd5..8271ca5 100644
--- a/os400/libxmlrpg/schematron.rpgle
+++ b/os400/libxmlrpg/schematron.rpgle
@@ -12,10 +12,12 @@
 
       /if defined(LIBXML_SCHEMATRON_ENABLED)
 
+      /include "libxmlrpg/xmlTypesC"
       /include "libxmlrpg/tree"
 
      d xmlSchematronValidOptions...
-     d                 s             10i 0 based(######typedef######)           enum
+     d                 s                   based(######typedef######)
+     d                                     like(xmlCenum)
      d  XML_SCHEMATRON_OUT_QUIET...                                             Quiet no report
      d                 c                   X'0001'
      d  XML_SCHEMATRON_OUT_TEXT...                                              Build textual report
@@ -78,7 +80,7 @@
      d                                     'xmlSchematronNewMemParserCtxt')
      d                                     like(xmlSchematronParserCtxtPtr)
      d  buffer                         *   value options(*string)               const char *
-     d  size                         10i 0 value
+     d  size                               value like(xmlCint)
 
      d xmlSchematronNewDocParserCtxt...
      d                 pr                  extproc(
@@ -105,8 +107,9 @@
      d  ctx                            *   value                                void *
 
      d xmlSchematronGetParserErrors...
-     d                 pr            10i 0 extproc(
+     d                 pr                  extproc(
      d                                     'xmlSchematronGetParserErrors')
+     d                                     like(xmlCint)
      d  ctxt                               value
      d                                     like(xmlSchematronParserCtxtPtr)
      d  err                                like(xmlSchematronValidityErrorFunc)
@@ -115,7 +118,8 @@
      d  ctx                            *                                        void *(*)
 
      d xmlSchematronIsValid...
-     d                 pr            10i 0 extproc('xmlSchematronIsValid')
+     d                 pr                  extproc('xmlSchematronIsValid')
+     d                                     like(xmlCint)
      d  ctxt                               value like(xmlSchematronValidCtxtPtr)
       /endif
 
@@ -150,8 +154,9 @@
      d  ctx                            *   value                                void *
 
      d xmlSchematronGetValidErrors...
-     d                 pr            10i 0 extproc(
+     d                 pr                  extproc(
      d                                     'xmlSchematronGetValidErrors')
+     d                                     like(xmlCint)
      d  ctxt                               value like(xmlSchematronValidCtxtPtr)
      d  err                                like(xmlSchematronValidityErrorFunc)
      d  warn                               like(
@@ -159,19 +164,22 @@
      d  ctx                            *                                        void *(*)
 
      d xmlSchematronSetValidOptions...
-     d                 pr            10i 0 extproc(
+     d                 pr                  extproc(
      d                                     'xmlSchematronSetValidOptions')
+     d                                     like(xmlCint)
      d  ctxt                               value like(xmlSchematronValidCtxtPtr)
-     d  options                      10i 0 value
+     d  options                            value like(xmlCint)
 
      d xmlSchematronValidCtxtGetOptions...
-     d                 pr            10i 0 extproc(
+     d                 pr                  extproc(
      d                                     'xmlSchematronValidCtxtGetOptions')
+     d                                     like(xmlCint)
      d  ctxt                               value like(xmlSchematronValidCtxtPtr)
 
      d xmlSchematronValidateOneElement...
-     d                 pr            10i 0 extproc(
+     d                 pr                  extproc(
      d                                     'xmlSchematronValidateOneElement')
+     d                                     like(xmlCint)
      d  ctxt                               value like(xmlSchematronValidCtxtPtr)
      d  elem                               value like(xmlNodePtr)
       /endif
@@ -180,14 +188,15 @@
      d                 pr                  extproc('xmlSchematronNewValidCtxt')
      d                                     like(xmlSchematronValidCtxtPtr)
      d  schema                             value like(xmlSchematronPtr)
-     d  options                      10i 0 value
+     d  options                            value like(xmlCint)
 
      d xmlSchematronFreeValidCtxt...
      d                 pr                  extproc('xmlSchematronFreeValidCtxt')
      d  ctxt                               value like(xmlSchematronValidCtxtPtr)
 
      d xmlSchematronValidateDoc...
-     d                 pr            10i 0 extproc('xmlSchematronValidateDoc')
+     d                 pr                  extproc('xmlSchematronValidateDoc')
+     d                                     like(xmlCint)
      d  ctxt                               value like(xmlSchematronValidCtxtPtr)
      d  instance                           value like(xmlDocPtr)
 
diff --git a/os400/libxmlrpg/threads.rpgle b/os400/libxmlrpg/threads.rpgle
index 07d4278..124798b 100644
--- a/os400/libxmlrpg/threads.rpgle
+++ b/os400/libxmlrpg/threads.rpgle
@@ -10,6 +10,7 @@
       /define XML_THREADS_H__
 
       /include "libxmlrpg/xmlversion"
+      /include "libxmlrpg/xmlTypesC"
 
       * xmlMutex are a simple mutual exception locks.
 
@@ -55,10 +56,12 @@
      d xmlUnlockLibrary...
      d                 pr                  extproc('xmlUnlockLibrary')
 
-     d xmlGetThreadId  pr            10i 0 extproc('xmlGetThreadId')
+     d xmlGetThreadId  pr                  extproc('xmlGetThreadId')
+     d                                     like(xmlCint)
 
      d xmlIsMainThread...
-     d                 pr            10i 0 extproc('xmlIsMainThread')
+     d                 pr                  extproc('xmlIsMainThread')
+     d                                     like(xmlCint)
 
      d xmlCleanupThreads...
      d                 pr                  extproc('xmlCleanupThreads')
diff --git a/os400/libxmlrpg/tree.rpgle b/os400/libxmlrpg/tree.rpgle
index 5c67f4f..6512778 100644
--- a/os400/libxmlrpg/tree.rpgle
+++ b/os400/libxmlrpg/tree.rpgle
@@ -67,7 +67,8 @@
       * need or double it's allocated size each time it is found too small.
 
      d xmlBufferAllocationScheme...
-     d                 s             10i 0 based(######typedef######)           enum
+     d                 s                   based(######typedef######)
+     d                                     like(xmlCenum)
      d  XML_BUFFER_ALLOC_DOUBLEIT...
      d                 c                   0
      d  XML_BUFFER_ALLOC_EXACT...
@@ -89,8 +90,8 @@
      d xmlBuffer       ds                  based(xmlBufferPtr)
      d                                     align qualified
      d  content                        *                                        xmlChar *
-     d  use                          10u 0                                      The buffer size used
-     d  size                         10u 0                                      The buffer size
+     d  use                                like(xmlCuint)
+     d  size                               like(xmlCuint)
      d  alloc                              like(xmlBufferAllocationScheme)      The realloc method
      d  contentIO                      *                                        xmlChar *
 
@@ -150,7 +151,8 @@
       * Actually this had diverged a bit, and now XML_DOCUMENT_TYPE_NODE should
       * be deprecated to use an XML_DTD_NODE.
 
-     d xmlElementType  s             10i 0 based(######typedef######)           enum
+     d xmlElementType  s                   based(######typedef######)
+     d                                     like(xmlCenum)
      d  XML_ELEMENT_NODE...
      d                 c                   1
      d  XML_ATTRIBUTE_NODE...
@@ -212,7 +214,8 @@
       * A DTD Attribute type definition.
 
      d xmlAttributeType...
-     d                 s             10i 0 based(######typedef######)           enum
+     d                 s                   based(######typedef######)
+     d                                     like(xmlCenum)
      d  XML_ATTRIBUTE_CDATA...
      d                 c                   1
      d  XML_ATTRIBUTE_ID...
@@ -239,7 +242,8 @@
       * A DTD Attribute default definition.
 
      d xmlAttributeDefault...
-     d                 s             10i 0 based(######typedef######)           enum
+     d                 s                   based(######typedef######)
+     d                                     like(xmlCenum)
      d  XML_ATTRIBUTE_NONE...
      d                 c                   1
      d  XML_ATTRIBUTE_REQUIRED...
@@ -298,7 +302,8 @@
       * Possible definitions of element content types.
 
      d xmlElementContentType...
-     d                 s             10i 0 based(######typedef######)           enum
+     d                 s                   based(######typedef######)
+     d                                     like(xmlCenum)
      d  XML_ELEMENT_CONTENT_PCDATA...
      d                 c                   1
      d  XML_ELEMENT_CONTENT_ELEMENT...
@@ -313,7 +318,8 @@
       * Possible definitions of element content occurrences.
 
      d xmlElementContentOccur...
-     d                 s             10i 0 based(######typedef######)           enum
+     d                 s                   based(######typedef######)
+     d                                     like(xmlCenum)
      d  XML_ELEMENT_CONTENT_ONCE...
      d                 c                   1
      d  XML_ELEMENT_CONTENT_OPT...
@@ -347,7 +353,8 @@
       * The different possibilities for an element content type.
 
      d xmlElementTypeVal...
-     d                 s             10i 0 based(######typedef######)           enum
+     d                 s                   based(######typedef######)
+     d                                     like(xmlCenum)
      d  XML_ELEMENT_TYPE_UNDEFINED...
      d                 c                   0
      d  XML_ELEMENT_TYPE_EMPTY...
@@ -469,7 +476,7 @@
      d  next                               like(xmlIdPtr)                       Next ID
      d  attr                               like(xmlAttrPtr)                     Attribute holding it
      d  name                           *                                        const xmlChar *
-     d  lineno                       10i 0                                      Line # if not avail
+     d  lineno                             like(xmlCint)                        Line # if not avail
      d  doc                                like(xmlDocPtr)                      Doc holding ID
 
       * xmlRef:
@@ -484,7 +491,7 @@
      d  value                          *                                        const xmlChar *
      d  attr                               like(xmlAttrPtr)                     Attribute holding it
      d  name                           *                                        const xmlChar *
-     d  lineno                       10i 0                                      Line # if not avail
+     d  lineno                             like(xmlCint)                        Line # if not avail
 
       * xmlNode:
       *
@@ -515,7 +522,8 @@
       * Some of them are linked to similary named xmlParserOption
 
      d xmlDocProperties...
-     d                 s             10i 0 based(######typedef######)           enum
+     d                 s                   based(######typedef######)
+     d                                     like(xmlCenum)
      d  XML_DOC_WELLFORMED...
      d                 c                   X'00000001'
      d  XML_DOC_NSVALID...
@@ -546,8 +554,8 @@
      d  next                               like(xmlNodePtr)                     next sibling link
      d  prev                               like(xmlNodePtr)                     previous sibling lnk
      d  doc                                like(xmlDocPtr)                      Reference to itself
-     d  compression                  10i 0                                      zlib compression lev
-     d  standalone                   10i 0
+     d  compression                        like(xmlCint)                        zlib compression lev
+     d  standalone                         like(xmlCint)
      d  intSubset                          like(xmlDtdPtr)                      Internal subset
      d  extSubset                          like(xmlDtdPtr)                      External subset
      d  oldns                              like(xmlNsPtr)                       Global namespace
@@ -556,11 +564,11 @@
      d  ids                            *                                        IDs hash table
      d  refs                           *                                        IDREFs hash table
      d  URL                            *                                        const xmlChar *
-     d  charset                      10i 0                                      In-memory encoding
+     d  charset                            like(xmlCint)                        In-memory encoding
      d  dict                           *                                        xmlDictPtr for names
      d  psvi                           *                                        Type/PSVI ino
-     d  parseFlags                   10i 0                                      xmlParserOption's
-     d  properties                   10i 0                                      xmlDocProperties
+     d  parseFlags                         like(xmlCint)                        xmlParserOption's
+     d  properties                         like(xmlCint)                        xmlDocProperties
 
       * xmlDOMWrapAcquireNsFunction:
       * @ctxt:  a DOM wrapper context
@@ -587,7 +595,7 @@
      d                 ds                  based(xmlDOMWrapCtxtPtr)
      d                                     align qualified
      d  #private                       *                                        void *
-     d  type                         10i 0
+     d  type                               like(xmlCint)
      d  namespaceMap                   *                                        void *
      d  getNsForNodeFunc...
      d                                     like(xmlDOMWrapAcquireNsFunction)
@@ -619,9 +627,10 @@
       /endif
       /if defined(XML_TESTVAL)
      d xmlValidateNCName...
-     d                 pr            10i 0 extproc('xmlValidateNCName')
+     d                 pr                  extproc('xmlValidateNCName')
+     d                                     like(xmlCint)
      d  value                          *   value options(*string)               const xmlChar *
-     d  space                        10i 0 value
+     d  space                              value like(xmlCint)
 
       /undefine XML_TESTVAL
       /endif
@@ -633,19 +642,22 @@
       /endif
       /if defined(XML_TESTVAL)
      d xmlValidateQName...
-     d                 pr            10i 0 extproc('xmlValidateQName')
+     d                 pr                  extproc('xmlValidateQName')
+     d                                     like(xmlCint)
      d  value                          *   value options(*string)               const xmlChar *
-     d  space                        10i 0 value
+     d  space                              value like(xmlCint)
 
      d xmlValidateName...
-     d                 pr            10i 0 extproc('xmlValidateName')
+     d                 pr                  extproc('xmlValidateName')
+     d                                     like(xmlCint)
      d  value                          *   value options(*string)               const xmlChar *
-     d  space                        10i 0 value
+     d  space                              value like(xmlCint)
 
      d xmlValidateNMToken...
-     d                 pr            10i 0 extproc('xmlValidateNMToken')
+     d                 pr                  extproc('xmlValidateNMToken')
+     d                                     like(xmlCint)
      d  value                          *   value options(*string)               const xmlChar *
-     d  space                        10i 0 value
+     d  space                              value like(xmlCint)
 
       /undefine XML_TESTVAL
       /endif
@@ -654,7 +666,7 @@
      d  ncname                         *   value options(*string)               const xmlChar *
      d  prefix                         *   value options(*string)               const xmlChar *
      d  memory                    65535    options(*varsize: *omit)             xmlChar[]
-     d  len                          10i 0 value                                memory length
+     d  len                                value like(xmlCint)                  memory length
 
      d xmlSplitQName2  pr              *   extproc('xmlSplitQName2')            xmlChar *
      d  name                           *   value options(*string)               const xmlChar *
@@ -662,7 +674,7 @@
 
      d xmlSplitQName3  pr              *   extproc('xmlSplitQName3')            const xmlChar *
      d  name                           *   value options(*string)               const xmlChar *
-     d  len                          10i 0
+     d  len                                like(xmlCint)
 
       * Handling Buffers, the old ones see @xmlBuf for the new ones.
 
@@ -693,44 +705,52 @@
      d  size                               value like(xmlCsize_t)
 
      d xmlBufferResize...
-     d                 pr            10i 0 extproc('xmlBufferResize')
+     d                 pr                  extproc('xmlBufferResize')
+     d                                     like(xmlCint)
      d  buf                                value like(xmlBufferPtr)
      d  size                               value like(xmlCsize_t)
 
      d xmlBufferFree   pr                  extproc('xmlBufferFree')
      d  buf                                value like(xmlBufferPtr)
 
-     d xmlBufferDump   pr            10i 0 extproc('xmlBufferDump')
+     d xmlBufferDump   pr                  extproc('xmlBufferDump')
+     d                                     like(xmlCint)
      d  file                           *   value                                FILE *
      d  buf                                value like(xmlBufferPtr)
 
-     d xmlBufferAdd    pr            10i 0 extproc('xmlBufferAdd')
+     d xmlBufferAdd    pr                  extproc('xmlBufferAdd')
+     d                                     like(xmlCint)
      d  buf                                value like(xmlBufferPtr)
      d  str                            *   value options(*string)               const xmlChar *
-     d  len                          10i 0 value                                str length
+     d  len                                value like(xmlCint)                  str length
 
      d xmlBufferAddHead...
-     d                 pr            10i 0 extproc('xmlBufferAddHead')
+     d                 pr                  extproc('xmlBufferAddHead')
+     d                                     like(xmlCint)
      d  buf                                value like(xmlBufferPtr)
      d  str                            *   value options(*string)               const xmlChar *
-     d  len                          10i 0 value                                str length
+     d  len                                value like(xmlCint)                  str length
 
-     d xmlBufferCat    pr            10i 0 extproc('xmlBufferCat')
+     d xmlBufferCat    pr                  extproc('xmlBufferCat')
+     d                                     like(xmlCint)
      d  buf                                value like(xmlBufferPtr)
      d  str                            *   value options(*string)               const xmlChar *
 
-     d xmlBufferCCat   pr            10i 0 extproc('xmlBufferCCat')
+     d xmlBufferCCat   pr                  extproc('xmlBufferCCat')
+     d                                     like(xmlCint)
      d  buf                                value like(xmlBufferPtr)
      d  str                            *   value options(*string)               const char *
 
      d xmlBufferShrink...
-     d                 pr            10i 0 extproc('xmlBufferShrink')
+     d                 pr                  extproc('xmlBufferShrink')
+     d                                     like(xmlCint)
      d  buf                                value like(xmlBufferPtr)
-     d  len                          10u 0 value                                str length
+     d  len                                value like(xmlCuint)
 
-     d xmlBufferGrow   pr            10i 0 extproc('xmlBufferGrow')
+     d xmlBufferGrow   pr                  extproc('xmlBufferGrow')
+     d                                     like(xmlCint)
      d  buf                                value like(xmlBufferPtr)
-     d  len                          10u 0 value                                str length
+     d  len                                value like(xmlCuint)
 
      d xmlBufferEmpty  pr                  extproc('xmlBufferEmpty')
      d  buf                                value like(xmlBufferPtr)
@@ -751,7 +771,8 @@
      d                                     like(xmlBufferAllocationScheme)
 
      d xmlBufferLength...
-     d                 pr            10i 0 extproc('xmlBufferLength')
+     d                 pr                  extproc('xmlBufferLength')
+     d                                     like(xmlCint)
      d  buf                                value like(xmlBufferPtr)
 
       * Creating/freeing new structures.
@@ -876,7 +897,7 @@
      d xmlCopyDoc      pr                  extproc('xmlCopyDoc')
      d                                     like(xmlDocPtr)
      d  doc                                value like(xmlDocPtr)
-     d  recursive                    10i 0 value
+     d  recursive                          value like(xmlCint)
 
       /undefine XML_TESTVAL
       /endif
@@ -950,12 +971,12 @@
      d                                     like(xmlNodePtr)
      d  doc                                value like(xmlDocPtr)
      d  content                        *   value options(*string)               const xmlChar *
-     d  len                          10i 0 value
+     d  len                                value like(xmlCint)
 
      d xmlNewTextLen   pr                  extproc('xmlNewTextLen')
      d                                     like(xmlNodePtr)
      d  content                        *   value options(*string)               const xmlChar *
-     d  len                          10i 0 value
+     d  len                                value like(xmlCint)
 
      d xmlNewDocComment...
      d                 pr                  extproc('xmlNewDocComment')
@@ -972,7 +993,7 @@
      d                                     like(xmlNodePtr)
      d  doc                                value like(xmlDocPtr)
      d  content                        *   value options(*string)               const xmlChar *
-     d  len                          10i 0 value
+     d  len                                value like(xmlCint)
 
      d xmlNewCharRef   pr                  extproc('xmlNewCharRef')
      d                                     like(xmlNodePtr)
@@ -988,13 +1009,13 @@
      d xmlCopyNode     pr                  extproc('xmlCopyNode')
      d                                     like(xmlNodePtr)
      d  node                               value like(xmlNodePtr)
-     d  recursive                    10i 0 value
+     d  recursive                          value like(xmlCint)
 
      d xmlDocCopyNode  pr                  extproc('xmlDocCopyNode')
      d                                     like(xmlNodePtr)
      d  node                               value like(xmlNodePtr)
      d  doc                                value like(xmlDocPtr)
-     d  recursive                    10i 0 value
+     d  recursive                          value like(xmlCint)
 
      d xmlDocCopyNodeList...
      d                 pr                  extproc('xmlDocCopyNodeList')
@@ -1059,10 +1080,12 @@
      d                                     like(xmlNodePtr)
      d  parent                             value like(xmlNodePtr)
 
-     d xmlNodeIsText   pr            10i 0 extproc('xmlNodeIsText')
+     d xmlNodeIsText   pr                  extproc('xmlNodeIsText')
+     d                                     like(xmlCint)
      d  node                               value like(xmlNodePtr)
 
-     d xmlIsBlankNode  pr            10i 0 extproc('xmlIsBlankNode')
+     d xmlIsBlankNode  pr                  extproc('xmlIsBlankNode')
+     d                                     like(xmlCint)
      d  node                               value like(xmlNodePtr)
 
       * Changing the structure.
@@ -1149,10 +1172,11 @@
      d  first                              value like(xmlNodePtr)
      d  second                             value like(xmlNodePtr)
 
-     d xmlTextConcat   pr            10i 0 extproc('xmlTextConcat')
+     d xmlTextConcat   pr                  extproc('xmlTextConcat')
+     d                                     like(xmlCint)
      d  node                               value like(xmlNodePtr)
      d  content                        *   value options(*string)               const xmlChar *
-     d  len                          10i 0 value
+     d  len                                value like(xmlCint)
 
      d xmlFreeNodeList...
      d                 pr                  extproc('xmlFreeNodeList')
@@ -1276,20 +1300,20 @@
      d                                     like(xmlNodePtr)
      d  doc                                value like(xmlDocPtr)
      d  value                          *   value options(*string)               const xmlChar *
-     d  len                          10i 0 value
+     d  len                                value like(xmlCint)
 
      d xmlNodeListGetString...
      d                 pr              *   extproc('xmlNodeListGetString')      xmlChar *
      d  doc                                value like(xmlDocPtr)
      d  list                               value like(xmlNodePtr)
-     d  inLine                       10i 0 value
+     d  inLine                             value like(xmlCint)
 
       /if defined(LIBXML_TREE_ENABLED)
      d xmlNodeListGetRawString...
      d                 pr              *   extproc('xmlNodeListGetRawString')   xmlChar *
      d  doc                                value like(xmlDocPtr)
      d  list                               value like(xmlNodePtr)
-     d  inLine                       10i 0 value
+     d  inLine                             value like(xmlCint)
       /endif                                                                    LIBXML_TREE_ENABLED
 
      d xmlNodeSetContent...
@@ -1302,7 +1326,7 @@
      d                 pr                  extproc('xmlNodeSetContentLen')
      d  cur                                value like(xmlNodePtr)
      d  content                        *   value options(*string)               const xmlChar *
-     d  len                          10i 0 value
+     d  len                                value like(xmlCint)
       /endif                                                                    LIBXML_TREE_ENABLED
 
      d xmlNodeAddContent...
@@ -1314,19 +1338,21 @@
      d                 pr                  extproc('xmlNodeAddContentLen')
      d  cur                                value like(xmlNodePtr)
      d  content                        *   value options(*string)               const xmlChar *
-     d  len                          10i 0 value
+     d  len                                value like(xmlCint)
 
      d xmlNodeGetContent...
      d                 pr              *   extproc('xmlNodeGetContent')         xmlChar *
      d  cur                                value like(xmlNodePtr)
 
      d xmlNodeBufGetContent...
-     d                 pr            10i 0 extproc('xmlNodeBufGetContent')
+     d                 pr                  extproc('xmlNodeBufGetContent')
+     d                                     like(xmlCint)
      d  buffer                             value like(xmlBufferPtr)
      d  cur                                value like(xmlNodePtr)
 
      d xmlBufGetNodeContent...
-     d                 pr            10i 0 extproc('xmlBufGetNodeContent')
+     d                 pr                  extproc('xmlBufGetNodeContent')
+     d                                     like(xmlCint)
      d  buf                                value like(xmlBufPtr)
      d  cur                                value like(xmlNodePtr)
 
@@ -1334,7 +1360,8 @@
      d  cur                                value like(xmlNodePtr)
 
      d xmlNodeGetSpacePreserve...
-     d                 pr            10i 0 extproc('xmlNodeGetSpacePreserve')
+     d                 pr                  extproc('xmlNodeGetSpacePreserve')
+     d                                     like(xmlCint)
      d  cur                                value like(xmlNodePtr)
 
       /if defined(LIBXML_TREE_ENABLED)
@@ -1345,7 +1372,7 @@
      d xmlNodeSetSpacePreserve...
      d                 pr                  extproc('xmlNodeSetSpacePreserve')
      d  cur                                value like(xmlNodePtr)
-     d  val                          10i 0 value
+     d  val                                value like(xmlCint)
       /endif                                                                    LIBXML_TREE_ENABLED
 
      d xmlNodeGetBase  pr              *   extproc('xmlNodeGetBase')            xmlChar *
@@ -1367,7 +1394,8 @@
 
       * Removing content.
 
-     d xmlRemoveProp   pr            10i 0 extproc('xmlRemoveProp')
+     d xmlRemoveProp   pr                  extproc('xmlRemoveProp')
+     d                                     like(xmlCint)
      d  cur                                value like(xmlAttrPtr)
 
       /if defined(LIBXML_TREE_ENABLED)
@@ -1376,12 +1404,14 @@
       /define XML_TESTVAL
       /endif
       /if defined(XML_TESTVAL)
-     d xmlUnsetNsProp  pr            10i 0 extproc('xmlUnsetNsProp')
+     d xmlUnsetNsProp  pr                  extproc('xmlUnsetNsProp')
+     d                                     like(xmlCint)
      d  node                               value like(xmlNodePtr)
      d  ns                                 value like(xmlNsPtr)
      d  name                           *   value options(*string)               const xmlChar *
 
-     d xmlUnsetProp    pr            10i 0 extproc('xmlUnsetProp')
+     d xmlUnsetProp    pr                  extproc('xmlUnsetProp')
+     d                                     like(xmlCint)
      d  node                               value like(xmlNodePtr)
      d  name                           *   value options(*string)               const xmlChar *
 
@@ -1418,7 +1448,8 @@
       * Namespace handling.
 
      d xmlReconciliateNs...
-     d                 pr            10i 0 extproc('xmlReconciliateNs')
+     d                 pr                  extproc('xmlReconciliateNs')
+     d                                     like(xmlCint)
      d  doc                                value like(xmlDocPtr)
      d  tree                               value like(xmlNodePtr)
       /endif
@@ -1431,37 +1462,39 @@
      d                 pr                  extproc('xmlDocDumpFormatMemory')
      d  cur                                value like(xmlDocPtr)
      d  mem                            *                                        xmlChar * (*)
-     d  size                         10i 0
-     d  format                       10i 0 value
+     d  size                               like(xmlCint)
+     d  format                             value like(xmlCint)
 
      d xmlDocDumpMemory...
      d                 pr                  extproc('xmlDocDumpMemory')
      d  cur                                value like(xmlDocPtr)
      d  mem                            *                                        xmlChar * (*)
-     d  size                         10i 0
+     d  size                               like(xmlCint)
 
      d xmlDocDumpMemoryEnc...
      d                 pr                  extproc('xmlDocDumpMemoryEnc')
      d  out_doc                            value like(xmlDocPtr)
      d  doc_txt_ptr                    *                                        xmlChar * (*)
-     d  doc_txt_len                  10i 0
+     d  doc_txt_len                        like(xmlCint)
      d  txt_encoding                   *   value options(*string)               const char *
 
      d xmlDocDumpFormatMemoryEnc...
      d                 pr                  extproc('xmlDocDumpFormatMemoryEnc')
      d  out_doc                            value like(xmlDocPtr)
      d  doc_txt_ptr                    *                                        xmlChar * (*)
-     d  doc_txt_len                  10i 0
+     d  doc_txt_len                        like(xmlCint)
      d  txt_encoding                   *   value options(*string)               const char *
-     d  format                       10i 0 value
+     d  format                             value like(xmlCint)
 
      d xmlDocFormatDump...
-     d                 pr            10i 0 extproc('xmlDocFormatDump')
+     d                 pr                  extproc('xmlDocFormatDump')
+     d                                     like(xmlCint)
      d  f                              *   value                                FILE *
      d  cur                                value like(xmlDocPtr)
-     d  format                       10i 0 value
+     d  format                             value like(xmlCint)
 
-     d xmlDocDump      pr            10i 0 extproc('xmlDocDump')
+     d xmlDocDump      pr                  extproc('xmlDocDump')
+     d                                     like(xmlCint)
      d  f                              *   value                                FILE *
      d  cur                                value like(xmlDocPtr)
 
@@ -1470,60 +1503,67 @@
      d  doc                                value like(xmlDocPtr)
      d  cur                                value like(xmlNodePtr)
 
-     d xmlSaveFile     pr            10i 0 extproc('xmlSaveFile')
+     d xmlSaveFile     pr                  extproc('xmlSaveFile')
+     d                                     like(xmlCint)
      d  filename                       *   value options(*string)               const char *
      d  cur                                value like(xmlDocPtr)
 
      d xmlSaveFormatFile...
-     d                 pr            10i 0 extproc('xmlSaveFormatFile')
+     d                 pr                  extproc('xmlSaveFormatFile')
+     d                                     like(xmlCint)
      d  filename                       *   value options(*string)               const char *
      d  cur                                value like(xmlDocPtr)
-     d  format                       10i 0 value
+     d  format                             value like(xmlCint)
 
      d xmlBufNodeDump  pr                  extproc('xmlBufNodeDump')
      d                                     like(xmlCsize_t)
      d  buf                                value like(xmlBufPtr)
      d  doc                                value like(xmlDocPtr)
      d  cur                                value like(xmlNodePtr)
-     d  level                        10i 0 value
-     d  format                       10i 0 value
+     d  level                              value like(xmlCint)
+     d  format                             value like(xmlCint)
 
-     d xmlNodeDump     pr            10i 0 extproc('xmlNodeDump')
+     d xmlNodeDump     pr                  extproc('xmlNodeDump')
+     d                                     like(xmlCint)
      d  buf                                value like(xmlBufferPtr)
      d  doc                                value like(xmlDocPtr)
      d  cur                                value like(xmlNodePtr)
-     d  level                        10i 0 value
-     d  format                       10i 0 value
+     d  level                              value like(xmlCint)
+     d  format                             value like(xmlCint)
 
-     d xmlSaveFileTo   pr            10i 0 extproc('xmlSaveFileTo')
+     d xmlSaveFileTo   pr                  extproc('xmlSaveFileTo')
+     d                                     like(xmlCint)
      d  buf                                value like(xmlOutputBufferPtr)
      d  cur                                value like(xmlDocPtr)
      d  encoding                       *   value options(*string)               const char *
 
      d xmlSaveFormatFileTo...
-     d                 pr            10i 0 extproc('xmlSaveFormatFileTo')
+     d                 pr                  extproc('xmlSaveFormatFileTo')
+     d                                     like(xmlCint)
      d  buf                                value like(xmlOutputBufferPtr)
      d  cur                                value like(xmlDocPtr)
      d  encoding                       *   value options(*string)               const char *
-     d  format                       10i 0 value
+     d  format                             value like(xmlCint)
 
      d xmlNodeDumpOutput...
      d                 pr                  extproc('xmlNodeDumpOutput')
      d  buf                                value like(xmlOutputBufferPtr)
      d  doc                                value like(xmlDocPtr)
      d  cur                                value like(xmlNodePtr)
-     d  level                        10i 0 value
-     d  format                       10i 0 value
+     d  level                              value like(xmlCint)
+     d  format                             value like(xmlCint)
      d  encoding                       *   value options(*string)               const char *
 
      d xmlSaveFormatFileEnc...
-     d                 pr            10i 0 extproc('xmlSaveFormatFileEnc')
+     d                 pr                  extproc('xmlSaveFormatFileEnc')
+     d                                     like(xmlCint)
      d  filename                       *   value options(*string)               const char *
      d  cur                                value like(xmlDocPtr)
      d  encoding                       *   value options(*string)               const char *
-     d  format                       10i 0 value
+     d  format                             value like(xmlCint)
 
-     d xmlSaveFileEnc  pr            10i 0 extproc('xmlSaveFileEnc')
+     d xmlSaveFileEnc  pr                  extproc('xmlSaveFileEnc')
+     d                                     like(xmlCint)
      d  filename                       *   value options(*string)               const char *
      d  cur                                value like(xmlDocPtr)
      d  encoding                       *   value options(*string)               const char *
@@ -1531,27 +1571,30 @@
 
       * XHTML
 
-     d xmlIsXHTML      pr            10i 0 extproc('xmlIsXHTML')
+     d xmlIsXHTML      pr                  extproc('xmlIsXHTML')
+     d                                     like(xmlCint)
      d  systemID                       *   value options(*string)               const xmlChar *
      d  publicID                       *   value options(*string)               const xmlChar *
 
       * Compression.
 
      d xmlGetDocCompressMode...
-     d                 pr            10i 0 extproc('xmlGetDocCompressMode')
+     d                 pr                  extproc('xmlGetDocCompressMode')
+     d                                     like(xmlCint)
      d  doc                                value like(xmlDocPtr)
 
      d xmlSetDocCompressMode...
      d                 pr                  extproc('xmlSetDocCompressMode')
      d  doc                                value like(xmlDocPtr)
-     d  mode                         10i 0 value
+     d  mode                               value like(xmlCint)
 
      d xmlGetCompressMode...
-     d                 pr            10i 0 extproc('xmlGetCompressMode')
+     d                 pr                  extproc('xmlGetCompressMode')
+     d                                     like(xmlCint)
 
      d xmlSetCompressMode...
      d                 pr                  extproc('xmlSetCompressMode')
-     d  mode                         10i 0 value
+     d  mode                               value like(xmlCint)
 
       * DOM-wrapper helper functions.
 
@@ -1564,37 +1607,41 @@
      d  ctxt                               value like(xmlDOMWrapCtxtPtr)
 
      d xmlDOMWrapReconcileNamespaces...
-     d                 pr            10i 0 extproc(
+     d                 pr                  extproc(
      d                                      'xmlDOMWrapReconcileNamespaces')
+     d                                     like(xmlCint)
      d  ctxt                               value like(xmlDOMWrapCtxtPtr)
      d  elem                               value like(xmlNodePtr)
-     d  options                      10i 0 value
+     d  options                            value like(xmlCint)
 
      d xmlDOMWrapAdoptNode...
-     d                 pr            10i 0 extproc('xmlDOMWrapAdoptNode')
+     d                 pr                  extproc('xmlDOMWrapAdoptNode')
+     d                                     like(xmlCint)
      d  ctxt                               value like(xmlDOMWrapCtxtPtr)
      d  sourceDoc                          value like(xmlDocPtr)
      d  node                               value like(xmlNodePtr)
      d  destDoc                            value like(xmlDocPtr)
      d  destParent                         value like(xmlNodePtr)
-     d  options                      10i 0 value
+     d  options                            value like(xmlCint)
 
      d xmlDOMWrapRemoveNode...
-     d                 pr            10i 0 extproc('xmlDOMWrapRemoveNode')
+     d                 pr                  extproc('xmlDOMWrapRemoveNode')
+     d                                     like(xmlCint)
      d  ctxt                               value like(xmlDOMWrapCtxtPtr)
      d  doc                                value like(xmlDocPtr)
      d  node                               value like(xmlNodePtr)
-     d  options                      10i 0 value
+     d  options                            value like(xmlCint)
 
      d xmlDOMWrapCloneNode...
-     d                 pr            10i 0 extproc('xmlDOMWrapCloneNode')
+     d                 pr                  extproc('xmlDOMWrapCloneNode')
+     d                                     like(xmlCint)
      d  ctxt                               value like(xmlDOMWrapCtxtPtr)
      d  sourceDoc                          value like(xmlDocPtr)
      d  node                               value like(xmlNodePtr)
      d  clonedNode                         like(xmlNodePtr)
      d  destDoc                            value like(xmlDocPtr)
      d  destParent                         value like(xmlNodePtr)
-     d  options                      10i 0 value
+     d  options                            value like(xmlCint)
 
       /if defined(LIBXML_TREE_ENABLED)
 
diff --git a/os400/libxmlrpg/uri.rpgle b/os400/libxmlrpg/uri.rpgle
index 9a23d80..de03392 100644
--- a/os400/libxmlrpg/uri.rpgle
+++ b/os400/libxmlrpg/uri.rpgle
@@ -10,6 +10,7 @@
       /define XML_URI_H__
 
       /include "libxmlrpg/xmlversion"
+      /include "libxmlrpg/xmlTypesC"
       /include "libxmlrpg/tree"
 
       * xmlURI:
@@ -30,11 +31,11 @@
      d  authority                      *                                        char *
      d  server                         *                                        char *
      d  user                           *                                        char *
-     d  port                         10i 0
+     d  port                               like(xmlCint)
      d  path                           *                                        char *
      d  query                          *                                        char *
      d  fragment                       *                                        char *
-     d  cleanup                      10i 0
+     d  cleanup                            like(xmlCint)
      d  query_raw                      *                                        char *
 
      d xmlCreateURI    pr                  extproc('xmlCreateURI')
@@ -56,10 +57,11 @@
      d xmlParseURIRaw  pr                  extproc('xmlParseURIRaw')
      d                                     like(xmlURIPtr)
      d  str                            *   value options(*string)               const char *
-     d  raw                          10i 0 value
+     d  raw                                value like(xmlCint)
 
      d xmlParseURIReference...
-     d                 pr            10i 0 extproc('xmlParseURIReference')
+     d                 pr                  extproc('xmlParseURIReference')
+     d                                     like(xmlCint)
      d  uri                                value like(xmlURIPtr)
      d  str                            *   value options(*string)               const char *
 
@@ -78,11 +80,12 @@
      d xmlURIUnescapeString...
      d                 pr              *   extproc('xmlURIUnescapeString')      char *
      d  str                            *   value options(*string)               const char *
-     d  len                          10i 0 value
+     d  len                                value like(xmlCint)
      d  target                         *   value options(*string)               char *
 
      d xmlNormalizeURIPath...
-     d                 pr            10i 0 extproc('xmlNormalizeURIPath')
+     d                 pr                  extproc('xmlNormalizeURIPath')
+     d                                     like(xmlCint)
      d  path                           *   value options(*string)               char *
 
      d xmlURIEscape    pr              *   extproc('xmlURIEscape')              xmlChar *
diff --git a/os400/libxmlrpg/valid.rpgle b/os400/libxmlrpg/valid.rpgle
index 722b89d..32ebbd3 100644
--- a/os400/libxmlrpg/valid.rpgle
+++ b/os400/libxmlrpg/valid.rpgle
@@ -9,6 +9,7 @@
       /define XML_VALID_H__
 
       /include "libxmlrpg/xmlversion"
+      /include "libxmlrpg/xmlTypesC"
       /include "libxmlrpg/xmlerror"
       /include "libxmlrpg/tree"
       /include "libxmlrpg/list"
@@ -63,19 +64,19 @@
       * Node analysis stack used when validating within entities
       *
      d  node                               like(xmlNodePtr)                     Current parsed Node
-     d  nodeNr                       10i 0                                      Parsing stack depth
-     d  nodeMax                      10i 0                                      Max stack depth
+     d  nodeNr                             like(xmlCint)                        Parsing stack depth
+     d  nodeMax                            like(xmlCint)                        Max stack depth
      d  nodeTab                        *                                        xmlNodePtr *
       *
-     d  finishDtd                    10u 0                                      Finish validtng DTD?
+     d  finishDtd                          like(xmlCuint)
      d  doc                                like(xmlDocPtr)                      The document
-     d  valid                        10i 0                                      Temp check result
+     d  valid                              like(xmlCint)                        Temp check result
       *
       * state state used for non-determinist content validation
       *
      d  vstate                         *                                        xmlValidState *
-     d  vstateNr                     10i 0                                      Validat. stack depth
-     d  vstateMax                    10i 0                                      Max stack depth
+     d  vstateNr                           like(xmlCint)                        Validat. stack depth
+     d  vstateMax                          like(xmlCint)                        Max stack depth
      d  vstateTab                      *                                        xmlValidState *
       *
       /if defined(LIBXML_REGEXP_ENABLED)
@@ -189,9 +190,9 @@
      d xmlSnprintfElementContent...
      d                 pr                  extproc('xmlSnprintfElementContent')
      d  buf                       65535    options(*varsize)
-     d  size                         10i 0 value
+     d  size                               value like(xmlCint)
      d  content                            value like(xmlElementContentPtr)
-     d  englob                       10i 0 value
+     d  englob                             value like(xmlCint)
 
       /if defined(LIBXML_OUTPUT_ENABLED)
       * DEPRECATED
@@ -199,7 +200,7 @@
      d                 pr                  extproc('xmlSprintfElementContent')
      d  buf                       65535    options(*varsize)
      d  content                            value like(xmlElementContentPtr)
-     d  englob                       10i 0 value
+     d  englob                             value like(xmlCint)
       /endif                                                                    LIBXML_OUTPUT_ENABLD
 
       * DEPRECATED
@@ -311,12 +312,14 @@
      d  doc                                value like(xmlDocPtr)
      d  ID                             *   value options(*string)               const xmlChar *
 
-     d xmlIsID         pr            10i 0 extproc('xmlIsID')
+     d xmlIsID         pr                  extproc('xmlIsID')
+     d                                     like(xmlCint)
      d  doc                                value like(xmlDocPtr)
      d  node                               value like(xmlNodePtr)
      d  attr                               value like(xmlAttrPtr)
 
-     d xmlRemoveID     pr            10i 0 extproc('xmlRemoveID')
+     d xmlRemoveID     pr                  extproc('xmlRemoveID')
+     d                                     like(xmlCint)
      d  doc                                value like(xmlDocPtr)
      d  attr                               value like(xmlAttrPtr)
 
@@ -333,12 +336,14 @@
      d                 pr                  extproc('xmlFreeRefTable')
      d  table                              value like(xmlRefTablePtr)
 
-     d xmlIsRef        pr            10i 0 extproc('xmlIsRef')
+     d xmlIsRef        pr                  extproc('xmlIsRef')
+     d                                     like(xmlCint)
      d  doc                                value like(xmlDocPtr)
      d  node                               value like(xmlNodePtr)
      d  attr                               value like(xmlAttrPtr)
 
-     d xmlRemoveRef    pr            10i 0 extproc('xmlRemoveRef')
+     d xmlRemoveRef    pr                  extproc('xmlRemoveRef')
+     d                                     like(xmlCint)
      d  doc                                value like(xmlDocPtr)
      d  attr                               value like(xmlAttrPtr)
 
@@ -361,12 +366,14 @@
      d  ctxt                               value like(xmlValidCtxtPtr)
 
      d xmlValidateRoot...
-     d                 pr            10i 0 extproc('xmlValidateRoot')
+     d                 pr                  extproc('xmlValidateRoot')
+     d                                     like(xmlCint)
      d  ctxt                               value like(xmlValidCtxtPtr)
      d  doc                                value like(xmlDocPtr)
 
      d xmlValidateElementDecl...
-     d                 pr            10i 0 extproc('xmlValidateElementDecl')
+     d                 pr                  extproc('xmlValidateElementDecl')
+     d                                     like(xmlCint)
      d  ctxt                               value like(xmlValidCtxtPtr)
      d  doc                                value like(xmlDocPtr)
      d  elem                               value like(xmlElementPtr)
@@ -389,51 +396,60 @@
      d  value                          *   value options(*string)               const xmlChar *
 
      d xmlValidateAttributeDecl...
-     d                 pr            10i 0 extproc('xmlValidateAttributeDecl')
+     d                 pr                  extproc('xmlValidateAttributeDecl')
+     d                                     like(xmlCint)
      d  ctxt                               value like(xmlValidCtxtPtr)
      d  doc                                value like(xmlDocPtr)
      d  attr                               value like(xmlAttributePtr)
 
      d xmlValidateAttributeValue...
-     d                 pr            10i 0 extproc('xmlValidateAttributeValue')
+     d                 pr                  extproc('xmlValidateAttributeValue')
+     d                                     like(xmlCint)
      d  type                               value like(xmlAttributeType)
      d  value                          *   value options(*string)               const xmlChar *
 
      d xmlValidateNotationDecl...
-     d                 pr            10i 0 extproc('xmlValidateNotationDecl')
+     d                 pr                  extproc('xmlValidateNotationDecl')
+     d                                     like(xmlCint)
      d  ctxt                               value like(xmlValidCtxtPtr)
      d  doc                                value like(xmlDocPtr)
      d  nota                               value like(xmlNotationPtr)
 
-     d xmlValidateDtd  pr            10i 0 extproc('xmlValidateDtd')
+     d xmlValidateDtd  pr                  extproc('xmlValidateDtd')
+     d                                     like(xmlCint)
      d  ctxt                               value like(xmlValidCtxtPtr)
      d  doc                                value like(xmlDocPtr)
      d  dtd                                value like(xmlDtdPtr)
 
      d xmlValidateDtdFinal...
-     d                 pr            10i 0 extproc('xmlValidateDtdFinal')
+     d                 pr                  extproc('xmlValidateDtdFinal')
+     d                                     like(xmlCint)
      d  ctxt                               value like(xmlValidCtxtPtr)
      d  doc                                value like(xmlDocPtr)
 
      d xmlValidateDocument...
-     d                 pr            10i 0 extproc('xmlValidateDocument')
+     d                 pr                  extproc('xmlValidateDocument')
+     d                                     like(xmlCint)
      d  ctxt                               value like(xmlValidCtxtPtr)
      d  doc                                value like(xmlDocPtr)
 
      d xmlValidateElement...
-     d                 pr            10i 0 extproc('xmlValidateElement')
+     d                 pr                  extproc('xmlValidateElement')
+     d                                     like(xmlCint)
      d  ctxt                               value like(xmlValidCtxtPtr)
      d  doc                                value like(xmlDocPtr)
      d  elem                               value like(xmlNodePtr)
 
      d xmlValidateOneElement...
-     d                 pr            10i 0 extproc('xmlValidateOneElement')
+     d                 pr                  extproc('xmlValidateOneElement')
+     d                                     like(xmlCint)
      d  ctxt                               value like(xmlValidCtxtPtr)
      d  doc                                value like(xmlDocPtr)
      d  elem                               value like(xmlNodePtr)
 
      d xmlValidateOneAttribute...
-     d                 pr            10i 0 extproc('xmlValidateOneAttribute')
+     d                 pr                  extproc('xmlValidateOneAttribute')
+     d                                     like(xmlCint)
      d  ctxt                               value like(xmlValidCtxtPtr)
      d  doc                                value like(xmlDocPtr)
      d  elem                               value like(xmlNodePtr)
@@ -441,7 +457,8 @@
      d  value                          *   value options(*string)               const xmlChar *
 
      d xmlValidateOneNamespace...
-     d                 pr            10i 0 extproc('xmlValidateOneNamespace')
+     d                 pr                  extproc('xmlValidateOneNamespace')
+     d                                     like(xmlCint)
      d  ctxt                               value like(xmlValidCtxtPtr)
      d  doc                                value like(xmlDocPtr)
      d  elem                               value like(xmlNodePtr)
@@ -450,7 +467,8 @@
      d  value                          *   value options(*string)               const xmlChar *
 
      d xmlValidateDocumentFinal...
-     d                 pr            10i 0 extproc('xmlValidateDocumentFinal')
+     d                 pr                  extproc('xmlValidateDocumentFinal')
+     d                                     like(xmlCint)
      d  ctxt                               value like(xmlValidCtxtPtr)
      d  doc                                value like(xmlDocPtr)
       /endif                                                                    LIBXML_VALID_ENABLED
@@ -463,7 +481,8 @@
       /endif
       /if defined(XML_TESTVAL)
      d xmlValidateNotationUse...
-     d                 pr            10i 0 extproc('xmlValidateNotationUse')
+     d                 pr                  extproc('xmlValidateNotationUse')
+     d                                     like(xmlCint)
      d  ctxt                               value like(xmlValidCtxtPtr)
      d  doc                                value like(xmlDocPtr)
      d  notationName                   *   value options(*string)               const xmlChar *
@@ -472,7 +491,8 @@
       /endif
 
      d xmlIsMixedElement...
-     d                 pr            10i 0 extproc('xmlIsMixedElement')
+     d                 pr                  extproc('xmlIsMixedElement')
+     d                                     like(xmlCint)
      d  doc                                value like(xmlDocPtr)
      d  name                           *   value options(*string)               const xmlChar *
 
@@ -512,59 +532,69 @@
 
       /if defined(LIBXML_VALID_ENABLED)
      d xmlValidGetPotentialChildren...
-     d                 pr            10i 0 extproc(
+     d                 pr                  extproc(
      d                                      'xmlValidGetPotentialChildren')
+     d                                     like(xmlCint)
      d  ctree                          *   value                                xmlElementContent *
      d  names                          *                                        const xmlChar *(*)
-     d  len                          10i 0
-     d  max                          10i 0 value
+     d  len                                like(xmlCint)
+     d  max                                value like(xmlCint)
 
      d xmlValidGetValidElements...
-     d                 pr            10i 0 extproc('xmlValidGetValidElements')
+     d                 pr                  extproc('xmlValidGetValidElements')
+     d                                     like(xmlCint)
      d  prev                               like(xmlNodePtr)
      d  next                               like(xmlNodePtr)
      d  names                          *                                        const xmlChar *(*)
-     d  max                          10i 0 value
+     d  max                                value like(xmlCint)
 
      d xmlValidateNameValue...
-     d                 pr            10i 0 extproc('xmlValidateNameValue')
+     d                 pr                  extproc('xmlValidateNameValue')
+     d                                     like(xmlCint)
      d  value                          *   value options(*string)               const xmlChar *
 
      d xmlValidateNamesValue...
-     d                 pr            10i 0 extproc('xmlValidateNamesValue')
+     d                 pr                  extproc('xmlValidateNamesValue')
+     d                                     like(xmlCint)
      d  value                          *   value options(*string)               const xmlChar *
 
      d xmlValidateNmtokenValue...
-     d                 pr            10i 0 extproc('xmlValidateNmtokenValue')
+     d                 pr                  extproc('xmlValidateNmtokenValue')
+     d                                     like(xmlCint)
      d  value                          *   value options(*string)               const xmlChar *
 
      d xmlValidateNmtokensValue...
-     d                 pr            10i 0 extproc('xmlValidateNmtokensValue')
+     d                 pr                  extproc('xmlValidateNmtokensValue')
+     d                                     like(xmlCint)
      d  value                          *   value options(*string)               const xmlChar *
 
       /if defined(LIBXML_REGEXP_ENABLED)
       * Validation based on the regexp support
 
      d xmlValidBuildContentModel...
-     d                 pr            10i 0 extproc('xmlValidBuildContentModel')
+     d                 pr                  extproc('xmlValidBuildContentModel')
+     d                                     like(xmlCint)
      d  ctxt                               value like(xmlValidCtxtPtr)
      d  elem                               value like(xmlElementPtr)
 
      d xmlValidatePushElement...
-     d                 pr            10i 0 extproc('xmlValidatePushElement')
+     d                 pr                  extproc('xmlValidatePushElement')
+     d                                     like(xmlCint)
      d  ctxt                               value like(xmlValidCtxtPtr)
      d  doc                                value like(xmlDocPtr)
      d  elem                               value like(xmlNodePtr)
      d  qname                          *   value options(*string)               const xmlChar *
 
      d xmlValidatePushCData...
-     d                 pr            10i 0 extproc('xmlValidatePushCData')
+     d                 pr                  extproc('xmlValidatePushCData')
+     d                                     like(xmlCint)
      d  ctxt                               value like(xmlValidCtxtPtr)
      d  data                           *   value options(*string)               const xmlChar *
-     d  len                          10i 0 value
+     d  len                                value like(xmlCint)
 
      d xmlValidatePopElement...
-     d                 pr            10i 0 extproc('xmlValidatePopElement')
+     d                 pr                  extproc('xmlValidatePopElement')
+     d                                     like(xmlCint)
      d  ctxt                               value like(xmlValidCtxtPtr)
      d  doc                                value like(xmlDocPtr)
      d  elem                               value like(xmlNodePtr)
diff --git a/os400/libxmlrpg/xinclude.rpgle b/os400/libxmlrpg/xinclude.rpgle
index c0b68ff..93b7c51 100644
--- a/os400/libxmlrpg/xinclude.rpgle
+++ b/os400/libxmlrpg/xinclude.rpgle
@@ -12,6 +12,7 @@
       /define XML_XINCLUDE_H__
 
       /include "libxmlrpg/xmlversion"
+      /include "libxmlrpg/xmlTypesC"
       /include "libxmlrpg/tree"
 
       /if defined(LIBXML_XINCLUDE_ENABLED)
@@ -89,37 +90,43 @@
       * standalone processing
 
      d xmlXIncludeProcess...
-     d                 pr            10i 0 extproc('xmlXIncludeProcess')
+     d                 pr                  extproc('xmlXIncludeProcess')
+     d                                     like(xmlCint)
      d  doc                                value like(xmlDocPtr)
 
      d xmlXIncludeProcessFlags...
-     d                 pr            10i 0 extproc('xmlXIncludeProcessFlags')
+     d                 pr                  extproc('xmlXIncludeProcessFlags')
+     d                                     like(xmlCint)
      d  doc                                value like(xmlDocPtr)
-     d  flags                        10i 0 value
+     d  flags                              value like(xmlCint)
 
      d xmlXIncludeProcessFlagsData...
-     d                 pr            10i 0 extproc(
+     d                 pr                  extproc(
      d                                     'xmlXIncludeProcessFlagsData')
+     d                                     like(xmlCint)
      d  doc                                value like(xmlDocPtr)
-     d  flags                        10i 0 value
+     d  flags                              value like(xmlCint)
      d  data                           *   value                                void *
 
      d xmlXIncludeProcessTreeFlagsData...
-     d                 pr            10i 0 extproc(
+     d                 pr                  extproc(
      d                                     'xmlXIncludeProcessTreeFlagsData')
+     d                                     like(xmlCint)
      d  tree                               value like(xmlNodePtr)
-     d  flags                        10i 0 value
+     d  flags                              value like(xmlCint)
      d  data                           *   value                                void *
 
      d xmlXIncludeProcessTree...
-     d                 pr            10i 0 extproc('xmlXIncludeProcessTree')
+     d                 pr                  extproc('xmlXIncludeProcessTree')
+     d                                     like(xmlCint)
      d  tree                               value like(xmlNodePtr)
 
      d xmlXIncludeProcessTreeFlags...
-     d                 pr            10i 0 extproc(
+     d                 pr                  extproc(
      d                                     'xmlXIncludeProcessTreeFlags')
+     d                                     like(xmlCint)
      d  tree                               value like(xmlNodePtr)
-     d  flags                        10i 0 value
+     d  flags                              value like(xmlCint)
 
 
       * contextual processing
@@ -130,16 +137,18 @@
      d  doc                                value like(xmlDocPtr)
 
      d xmlXIncludeSetFlags...
-     d                 pr            10i 0 extproc('xmlXIncludeSetFlags')
+     d                 pr                  extproc('xmlXIncludeSetFlags')
+     d                                     like(xmlCint)
      d  ctxt                               value like(xmlXIncludeCtxtPtr)
-     d  flags                        10i 0 value
+     d  flags                              value like(xmlCint)
 
      d xmlXIncludeFreeContext...
      d                 pr                  extproc('xmlXIncludeFreeContext')
      d  ctxt                               value like(xmlXIncludeCtxtPtr)
 
      d xmlXIncludeProcessNode...
-     d                 pr            10i 0 extproc('xmlXIncludeProcessNode')
+     d                 pr                  extproc('xmlXIncludeProcessNode')
+     d                                     like(xmlCint)
      d  ctxt                               value like(xmlXIncludeCtxtPtr)
      d  tree                               value like(xmlNodePtr)
 
diff --git a/os400/libxmlrpg/xlink.rpgle b/os400/libxmlrpg/xlink.rpgle
index 964e605..e6ebdc6 100644
--- a/os400/libxmlrpg/xlink.rpgle
+++ b/os400/libxmlrpg/xlink.rpgle
@@ -9,10 +9,12 @@
       /define XML_XLINK_H__
 
       /include "libxmlrpg/xmlversion"
-      /include "libxmlrpg/tree"
 
       /if defined(LIBXML_XPTR_ENABLED)
 
+      /include "libxmlrpg/xmlTypesC"
+      /include "libxmlrpg/tree"
+
       * Various defines for the various Link properties.
       *
       * NOTE: the link detection layer will try to resolve QName expansion
@@ -26,7 +28,8 @@
      d xlinkRole       s               *   based(######typedef######)           xmlChar *
      d xlinkTitle      s               *   based(######typedef######)           xmlChar *
 
-     d xlinkType       s             10i 0 based(######typedef######)           enum
+     d xlinkType       s                   based(######typedef######)
+     d                                     like(xmlCenum)
      d  XLINK_TYPE_NONE...
      d                 c                   0
      d  XLINK_TYPE_SIMPLE...
@@ -36,7 +39,8 @@
      d  XLINK_TYPE_EXTENDED_SET...
      d                 c                   3
 
-     d xlinkShow       s             10i 0 based(######typedef######)           enum
+     d xlinkShow       s                   based(######typedef######)
+     d                                     like(xmlCenum)
      d  XLINK_SHOW_NONE...
      d                 c                   0
      d  XLINK_SHOW_NEW...
@@ -46,7 +50,8 @@
      d  XLINK_SHOW_REPLACE...
      d                 c                   3
 
-     d xlinkActuate    s             10i 0 based(######typedef######)           enum
+     d xlinkActuate    s                   based(######typedef######)
+     d                                     like(xmlCenum)
      d  XLINK_ACTUATE_NONE...
      d                 c                   0
      d  XLINK_ACTUATE_AUTO...
diff --git a/os400/libxmlrpg/xmlIO.rpgle b/os400/libxmlrpg/xmlIO.rpgle
index 261b0e2..6c0afcc 100644
--- a/os400/libxmlrpg/xmlIO.rpgle
+++ b/os400/libxmlrpg/xmlIO.rpgle
@@ -130,8 +130,8 @@
       *
      d  buffer                             like(xmlBufPtr)                      UTF-8 local buffer
      d  raw                                like(xmlBufPtr)                      Raw input buffer
-     d  compressed                   10i 0
-     d  error                        10i 0
+     d  compressed                         like(xmlCint)
+     d  error                              like(xmlCint)
      d  rawconsumed                        like(xmlCulong)
 
       /if defined(LIBXML_OUTPUT_ENABLED)
@@ -146,8 +146,8 @@
       *
      d  buffer                             like(xmlBufPtr)                      UTF-8/ISOLatin local
      d  conv                               like(xmlBufPtr)                      Buffer for output
-     d  written                      10i 0                                      Total # byte written
-     d  error                        10i 0
+     d  written                            like(xmlCint)                        Total # byte written
+     d  error                              like(xmlCint)
       /endif                                                                    LIBXML_OUTPUT_ENABLD
 
       * Interfaces for input
@@ -156,7 +156,8 @@
      d                 pr                  extproc('xmlCleanupInputCallbacks')
 
      d xmlPopInputCallbacks...
-     d                 pr            10i 0 extproc('xmlPopInputCallbacks')
+     d                 pr                  extproc('xmlPopInputCallbacks')
+     d                                     like(xmlCint)
 
      d xmlRegisterDefaultInputCallbacks...
      d                 pr                  extproc(
@@ -185,7 +186,7 @@
      d                 pr                  extproc(
      d                                      'xmlParserInputBufferCreateFd')
      d                                     like(xmlParserInputBufferPtr)
-     d  fd                           10i 0 value
+     d  fd                                 value like(xmlCint)
      d  enc                                value like(xmlCharEncoding)
 
      d xmlParserInputBufferCreateMem...
@@ -193,7 +194,7 @@
      d                                      'xmlParserInputBufferCreateMem')
      d                                     like(xmlParserInputBufferPtr)
      d  mem                            *   value options(*string)               const char *
-     d  size                         10i 0 value
+     d  size                               value like(xmlCint)
      d  enc                                value like(xmlCharEncoding)
 
      d xmlParserInputBufferCreateStatic...
@@ -201,7 +202,7 @@
      d                                      'xmlParserInputBufferCreateStatic')
      d                                     like(xmlParserInputBufferPtr)
      d  mem                            *   value options(*string)               const char *
-     d  size                         10i 0 value
+     d  size                               value like(xmlCint)
      d  enc                                value like(xmlCharEncoding)
 
      d xmlParserInputBufferCreateIO...
@@ -214,19 +215,22 @@
      d  enc                                value like(xmlCharEncoding)
 
      d xmlParserInputBufferRead...
-     d                 pr            10i 0 extproc('xmlParserInputBufferRead')
+     d                 pr                  extproc('xmlParserInputBufferRead')
+     d                                     like(xmlCint)
      d  in                                 value like(xmlParserInputBufferPtr)
-     d  len                          10i 0 value
+     d  len                                value like(xmlCint)
 
      d xmlParserInputBufferGrow...
-     d                 pr            10i 0 extproc('xmlParserInputBufferGrow')
+     d                 pr                  extproc('xmlParserInputBufferGrow')
+     d                                     like(xmlCint)
      d  in                                 value like(xmlParserInputBufferPtr)
-     d  len                          10i 0 value
+     d  len                                value like(xmlCint)
 
      d xmlParserInputBufferPush...
-     d                 pr            10i 0 extproc('xmlParserInputBufferPush')
+     d                 pr                  extproc('xmlParserInputBufferPush')
+     d                                     like(xmlCint)
      d  in                                 value like(xmlParserInputBufferPtr)
-     d  len                          10i 0 value
+     d  len                                value like(xmlCint)
      d  buf                            *   value options(*string)               const char *
 
      d xmlFreeParserInputBuffer...
@@ -238,7 +242,8 @@
      d  filename                       *   value options(*string)               const char *
 
      d xmlRegisterInputCallbacks...
-     d                 pr            10i 0 extproc('xmlRegisterInputCallbacks')
+     d                 pr                  extproc('xmlRegisterInputCallbacks')
+     d                                     like(xmlCint)
      d  matchFunc                          value like(xmlInputMatchCallback)
      d  openFunc                           value like(xmlInputOpenCallback)
      d  readFunc                           value like(xmlInputReadCallback)
@@ -268,7 +273,7 @@
      d  URI                            *   value options(*string)               const char *
      d  encoder                            value
      d                                     like(xmlCharEncodingHandlerPtr)
-     d  compression                  10i 0 value
+     d  compression                        value like(xmlCint)
 
      d xmlOutputBufferCreateFile...
      d                 pr                  extproc('xmlOutputBufferCreateFile')
@@ -288,7 +293,7 @@
      d xmlOutputBufferCreateFd...
      d                 pr                  extproc('xmlOutputBufferCreateFd')
      d                                     like(xmlOutputBufferPtr)
-     d  fd                           10i 0 value
+     d  fd                                 value like(xmlCint)
      d  encoder                            value
      d                                     like(xmlCharEncodingHandlerPtr)
 
@@ -313,32 +318,38 @@
      d  out                                value like(xmlOutputBufferPtr)
 
      d xmlOutputBufferWrite...
-     d                 pr            10i 0 extproc('xmlOutputBufferWrite')
+     d                 pr                  extproc('xmlOutputBufferWrite')
+     d                                     like(xmlCint)
      d  out                                value like(xmlOutputBufferPtr)
-     d  len                          10i 0 value
+     d  len                                value like(xmlCint)
      d  buf                            *   value options(*string)               const char *
 
      d xmlOutputBufferWriteString...
-     d                 pr            10i 0 extproc('xmlOutputBufferWriteString')
+     d                 pr                  extproc('xmlOutputBufferWriteString')
+     d                                     like(xmlCint)
      d  out                                value like(xmlOutputBufferPtr)
      d  str                            *   value options(*string)               const char *
 
      d xmlOutputBufferWriteEscape...
-     d                 pr            10i 0 extproc('xmlOutputBufferWriteEscape')
+     d                 pr                  extproc('xmlOutputBufferWriteEscape')
+     d                                     like(xmlCint)
      d  out                                value like(xmlOutputBufferPtr)
      d  str                            *   value options(*string)               const xmlChar *
      d  escaping                           value like(xmlCharEncodingOutputFunc)
 
      d xmlOutputBufferFlush...
-     d                 pr            10i 0 extproc('xmlOutputBufferFlush')
+     d                 pr                  extproc('xmlOutputBufferFlush')
+     d                                     like(xmlCint)
      d  out                                value like(xmlOutputBufferPtr)
 
      d xmlOutputBufferClose...
-     d                 pr            10i 0 extproc('xmlOutputBufferClose')
+     d                 pr                  extproc('xmlOutputBufferClose')
+     d                                     like(xmlCint)
      d  out                                value like(xmlOutputBufferPtr)
 
      d xmlRegisterOutputCallbacks...
-     d                 pr            10i 0 extproc('xmlRegisterOutputCallbacks')
+     d                 pr                  extproc('xmlRegisterOutputCallbacks')
+     d                                     like(xmlCint)
      d  matchFunc                          value like(xmlOutputMatchCallback)
      d  openFunc                           value like(xmlOutputOpenCallback)
      d  writeFunc                          value like(xmlOutputWriteCallback)
@@ -379,29 +390,34 @@
      d  path                           *   value options(*string)               const xmlChar *
 
      d xmlCheckFilename...
-     d                 pr            10i 0 extproc('xmlCheckFilename')
+     d                 pr                  extproc('xmlCheckFilename')
+     d                                     like(xmlCint)
      d  path                           *   value options(*string)               const char *
 
       * Default 'file://' protocol callbacks
 
-     d xmlFileMatch    pr            10i 0 extproc('xmlFileMatch')
+     d xmlFileMatch    pr                  extproc('xmlFileMatch')
+     d                                     like(xmlCint)
      d  filename                       *   value options(*string)               const char *
 
      d xmlFileOpen     pr              *   extproc('xmlFileOpen')               void *
      d  filename                       *   value options(*string)               const char *
 
-     d xmlFileRead     pr            10i 0 extproc('xmlFileRead')
+     d xmlFileRead     pr                  extproc('xmlFileRead')
+     d                                     like(xmlCint)
      d  context                        *   value                                void *
      d  buffer                    65535    options(*varsize)
-     d  len                          10i 0 value
+     d  len                                value like(xmlCint)
 
-     d xmlFileClose    pr            10i 0 extproc('xmlFileClose')
+     d xmlFileClose    pr                  extproc('xmlFileClose')
+     d                                     like(xmlCint)
      d  context                        *   value                                void *
 
       * Default 'http://' protocol callbacks
 
       /if defined(LIBXML_HTTP_ENABLED)
-     d xmlIOHTTPMatch  pr            10i 0 extproc('xmlIOHTTPMatch')
+     d xmlIOHTTPMatch  pr                  extproc('xmlIOHTTPMatch')
+     d                                     like(xmlCint)
      d  filename                       *   value options(*string)               const char *
 
      d xmlIOHTTPOpen   pr              *   extproc('xmlIOHTTPOpen')             void *
@@ -410,33 +426,38 @@
       /if defined(LIBXML_OUTPUT_ENABLED)
      d xmlIOHTTPOpenW  pr              *   extproc('xmlIOHTTPOpenW')            void *
      d  post_uri                       *   value options(*string)               const char *
-     d  compression                  10i 0 value
+     d  compression                        value like(xmlCint)
       /endif                                                                    LIBXML_OUTPUT_ENABLD
 
-     d xmlIOHTTPRead   pr            10i 0 extproc('xmlIOHTTPRead')
+     d xmlIOHTTPRead   pr                  extproc('xmlIOHTTPRead')
+     d                                     like(xmlCint)
      d  context                        *   value                                void *
      d  buffer                    65535    options(*varsize)
-     d  len                          10i 0 value
+     d  len                                value like(xmlCint)
 
-     d xmlIOHTTPClose  pr            10i 0 extproc('xmlIOHTTPClose')
+     d xmlIOHTTPClose  pr                  extproc('xmlIOHTTPClose')
+     d                                     like(xmlCint)
      d  context                        *   value                                void *
       /endif                                                                    LIBXML_HTTP_ENABLED
 
       * Default 'ftp://' protocol callbacks
 
       /if defined(LIBXML_FTP_ENABLED)
-     d xmlIOFTPMatch   pr            10i 0 extproc('xmlIOFTPMatch')
+     d xmlIOFTPMatch   pr                  extproc('xmlIOFTPMatch')
+     d                                     like(xmlCint)
      d  filename                       *   value options(*string)               const char *
 
      d xmlIOFTPOpen    pr              *   extproc('xmlIOFTPOpen')              void *
      d  filename                       *   value options(*string)               const char *
 
-     d xmlIOFTPRead    pr            10i 0 extproc('xmlIOFTPRead')
+     d xmlIOFTPRead    pr                  extproc('xmlIOFTPRead')
+     d                                     like(xmlCint)
      d  context                        *   value                                void *
      d  buffer                    65535    options(*varsize)
-     d  len                          10i 0 value
+     d  len                                value like(xmlCint)
 
-     d xmlIOFTPClose   pr            10i 0 extproc('xmlIOFTPClose')
+     d xmlIOFTPClose   pr                  extproc('xmlIOFTPClose')
+     d                                     like(xmlCint)
      d  context                        *   value                                void *
       /endif                                                                    LIBXML_FTP_ENABLED
 
diff --git a/os400/libxmlrpg/xmlTypesC.rpgle b/os400/libxmlrpg/xmlTypesC.rpgle
index 798d74d..48a23bf 100644
--- a/os400/libxmlrpg/xmlTypesC.rpgle
+++ b/os400/libxmlrpg/xmlTypesC.rpgle
@@ -20,5 +20,7 @@
      d xmlCenum        s             10i 0 based(######typedef######)
      d xmlCssize_t     s             10i 0 based(######typedef######)
      d xmlCsize_t      s             10u 0 based(######typedef######)
+     d xmlCfloat       s              4f   based(######typedef######)
+     d xmlCdouble      s              8f   based(######typedef######)
 
       /endif
diff --git a/os400/libxmlrpg/xmlautomata.rpgle b/os400/libxmlrpg/xmlautomata.rpgle
index 4979725..0e9cc22 100644
--- a/os400/libxmlrpg/xmlautomata.rpgle
+++ b/os400/libxmlrpg/xmlautomata.rpgle
@@ -9,11 +9,12 @@
       /define XML_AUTOMATA_H__
 
       /include "libxmlrpg/xmlversion"
-      /include "libxmlrpg/tree"
 
       /if defined(LIBXML_REGEXP_ENABLED)
       /if defined(LIBXML_AUTOMATA_ENABLED)
 
+      /include "libxmlrpg/xmlTypesC"
+      /include "libxmlrpg/tree"
       /include "libxmlrpg/xmlregexp"
 
       * xmlAutomataPtr:
@@ -44,7 +45,8 @@
      d  am                                 value like(xmlAutomataPtr)
 
      d xmlAutomataSetFinalState...
-     d                 pr            10i 0 extproc('xmlAutomataSetFinalState')
+     d                 pr                  extproc('xmlAutomataSetFinalState')
+     d                                     like(xmlCint)
      d  am                                 value like(xmlAutomataPtr)
      d  state                              value like(xmlAutomataStatePtr)
 
@@ -89,8 +91,8 @@
      d  from                               value like(xmlAutomataStatePtr)
      d  to                                 value like(xmlAutomataStatePtr)
      d  token                          *   value options(*string)               const xmlChar *
-     d  min                          10i 0 value
-     d  max                          10i 0 value
+     d  min                                value like(xmlCint)
+     d  max                                value like(xmlCint)
      d  data                           *   value options(*string)               void *
 
      d xmlAutomataNewCountTrans2...
@@ -101,8 +103,8 @@
      d  to                                 value like(xmlAutomataStatePtr)
      d  token                          *   value options(*string)               const xmlChar *
      d  token2                         *   value options(*string)               const xmlChar *
-     d  min                          10i 0 value
-     d  max                          10i 0 value
+     d  min                                value like(xmlCint)
+     d  max                                value like(xmlCint)
      d  data                           *   value options(*string)               void *
 
      d xmlAutomataNewOnceTrans...
@@ -112,8 +114,8 @@
      d  from                               value like(xmlAutomataStatePtr)
      d  to                                 value like(xmlAutomataStatePtr)
      d  token                          *   value options(*string)               const xmlChar *
-     d  min                          10i 0 value
-     d  max                          10i 0 value
+     d  min                                value like(xmlCint)
+     d  max                                value like(xmlCint)
      d  data                           *   value options(*string)               void *
 
      d xmlAutomataNewOnceTrans2...
@@ -124,8 +126,8 @@
      d  to                                 value like(xmlAutomataStatePtr)
      d  token                          *   value options(*string)               const xmlChar *
      d  token2                         *   value options(*string)               const xmlChar *
-     d  min                          10i 0 value
-     d  max                          10i 0 value
+     d  min                                value like(xmlCint)
+     d  max                                value like(xmlCint)
      d  data                           *   value options(*string)               void *
 
      d xmlAutomataNewAllTrans...
@@ -134,7 +136,7 @@
      d  am                                 value like(xmlAutomataPtr)
      d  from                               value like(xmlAutomataStatePtr)
      d  to                                 value like(xmlAutomataStatePtr)
-     d  lax                          10i 0 value
+     d  lax                                value like(xmlCint)
 
      d xmlAutomataNewEpsilon...
      d                 pr                  extproc('xmlAutomataNewEpsilon')
@@ -149,7 +151,7 @@
      d  am                                 value like(xmlAutomataPtr)
      d  from                               value like(xmlAutomataStatePtr)
      d  to                                 value like(xmlAutomataStatePtr)
-     d  counter                      10i 0 value
+     d  counter                            value like(xmlCint)
 
      d xmlAutomataNewCounterTrans...
      d                 pr                  extproc('xmlAutomataNewCounterTrans')
@@ -157,13 +159,14 @@
      d  am                                 value like(xmlAutomataPtr)
      d  from                               value like(xmlAutomataStatePtr)
      d  to                                 value like(xmlAutomataStatePtr)
-     d  counter                      10i 0 value
+     d  counter                            value like(xmlCint)
 
      d xmlAutomataNewCounter...
-     d                 pr            10i 0 extproc('xmlAutomataNewCounter')
+     d                 pr                  extproc('xmlAutomataNewCounter')
+     d                                     like(xmlCint)
      d  am                                 value like(xmlAutomataPtr)
-     d  min                          10i 0 value
-     d  max                          10i 0 value
+     d  min                                value like(xmlCint)
+     d  max                                value like(xmlCint)
 
      d xmlAutomataCompile...
      d                 pr                  extproc('xmlAutomataCompile')
@@ -171,7 +174,8 @@
      d  am                                 value like(xmlAutomataPtr)
 
      d xmlAutomataIsDeterminist...
-     d                 pr            10i 0 extproc('xmlAutomataIsDeterminist')
+     d                 pr                  extproc('xmlAutomataIsDeterminist')
+     d                                     like(xmlCint)
      d  am                                 value like(xmlAutomataPtr)
 
       /endif                                                                    AUTOMATA_ENABLED
diff --git a/os400/libxmlrpg/xmlerror.rpgle b/os400/libxmlrpg/xmlerror.rpgle
index b77caad..6688b37 100644
--- a/os400/libxmlrpg/xmlerror.rpgle
+++ b/os400/libxmlrpg/xmlerror.rpgle
@@ -5,16 +5,18 @@
       *
       * Author: Patrick Monnerat <pm@datasphere.ch>, DATASPHERE S.A.
 
-      /include "libxmlrpg/parser"
-
       /if not defined(XML_ERROR_H__)
       /define XML_ERROR_H__
 
+      /include "libxmlrpg/xmlTypesC"
+      /include "libxmlrpg/parser"
+
       * xmlErrorLevel:
       *
       * Indicates the level of an error
 
-     d xmlErrorLevel   s             10i 0 based(######typedef######)           enum
+     d xmlErrorLevel   s                   based(######typedef######)
+     d                                     like(xmlCenum)
      d  XML_ERR_NONE   c                   0
      d  XML_ERR_WARNING...                                                      A simple warning
      d                 c                   1
@@ -25,7 +27,8 @@
       *
       * Indicates where an error may have come from
 
-     d xmlErrorDomain  s             10i 0 based(######typedef######)           enum
+     d xmlErrorDomain  s                   based(######typedef######)
+     d                                     like(xmlCenum)
      d  XML_FROM_NONE  c                   0
      d  XML_FROM_PARSER...                                                      XML parser
      d                 c                   1
@@ -86,17 +89,17 @@
 
      d xmlError        ds                  based(xmlErrorPtr)
      d                                     align qualified
-     d  domain                       10i 0                                      Libpart raising err
-     d  code                         10i 0                                      Error code
+     d  domain                             like(xmlCint)                        Libpart raising err
+     d  code                               like(xmlCint)                        Error code
      d  message                        *                                        char *
      d  level                              like(xmlErrorLevel)                  Error severity
      d  file                           *                                        File name
-     d  line                         10i 0                                      Line number
+     d  line                               like(xmlCint)                        Line number
      d  str1                           *                                        char *
      d  str2                           *                                        char *
      d  str3                           *                                        char *
-     d  int1                         10i 0                                      Extra number info
-     d  int2                         10i 0                                      Error column
+     d  int1                               like(xmlCint)                        Extra number info
+     d  int2                               like(xmlCint)                        Error column
      d  ctxt                           *                                        void *
      d  node                           *                                        void *
 
@@ -105,7 +108,8 @@
       * This is an error that the XML (or HTML) parser can generate
 
      d xmlParserErrors...
-     d                 s             10i 0 based(######typedef######)           enum
+     d                 s                   based(######typedef######)
+     d                                     like(xmlCenum)
      d  XML_ERR_OK     c                   0
      d  XML_ERR_INTERNAL_ERROR...
      d                 c                   1
@@ -1674,7 +1678,8 @@
      d xmlResetError   pr                  extproc('xmlResetError')
      d  err                                value like(xmlErrorPtr)
 
-     d xmlCopyError    pr            10i 0 extproc('xmlCopyError')
+     d xmlCopyError    pr                  extproc('xmlCopyError')
+     d                                     like(xmlCint)
      d  from                               value like(xmlErrorPtr)
      d  to                                 value like(xmlErrorPtr)
 
diff --git a/os400/libxmlrpg/xmlmemory.rpgle b/os400/libxmlrpg/xmlmemory.rpgle
index 3c79103..472e941 100644
--- a/os400/libxmlrpg/xmlmemory.rpgle
+++ b/os400/libxmlrpg/xmlmemory.rpgle
@@ -136,19 +136,22 @@
       * The xmlGc function have an extra entry for atomic block
       * allocations useful for garbage collected memory allocators
 
-     d xmlMemSetup     pr            10i 0 extproc('xmlMemSetup')
+     d xmlMemSetup     pr                  extproc('xmlMemSetup')
+     d                                     like(xmlCint)
      d  freeFunc                           value like(xmlFreeFunc)
      d  mallocFunc                         value like(xmlMallocFunc)
      d  reallocFunc                        value like(xmlReallocFunc)
      d  strdupFunc                         value like(xmlStrdupFunc)
 
-     d xmlMemGet       pr            10i 0 extproc('xmlMemGet')
+     d xmlMemGet       pr                  extproc('xmlMemGet')
+     d                                     like(xmlCint)
      d  freeFunc                           like(xmlFreeFunc)
      d  mallocFunc                         like(xmlMallocFunc)
      d  reallocFunc                        like(xmlReallocFunc)
      d  strdupFunc                         like(xmlStrdupFunc)
 
-     d xmlGcMemSetup   pr            10i 0 extproc('xmlGcMemSetup')
+     d xmlGcMemSetup   pr                  extproc('xmlGcMemSetup')
+     d                                     like(xmlCint)
      d  freeFunc                           value like(xmlFreeFunc)
      d  mallocFunc                         value like(xmlMallocFunc)
      d  mallocAtomicFunc...
@@ -156,7 +159,8 @@
      d  reallocFunc                        value like(xmlReallocFunc)
      d  strdupFunc                         value like(xmlStrdupFunc)
 
-     d xmlGcMemGet     pr            10i 0 extproc('xmlGcMemGet')
+     d xmlGcMemGet     pr                  extproc('xmlGcMemGet')
+     d                                     like(xmlCint)
      d  freeFunc                           like(xmlFreeFunc)
      d  mallocFunc                         like(xmlMallocFunc)
      d  mallocAtomicFunc...
@@ -166,7 +170,8 @@
 
       * Initialization of the memory layer.
 
-     d xmlInitMemory   pr            10i 0 extproc('xmlInitMemory')
+     d xmlInitMemory   pr                  extproc('xmlInitMemory')
+     d                                     like(xmlCint)
 
       * Cleanup of the memory layer.
 
@@ -175,9 +180,11 @@
 
       * These are specific to the XML debug memory wrapper.
 
-     d xmlMemUsed      pr            10i 0 extproc('xmlMemUsed')
+     d xmlMemUsed      pr                  extproc('xmlMemUsed')
+     d                                     like(xmlCint)
 
-     d xmlMemBlocks    pr            10i 0 extproc('xmlMemBlocks')
+     d xmlMemBlocks    pr                  extproc('xmlMemBlocks')
+     d                                     like(xmlCint)
 
      d xmlMemDisplay   pr                  extproc('xmlMemDisplay')
      d  fp                             *   value                                FILE *
@@ -189,7 +196,7 @@
 
      d xmlMemShow      pr                  extproc('xmlMemShow')
      d  fp                             *   value                                FILE *
-     d  nr                           10i 0 value
+     d  nr                                 value like(xmlCint)
 
      d xmlMemoryDump   pr                  extproc('xmlMemoryDump')
 
@@ -210,25 +217,25 @@
      d xmlMallocLoc    pr              *   extproc('xmlMallocLoc')              void *
      d  size                               value like(xmlCsize_t)
      d  file                           *   value options(*string)               const char *
-     d  line                         10i 0 value
+     d  line                               value like(xmlCint)
 
      d xmlReallocLoc   pr              *   extproc('xmlReallocLoc')              void *
      d  ptr                            *   value                                void *
      d  size                               value like(xmlCsize_t)
      d  file                           *   value options(*string)               const char *
-     d  line                         10i 0 value
+     d  line                               value like(xmlCint)
 
      d xmlMallocAtomicLoc...
      d                 pr              *   extproc('xmlMallocAtomicLoc')        void *
      d  size                               value like(xmlCsize_t)
      d  file                           *   value options(*string)               const char *
-     d  line                         10i 0 value
+     d  line                               value like(xmlCint)
 
      d xmlMemStrdupLoc...
      d                 pr              *   extproc('xmlMemStrdupLoc')           char *
      d  str                            *   value options(*string)               const char *
      d  file                           *   value options(*string)               const char *
-     d  line                         10i 0 value
+     d  line                               value like(xmlCint)
 
       /if not defined(XML_GLOBALS_H)
       /if not defined(XML_THREADS_H__)
diff --git a/os400/libxmlrpg/xmlmodule.rpgle b/os400/libxmlrpg/xmlmodule.rpgle
index 09592a6..035254d 100644
--- a/os400/libxmlrpg/xmlmodule.rpgle
+++ b/os400/libxmlrpg/xmlmodule.rpgle
@@ -13,6 +13,8 @@
 
       /if defined(LIBXML_MODULES_ENABLED)
 
+      /include "libxmlrpg/xmlTypesC"
+
       * xmlModulePtr:
       *
       * A handle to a dynamically loaded module
@@ -24,7 +26,8 @@
       * enumeration of options that can be passed down to xmlModuleOpen()
 
      d xmlModuleOption...
-     d                 s             10i 0 based(######typedef######)           enum
+     d                 s                   based(######typedef######)
+     d                                     like(xmlCenum)
      d  XML_MODULE_LAZY...                                                      Lazy binding
      d                 c                   1
      d  XML_MODULE_LOCAL...                                                     Local binding
@@ -33,18 +36,21 @@
      d xmlModuleOpen   pr                  extproc('xmlModuleOpen')
      d                                     like(xmlModulePtr)
      d  filename                       *   value options(*string)               const char *
-     d  options                      10i 0 value
+     d  options                            value like(xmlCint)
 
      d xmlModuleSymbol...
-     d                 pr            10i 0 extproc('xmlModuleSymbol')
+     d                 pr                  extproc('xmlModuleSymbol')
+     d                                     like(xmlCint)
      d  module                             value like(xmlModulePtr)
      d  name                           *   value options(*string)               const char *
      d  result                         *                                        void *(*)
 
-     d xmlModuleClose  pr            10i 0 extproc('xmlModuleClose')
+     d xmlModuleClose  pr                  extproc('xmlModuleClose')
+     d                                     like(xmlCint)
      d  module                             value like(xmlModulePtr)
 
-     d xmlModuleFree   pr            10i 0 extproc('xmlModuleFree')
+     d xmlModuleFree   pr                  extproc('xmlModuleFree')
+     d                                     like(xmlCint)
      d  module                             value like(xmlModulePtr)
 
       /endif                                                                    LIBXML_MODULES_ENBLD
diff --git a/os400/libxmlrpg/xmlreader.rpgle b/os400/libxmlrpg/xmlreader.rpgle
index 5084fc8..9ec76b3 100644
--- a/os400/libxmlrpg/xmlreader.rpgle
+++ b/os400/libxmlrpg/xmlreader.rpgle
@@ -24,7 +24,8 @@
       * is used.
 
      d xmlParserSeverities...
-     d                 s             10i 0 based(######typedef######)           enum
+     d                 s                   based(######typedef######)
+     d                                     like(xmlCenum)
      d  XML_PARSER_SEVERITY_VALIDITY_WARNING...
      d                 c                   1
      d  XML_PARSER_SEVERITY_VALIDITY_ERROR...
@@ -41,7 +42,8 @@
       * Internal state values for the reader.
 
      d xmlTextReaderMode...
-     d                 s             10i 0 based(######typedef######)           enum
+     d                 s                   based(######typedef######)
+     d                                     like(xmlCenum)
      d  XML_TEXTREADER_MODE_INITIAL...
      d                 c                   0
      d  XML_TEXTREADER_MODE_INTERACTIVE...
@@ -62,7 +64,8 @@
       * xmlReaderForxxx APIs now.
 
      d xmlParserProperties...
-     d                 s             10i 0 based(######typedef######)           enum
+     d                 s                   based(######typedef######)
+     d                                     like(xmlCenum)
      d  XML_PARSER_LOADDTD...
      d                 c                   1
      d  XML_PARSER_DEFAULTATTRS...
@@ -76,7 +79,8 @@
       *
       * Predefined constants for the different types of nodes.
 
-     d xmlReaderTypes  s             10i 0 based(######typedef######)           enum
+     d xmlReaderTypes  s                   based(######typedef######)
+     d                                     like(xmlCenum)
      d  XML_READER_TYPE_NONE...
      d                 c                   0
      d  XML_READER_TYPE_ELEMENT...
@@ -139,17 +143,19 @@
      d  reader                             value like(xmlTextReaderPtr)
 
      d xmlTextReaderSetup...
-     d                 pr            10i 0 extproc('xmlTextReaderSetup')
+     d                 pr                  extproc('xmlTextReaderSetup')
+     d                                     like(xmlCint)
      d  reader                             value like(xmlTextReaderPtr)
      d  input                              value like(xmlParserInputBufferPtr)
      d  URL                            *   value options(*string)               const char *
      d  encoding                       *   value options(*string)               const char *
-     d  options                      10i 0 value
+     d  options                            value like(xmlCint)
 
       * Iterators
 
      d xmlTextReaderRead...
-     d                 pr            10i 0 extproc('xmlTextReaderRead')
+     d                 pr                  extproc('xmlTextReaderRead')
+     d                                     like(xmlCint)
      d  reader                             value like(xmlTextReaderPtr)
 
       /if defined(LIBXML_WRITER_ENABLED)
@@ -167,53 +173,64 @@
      d  reader                             value like(xmlTextReaderPtr)
 
      d xmlTextReaderReadAttributeValue...
-     d                 pr            10i 0 extproc(
+     d                 pr                  extproc(
      d                                     'xmlTextReaderReadAttributeValue')
+     d                                     like(xmlCint)
      d  reader                             value like(xmlTextReaderPtr)
 
       * Attributes of the node
 
      d xmlTextReaderAttributeCount...
-     d                 pr            10i 0 extproc(
+     d                 pr                  extproc(
      d                                     'xmlTextReaderAttributeCount')
+     d                                     like(xmlCint)
      d  reader                             value like(xmlTextReaderPtr)
 
      d xmlTextReaderDepth...
-     d                 pr            10i 0 extproc('xmlTextReaderDepth')
+     d                 pr                  extproc('xmlTextReaderDepth')
+     d                                     like(xmlCint)
      d  reader                             value like(xmlTextReaderPtr)
 
      d xmlTextReaderHasAttributes...
-     d                 pr            10i 0 extproc('xmlTextReaderHasAttributes')
+     d                 pr                  extproc('xmlTextReaderHasAttributes')
+     d                                     like(xmlCint)
      d  reader                             value like(xmlTextReaderPtr)
 
      d xmlTextReaderHasValue...
-     d                 pr            10i 0 extproc('xmlTextReaderHasValue')
+     d                 pr                  extproc('xmlTextReaderHasValue')
+     d                                     like(xmlCint)
      d  reader                             value like(xmlTextReaderPtr)
 
      d xmlTextReaderIsDefault...
-     d                 pr            10i 0 extproc('xmlTextReaderIsDefault')
+     d                 pr                  extproc('xmlTextReaderIsDefault')
+     d                                     like(xmlCint)
      d  reader                             value like(xmlTextReaderPtr)
 
      d xmlTextReaderIsEmptyElement...
-     d                 pr            10i 0 extproc(
+     d                 pr                  extproc(
      d                                     'xmlTextReaderIsEmptyElement')
+     d                                     like(xmlCint)
      d  reader                             value like(xmlTextReaderPtr)
 
      d xmlTextReaderNodeType...
-     d                 pr            10i 0 extproc('xmlTextReaderNodeType')
+     d                 pr                  extproc('xmlTextReaderNodeType')
+     d                                     like(xmlCint)
      d  reader                             value like(xmlTextReaderPtr)
 
      d xmlTextReaderQuoteChar...
-     d                 pr            10i 0 extproc('xmlTextReaderQuoteChar')
+     d                 pr                  extproc('xmlTextReaderQuoteChar')
+     d                                     like(xmlCint)
      d  reader                             value like(xmlTextReaderPtr)
 
      d xmlTextReaderReadState...
-     d                 pr            10i 0 extproc('xmlTextReaderReadState')
+     d                 pr                  extproc('xmlTextReaderReadState')
+     d                                     like(xmlCint)
      d  reader                             value like(xmlTextReaderPtr)
 
      d xmlTextReaderIsNamespaceDecl...
-     d                 pr            10i 0 extproc(
+     d                 pr                  extproc(
      d                                     'xmlTextReaderIsNamespaceDecl')
+     d                                     like(xmlCint)
      d  reader                             value like(xmlTextReaderPtr)
 
      d xmlTextReaderConstBaseUri...
@@ -285,14 +302,15 @@
       * Methods of the XmlTextReader
 
      d xmlTextReaderClose...
-     d                 pr            10i 0 extproc('xmlTextReaderClose')
+     d                 pr                  extproc('xmlTextReaderClose')
+     d                                     like(xmlCint)
      d  reader                             value like(xmlTextReaderPtr)
 
      d xmlTextReaderGetAttributeNo...
      d                 pr              *   extproc(                             xmlChar *
      d                                     'xmlTextReaderGetAttributeNo')
      d  reader                             value like(xmlTextReaderPtr)
-     d  no                           10i 0 value
+     d  no                                 value like(xmlCint)
 
      d xmlTextReaderGetAttribute...
      d                 pr              *   extproc('xmlTextReaderGetAttribute') xmlChar *
@@ -318,40 +336,47 @@
      d  prefix                         *   value options(*string)               const xmlChar *
 
      d xmlTextReaderMoveToAttributeNo...
-     d                 pr            10i 0 extproc(
+     d                 pr                  extproc(
      d                                     'xmlTextReaderMoveToAttributeNo')
+     d                                     like(xmlCint)
      d  reader                             value like(xmlTextReaderPtr)
-     d  no                           10i 0 value
+     d  no                                 value like(xmlCint)
 
      d xmlTextReaderMoveToAttribute...
-     d                 pr            10i 0 extproc(
+     d                 pr                  extproc(
      d                                     'xmlTextReaderMoveToAttribute')
+     d                                     like(xmlCint)
      d  reader                             value like(xmlTextReaderPtr)
      d  name                           *   value options(*string)               const xmlChar *
 
      d xmlTextReaderMoveToAttributeNs...
-     d                 pr            10i 0 extproc(
+     d                 pr                  extproc(
      d                                     'xmlTextReaderMoveToAttributeNs')
+     d                                     like(xmlCint)
      d  reader                             value like(xmlTextReaderPtr)
      d  localName                      *   value options(*string)               const xmlChar *
      d  namespaceURI                   *   value options(*string)               const xmlChar *
 
      d xmlTextReaderMoveToFirstAttribute...
-     d                 pr            10i 0 extproc(
+     d                 pr                  extproc(
      d                                     'xmlTextReaderMoveToFirstAttribute')
+     d                                     like(xmlCint)
      d  reader                             value like(xmlTextReaderPtr)
 
      d xmlTextReaderMoveToNextAttribute...
-     d                 pr            10i 0 extproc(
+     d                 pr                  extproc(
      d                                     'xmlTextReaderMoveToNextAttribute')
+     d                                     like(xmlCint)
      d  reader                             value like(xmlTextReaderPtr)
 
      d xmlTextReaderMoveToElement...
-     d                 pr            10i 0 extproc('xmlTextReaderMoveToElement')
+     d                 pr                  extproc('xmlTextReaderMoveToElement')
+     d                                     like(xmlCint)
      d  reader                             value like(xmlTextReaderPtr)
 
      d xmlTextReaderNormalization...
-     d                 pr            10i 0 extproc('xmlTextReaderNormalization')
+     d                 pr                  extproc('xmlTextReaderNormalization')
+     d                                     like(xmlCint)
      d  reader                             value like(xmlTextReaderPtr)
 
      d xmlTextReaderConstEncoding...
@@ -361,15 +386,17 @@
       * Extensions
 
      d xmlTextReaderSetParserProp...
-     d                 pr            10i 0 extproc('xmlTextReaderSetParserProp')
+     d                 pr                  extproc('xmlTextReaderSetParserProp')
+     d                                     like(xmlCint)
      d  reader                             value like(xmlTextReaderPtr)
-     d  prop                         10i 0 value
-     d  value                        10i 0 value
+     d  prop                               value like(xmlCint)
+     d  value                              value like(xmlCint)
 
      d xmlTextReaderGetParserProp...
-     d                 pr            10i 0 extproc('xmlTextReaderGetParserProp')
+     d                 pr                  extproc('xmlTextReaderGetParserProp')
+     d                                     like(xmlCint)
      d  reader                             value like(xmlTextReaderPtr)
-     d  prop                         10i 0 value
+     d  prop                               value like(xmlCint)
 
      d xmlTextReaderCurrentNode...
      d                 pr                  extproc('xmlTextReaderCurrentNode')
@@ -377,13 +404,15 @@
      d  reader                             value like(xmlTextReaderPtr)
 
      d xmlTextReaderGetParserLineNumber...
-     d                 pr            10i 0 extproc(
+     d                 pr                  extproc(
      d                                     'xmlTextReaderGetParserLineNumber')
+     d                                     like(xmlCint)
      d  reader                             value like(xmlTextReaderPtr)
 
      d xmlTextReaderGetParserColumnNumber...
-     d                 pr            10i 0 extproc(
+     d                 pr                  extproc(
      d                                     'xmlTextReaderGetParserColumnNumber')
+     d                                     like(xmlCint)
      d  reader                             value like(xmlTextReaderPtr)
 
      d xmlTextReaderPreserve...
@@ -393,8 +422,9 @@
 
       /if defined(LIBXML_PATTERN_ENABLED)
      d xmlTextReaderPreservePattern...
-     d                 pr            10i 0 extproc(
+     d                 pr                  extproc(
      d                                     'xmlTextReaderPreservePattern')
+     d                                     like(xmlCint)
      d  reader                             value like(xmlTextReaderPtr)
      d  pattern                        *   value options(*string)               const xmlChar *
      d  namespaces                     *                                        const xmlChar *(*)
@@ -411,52 +441,61 @@
      d  reader                             value like(xmlTextReaderPtr)
 
      d xmlTextReaderNext...
-     d                 pr            10i 0 extproc('xmlTextReaderNext')
+     d                 pr                  extproc('xmlTextReaderNext')
+     d                                     like(xmlCint)
      d  reader                             value like(xmlTextReaderPtr)
 
      d xmlTextReaderNextSibling...
-     d                 pr            10i 0 extproc('xmlTextReaderNextSibling')
+     d                 pr                  extproc('xmlTextReaderNextSibling')
+     d                                     like(xmlCint)
      d  reader                             value like(xmlTextReaderPtr)
 
      d xmlTextReaderIsValid...
-     d                 pr            10i 0 extproc('xmlTextReaderIsValid')
+     d                 pr                  extproc('xmlTextReaderIsValid')
+     d                                     like(xmlCint)
      d  reader                             value like(xmlTextReaderPtr)
 
       /if defined(LIBXML_SCHEMAS_ENABLED)
      d xmlTextReaderRelaxNGValidate...
-     d                 pr            10i 0 extproc(
+     d                 pr                  extproc(
      d                                     'xmlTextReaderRelaxNGValidate')
+     d                                     like(xmlCint)
      d  reader                             value like(xmlTextReaderPtr)
      d  rng                            *   value options(*string)               const char *
 
      d xmlTextReaderRelaxNGValidateCtxt...
-     d                 pr            10i 0 extproc(
+     d                 pr                  extproc(
      d                                     'xmlTextReaderRelaxNGValidateCtxt')
+     d                                     like(xmlCint)
      d  reader                             value like(xmlTextReaderPtr)
      d  ctxt                               value like(xmlRelaxNGValidCtxtPtr)
-     d  options                      10i 0 value
+     d  options                            value like(xmlCint)
 
      d xmlTextReaderRelaxNGSetSchema...
-     d                 pr            10i 0 extproc(
+     d                 pr                  extproc(
      d                                     'xmlTextReaderRelaxNGSetSchema')
+     d                                     like(xmlCint)
      d  reader                             value like(xmlTextReaderPtr)
      d  schema                             value like(xmlRelaxNGPtr)
 
      d xmlTextReaderSchemaValidate...
-     d                 pr            10i 0 extproc(
+     d                 pr                  extproc(
      d                                     'xmlTextReaderSchemaValidate')
+     d                                     like(xmlCint)
      d  reader                             value like(xmlTextReaderPtr)
      d  xsd                            *   value options(*string)               const char *
 
      d xmlTextReaderSchemaValidateCtxt...
-     d                 pr            10i 0 extproc(
+     d                 pr                  extproc(
      d                                     'xmlTextReaderSchemaValidateCtxt')
+     d                                     like(xmlCint)
      d  reader                             value like(xmlTextReaderPtr)
      d  ctxt                               value like(xmlSchemaValidCtxtPtr)
-     d  options                      10i 0 value
+     d  options                            value like(xmlCint)
 
      d xmlTextReaderSetSchema...
-     d                 pr            10i 0 extproc('xmlTextReaderSetSchema')
+     d                 pr                  extproc('xmlTextReaderSetSchema')
+     d                                     like(xmlCint)
      d  reader                             value like(xmlTextReaderPtr)
      d  schema                             value like(xmlSchemaPtr)
       /endif
@@ -467,7 +506,8 @@
      d  reader                             value like(xmlTextReaderPtr)
 
      d xmlTextReaderStandalone...
-     d                 pr            10i 0 extproc('xmlTextReaderStandalone')
+     d                 pr                  extproc('xmlTextReaderStandalone')
+     d                                     like(xmlCint)
      d  reader                             value like(xmlTextReaderPtr)
 
       * Index lookup
@@ -490,30 +530,30 @@
      d  cur                            *   value options(*string)               const xmlChar *
      d  URL                            *   value options(*string)               const char *
      d  encoding                       *   value options(*string)               const char *
-     d  options                      10i 0 value
+     d  options                            value like(xmlCint)
 
      d xmlReaderForFile...
      d                 pr                  extproc('xmlReaderForFile')
      d                                     like(xmlTextReaderPtr)
      d  filename                       *   value options(*string)               const char *
      d  encoding                       *   value options(*string)               const char *
-     d  options                      10i 0 value
+     d  options                            value like(xmlCint)
 
      d xmlReaderForMemory...
      d                 pr                  extproc('xmlReaderForMemory')
      d                                     like(xmlTextReaderPtr)
      d  buffer                         *   value options(*string)               const char *
-     d  size                         10i 0 value
+     d  size                               value like(xmlCint)
      d  URL                            *   value options(*string)               const char *
      d  encoding                       *   value options(*string)               const char *
-     d  options                      10i 0 value
+     d  options                            value like(xmlCint)
 
      d xmlReaderForFd  pr                  extproc('xmlReaderForFd')
      d                                     like(xmlTextReaderPtr)
-     d  fd                           10i 0 value
+     d  fd                                 value like(xmlCint)
      d  URL                            *   value options(*string)               const char *
      d  encoding                       *   value options(*string)               const char *
-     d  options                      10i 0 value
+     d  options                            value like(xmlCint)
 
      d xmlReaderForIO  pr                  extproc('xmlReaderForIO')
      d                                     like(xmlTextReaderPtr)
@@ -522,52 +562,58 @@
      d  ioctx                          *   value                                void *
      d  URL                            *   value options(*string)               const char *
      d  encoding                       *   value options(*string)               const char *
-     d  options                      10i 0 value
+     d  options                            value like(xmlCint)
 
      d xmlReaderNewWalker...
-     d                 pr            10i 0 extproc('xmlReaderNewWalker')
+     d                 pr                  extproc('xmlReaderNewWalker')
+     d                                     like(xmlCint)
      d  reader                             value like(xmlTextReaderPtr)
      d  doc                                value like(xmlDocPtr)
 
      d xmlReaderNewDoc...
-     d                 pr            10i 0 extproc('xmlReaderNewDoc')
+     d                 pr                  extproc('xmlReaderNewDoc')
+     d                                     like(xmlCint)
      d  reader                             value like(xmlTextReaderPtr)
      d  cur                            *   value options(*string)               const xmlChar *
      d  URL                            *   value options(*string)               const char *
      d  encoding                       *   value options(*string)               const char *
-     d  options                      10i 0 value
+     d  options                            value like(xmlCint)
 
      d xmlReaderNewFile...
-     d                 pr            10i 0 extproc('xmlReaderNewFile')
+     d                 pr                  extproc('xmlReaderNewFile')
+     d                                     like(xmlCint)
      d  reader                             value like(xmlTextReaderPtr)
      d  filename                       *   value options(*string)               const char *
      d  encoding                       *   value options(*string)               const char *
-     d  options                      10i 0 value
+     d  options                            value like(xmlCint)
 
      d xmlReaderNewMemory...
-     d                 pr            10i 0 extproc('xmlReaderNewMemory')
+     d                 pr                  extproc('xmlReaderNewMemory')
+     d                                     like(xmlCint)
      d  reader                             value like(xmlTextReaderPtr)
      d  buffer                         *   value options(*string)               const char *
-     d  size                         10i 0 value
+     d  size                               value like(xmlCint)
      d  URL                            *   value options(*string)               const char *
      d  encoding                       *   value options(*string)               const char *
-     d  options                      10i 0 value
+     d  options                            value like(xmlCint)
 
-     d xmlReaderNewFd  pr            10i 0 extproc('xmlReaderNewFd')
+     d xmlReaderNewFd  pr                  extproc('xmlReaderNewFd')
+     d                                     like(xmlCint)
      d  reader                             value like(xmlTextReaderPtr)
-     d  fd                           10i 0 value
+     d  fd                                 value like(xmlCint)
      d  URL                            *   value options(*string)               const char *
      d  encoding                       *   value options(*string)               const char *
-     d  options                      10i 0 value
+     d  options                            value like(xmlCint)
 
-     d xmlReaderNewIO  pr            10i 0 extproc('xmlReaderNewIO')
+     d xmlReaderNewIO  pr                  extproc('xmlReaderNewIO')
+     d                                     like(xmlCint)
      d  reader                             value like(xmlTextReaderPtr)
      d  ioread                             value like(xmlInputReadCallback)
      d  ioclose                            value like(xmlInputCloseCallback)
      d  ioctx                          *   value                                void *
      d  URL                            *   value options(*string)               const char *
      d  encoding                       *   value options(*string)               const char *
-     d  options                      10i 0 value
+     d  options                            value like(xmlCint)
 
       * Error handling extensions
 
@@ -587,8 +633,9 @@
      d                                     procptr
 
      d xmlTextReaderLocatorLineNumber...
-     d                 pr            10i 0 extproc(
+     d                 pr                  extproc(
      d                                     'xmlTextReaderLocatorLineNumber')
+     d                                     like(xmlCint)
      d  locator                            value like(xmlTextReaderLocatorPtr)
 
      d xmlTextReaderLocatorBaseURI...
diff --git a/os400/libxmlrpg/xmlregexp.rpgle b/os400/libxmlrpg/xmlregexp.rpgle
index 65c2d07..01d411a 100644
--- a/os400/libxmlrpg/xmlregexp.rpgle
+++ b/os400/libxmlrpg/xmlregexp.rpgle
@@ -13,6 +13,8 @@
 
       /if defined(LIBXML_REGEXP_ENABLED)
 
+      /include "libxmlrpg/xmlTypesC"
+
       * xmlRegexpPtr:
       *
       * A libxml regular expression, they can actually be far more complex
@@ -41,7 +43,8 @@
      d                 pr                  extproc('xmlRegFreeRegexp')
      d  regexp                             value like(xmlRegexpPtr)
 
-     d xmlRegexpExec   pr            10i 0 extproc('xmlRegexpExec')
+     d xmlRegexpExec   pr                  extproc('xmlRegexpExec')
+     d                                     like(xmlCint)
      d  comp                               value like(xmlRegexpPtr)
      d  value                          *   value options(*string)               const xmlChar *
 
@@ -50,7 +53,8 @@
      d  regexp                             value like(xmlRegexpPtr)
 
      d xmlRegexpIsDeterminist...
-     d                 pr            10i 0 extproc('xmlRegexpIsDeterminist')
+     d                 pr                  extproc('xmlRegexpIsDeterminist')
+     d                                     like(xmlCint)
      d  comp                               value like(xmlRegexpPtr)
 
       * xmlRegExecCallbacks:
@@ -79,34 +83,38 @@
      d  exec                               value like(xmlRegExecCtxtPtr)
 
      d xmlRegExecPushString...
-     d                 pr            10i 0 extproc('xmlRegExecPushString')
+     d                 pr                  extproc('xmlRegExecPushString')
+     d                                     like(xmlCint)
      d  exec                               value like(xmlRegExecCtxtPtr)
      d  value                          *   value options(*string)               const xmlChar *
      d  data                           *   value                                void *
 
      d xmlRegExecPushString2...
-     d                 pr            10i 0 extproc('xmlRegExecPushString2')
+     d                 pr                  extproc('xmlRegExecPushString2')
+     d                                     like(xmlCint)
      d  exec                               value like(xmlRegExecCtxtPtr)
      d  value                          *   value options(*string)               const xmlChar *
      d  value2                         *   value options(*string)               const xmlChar *
      d  data                           *   value                                void *
 
      d xmlRegExecNextValues...
-     d                 pr            10i 0 extproc('xmlRegExecNextValues')
+     d                 pr                  extproc('xmlRegExecNextValues')
+     d                                     like(xmlCint)
      d  exec                               value like(xmlRegExecCtxtPtr)
-     d  nbval                        10i 0
-     d  nbneg                        10i 0
+     d  nbval                              like(xmlCint)
+     d  nbneg                              like(xmlCint)
      d  values                         *                                        xmlChar * (*)
-     d  terminal                     10i 0
+     d  terminal                           like(xmlCint)
 
      d xmlRegExecErrInfo...
-     d                 pr            10i 0 extproc('xmlRegExecErrInfo')
+     d                 pr                  extproc('xmlRegExecErrInfo')
+     d                                     like(xmlCint)
      d  exec                               value like(xmlRegExecCtxtPtr)
      d  string                         *                                        const xmlChar * (*)
-     d  nbval                        10i 0
-     d  nbneg                        10i 0
+     d  nbval                              like(xmlCint)
+     d  nbneg                              like(xmlCint)
      d  values                         *                                        xmlChar * (*)
-     d  terminal                     10i 0
+     d  terminal                           like(xmlCint)
 
       /if defined(LIBXML_EXPR_ENABLED)
 
@@ -122,22 +130,25 @@
 
      d xmlExpNewCtxt   pr                  extproc('xmlExpNewCtxt')
      d                                     like(xmlExpCtxtPtr)
-     d  maxNodes                     10i 0 value
+     d  maxNodes                           value like(xmlCint)
      d  dict                               value like(xmlDictPtr)
 
      d xmlExpCtxtNbNodes...
-     d                 pr            10i 0 extproc('xmlExpCtxtNbNodes')
+     d                 pr                  extproc('xmlExpCtxtNbNodes')
+     d                                     like(xmlCint)
      d  ctxt                               value like(xmlExpCtxtPtr)
 
      d xmlExpCtxtNbCons...
-     d                 pr            10i 0 extproc('xmlExpCtxtNbCons')
+     d                 pr                  extproc('xmlExpCtxtNbCons')
+     d                                     like(xmlCint)
      d  ctxt                               value like(xmlExpCtxtPtr)
 
       * Expressions are trees but the tree is opaque
 
      d xmlExpNodePtr   s               *   based(######typedef######)
 
-     d xmlExpNodeType  s             10i 0 based(######typedef######)           enum
+     d xmlExpNodeType  s                   based(######typedef######)
+     d                                     like(xmlCenum)
      d  XML_EXP_EMPTY  c                   0
      d  XML_EXP_FORBID...
      d                 c                   1
@@ -175,7 +186,7 @@
      d                                     like(xmlExpNodePtr)
      d  ctxt                               value like(xmlExpCtxtPtr)
      d  name                           *   value options(*string)               const xmlChar *
-     d  len                          10i 0 value
+     d  len                                value like(xmlCint)
 
      d xmlExpNewOr     pr                  extproc('xmlExpNewOr')
      d                                     like(xmlExpNodePtr)
@@ -193,30 +204,34 @@
      d                                     like(xmlExpNodePtr)
      d  ctxt                               value like(xmlExpCtxtPtr)
      d  subset                             value like(xmlExpNodePtr)
-     d  min                          10i 0 value
-     d  max                          10i 0 value
+     d  min                                value like(xmlCint)
+     d  max                                value like(xmlCint)
 
       * The really interesting APIs
 
      d xmlExpIsNillable...
-     d                 pr            10i 0 extproc('xmlExpIsNillable')
+     d                 pr                  extproc('xmlExpIsNillable')
+     d                                     like(xmlCint)
      d  expr                               value like(xmlExpNodePtr)
 
-     d xmlExpMaxToken  pr            10i 0 extproc('xmlExpMaxToken')
+     d xmlExpMaxToken  pr                  extproc('xmlExpMaxToken')
+     d                                     like(xmlCint)
      d  expr                               value like(xmlExpNodePtr)
 
      d xmlExpGetLanguage...
-     d                 pr            10i 0 extproc('xmlExpGetLanguage')
+     d                 pr                  extproc('xmlExpGetLanguage')
+     d                                     like(xmlCint)
      d  ctxt                               value like(xmlExpCtxtPtr)
      d  expr                               value like(xmlExpNodePtr)
      d  langList                       *                                        const xmlChar *(*)
-     d  len                          10i 0 value
+     d  len                                value like(xmlCint)
 
-     d xmlExpGetStart  pr            10i 0 extproc('xmlExpGetStart')
+     d xmlExpGetStart  pr                  extproc('xmlExpGetStart')
+     d                                     like(xmlCint)
      d  ctxt                               value like(xmlExpCtxtPtr)
      d  expr                               value like(xmlExpNodePtr)
      d  tokList                        *                                        const xmlChar *(*)
-     d  len                          10i 0 value
+     d  len                                value like(xmlCint)
 
      d xmlExpStringDerive...
      d                 pr                  extproc('xmlExpStringDerive')
@@ -224,7 +239,7 @@
      d  ctxt                               value like(xmlExpCtxtPtr)
      d  expr                               value like(xmlExpNodePtr)
      d  str                            *   value options(*string)               const xmlChar *
-     d  len                          10i 0 value
+     d  len                                value like(xmlCint)
 
      d xmlExpExpDerive...
      d                 pr                  extproc('xmlExpExpDerive')
@@ -233,7 +248,8 @@
      d  expr                               value like(xmlExpNodePtr)
      d  sub                                value like(xmlExpNodePtr)
 
-     d xmlExpSubsume   pr            10i 0 extproc('xmlExpSubsume')
+     d xmlExpSubsume   pr                  extproc('xmlExpSubsume')
+     d                                     like(xmlCint)
      d  ctxt                               value like(xmlExpCtxtPtr)
      d  expr                               value like(xmlExpNodePtr)
      d  sub                                value like(xmlExpNodePtr)
diff --git a/os400/libxmlrpg/xmlsave.rpgle b/os400/libxmlrpg/xmlsave.rpgle
index 764dceb..ad0d15d 100644
--- a/os400/libxmlrpg/xmlsave.rpgle
+++ b/os400/libxmlrpg/xmlsave.rpgle
@@ -9,19 +9,21 @@
       /define XML_XMLSAVE_H__
 
       /include "libxmlrpg/xmlversion"
+
+      /if defined(LIBXML_OUTPUT_ENABLED)
+
       /include "libxmlrpg/xmlTypesC"
       /include "libxmlrpg/tree"
       /include "libxmlrpg/encoding"
       /include "libxmlrpg/xmlIO"
 
-      /if defined(LIBXML_OUTPUT_ENABLED)
-
       * xmlSaveOption:
       *
       * This is the set of XML save options that can be passed down
       * to the xmlSaveToFd() and similar calls.
 
-     d xmlSaveOption   s             10i 0 based(######typedef######)           enum
+     d xmlSaveOption   s                   based(######typedef######)
+     d                                     like(xmlCenum)
      d  XML_SAVE_FORMAT...                                                      Format save output
      d                 c                   X'0001'
      d  XML_SAVE_NO_DECL...                                                     Drop xml declaration
@@ -43,23 +45,23 @@
 
      d xmlSaveToFd     pr                  extproc('xmlSaveToFd')
      d                                     like(xmlSaveCtxtPtr)
-     d  fd                           10i 0 value
+     d  fd                                 value like(xmlCint)
      d  encoding                       *   value options(*string)               const char *
-     d  options                      10i 0 value
+     d  options                            value like(xmlCint)
 
      d xmlSaveToFilename...
      d                 pr                  extproc('xmlSaveToFilename')
      d                                     like(xmlSaveCtxtPtr)
      d  filename                       *   value options(*string)               const char *
      d  encoding                       *   value options(*string)               const char *
-     d  options                      10i 0 value
+     d  options                            value like(xmlCint)
 
      d xmlSaveToBuffer...
      d                 pr                  extproc('xmlSaveToBuffer')
      d                                     like(xmlSaveCtxtPtr)
      d  buffer                             value like(xmlBufferPtr)
      d  encoding                       *   value options(*string)               const char *
-     d  options                      10i 0 value
+     d  options                            value like(xmlCint)
 
      d xmlSaveToIO     pr                  extproc('xmlSaveToIO')
      d                                     like(xmlSaveCtxtPtr)
@@ -67,7 +69,7 @@
      d  ioclose                            value like(xmlOutputCloseCallback)
      d  ioctx                          *   value                                void *
      d  encoding                       *   value options(*string)               const char *
-     d  options                      10i 0 value
+     d  options                            value like(xmlCint)
 
      d xmlSaveDoc      pr                  extproc('xmlSaveDoc')
      d                                     like(xmlClong)
@@ -79,19 +81,23 @@
      d  ctxt                               value like(xmlSaveCtxtPtr)
      d  node                               value like(xmlNodePtr)
 
-     d xmlSaveFlush    pr            10i 0 extproc('xmlSaveFlush')
+     d xmlSaveFlush    pr                  extproc('xmlSaveFlush')
+     d                                     like(xmlCint)
      d  ctxt                               value like(xmlSaveCtxtPtr)
 
-     d xmlSaveClose    pr            10i 0 extproc('xmlSaveClose')
+     d xmlSaveClose    pr                  extproc('xmlSaveClose')
+     d                                     like(xmlCint)
      d  ctxt                               value like(xmlSaveCtxtPtr)
 
      d xmlSaveSetEscape...
-     d                 pr            10i 0 extproc('xmlSaveSetEscape')
+     d                 pr                  extproc('xmlSaveSetEscape')
+     d                                     like(xmlCint)
      d  ctxt                               value like(xmlSaveCtxtPtr)
      d  escape                             value like(xmlCharEncodingOutputFunc)
 
      d xmlSaveSetAttrEscape...
-     d                 pr            10i 0 extproc('xmlSaveSetAttrEscape')
+     d                 pr                  extproc('xmlSaveSetAttrEscape')
+     d                                     like(xmlCint)
      d  ctxt                               value like(xmlSaveCtxtPtr)
      d  escape                             value like(xmlCharEncodingOutputFunc)
 
diff --git a/os400/libxmlrpg/xmlschemas.rpgle b/os400/libxmlrpg/xmlschemas.rpgle
index 865dd26..f34ddcd 100644
--- a/os400/libxmlrpg/xmlschemas.rpgle
+++ b/os400/libxmlrpg/xmlschemas.rpgle
@@ -13,12 +13,14 @@
 
       /if defined(LIBXML_SCHEMAS_ENABLED)
 
+      /include "libxmlrpg/xmlTypesC"
       /include "libxmlrpg/tree"
 
       * This error codes are obsolete; not used any more.
 
      d xmlSchemaValidError...
-     d                 s             10i 0 based(######typedef######)           enum
+     d                 s                   based(######typedef######)
+     d                                     like(xmlCenum)
      d  XML_SCHEMAS_ERR_OK...
      d                 c                   0
      d  XML_SCHEMAS_ERR_NOROOT...
@@ -81,7 +83,8 @@
       * This is the set of XML Schema validation options.
 
      d xmlSchemaValidOption...
-     d                 s             10i 0 based(######typedef######)           enum
+     d                 s                   based(######typedef######)
+     d                                     like(xmlCenum)
       *
       * Default/fixed: create an attribute node
       * or an element's text node on the instance.
@@ -158,7 +161,7 @@
      d                 pr                  extproc('xmlSchemaNewMemParserCtxt')
      d                                     like(xmlSchemaParserCtxtPtr)
      d buffer                          *   value options(*string)               const char *
-     d size                          10i 0 value
+     d size                                value like(xmlCint)
 
      d xmlSchemaNewDocParserCtxt...
      d                 pr                  extproc('xmlSchemaNewDocParserCtxt')
@@ -186,14 +189,16 @@
      d ctx                             *   value                                void *
 
      d xmlSchemaGetParserErrors...
-     d                 pr            10i 0 extproc('xmlSchemaGetParserErrors')
+     d                 pr                  extproc('xmlSchemaGetParserErrors')
+     d                                     like(xmlCint)
      d ctxt                                value like(xmlSchemaParserCtxtPtr)
      d err                                 like(xmlSchemaValidityErrorFunc)
      d warn                                like(xmlSchemaValidityWarningFunc)
      d ctx                             *                                        void *(*)
 
      d xmlSchemaIsValid...
-     d                 pr            10i 0 extproc('xmlSchemaIsValid')
+     d                 pr                  extproc('xmlSchemaIsValid')
+     d                                     like(xmlCint)
      d ctxt                                value like(xmlSchemaValidCtxtPtr)
 
      d xmlSchemaParse  pr                  extproc('xmlSchemaParse')
@@ -228,16 +233,18 @@
      d ctx                             *   value                                void *
 
      d xmlSchemaGetValidErrors...
-     d                 pr            10i 0 extproc('xmlSchemaGetValidErrors')
+     d                 pr                  extproc('xmlSchemaGetValidErrors')
+     d                                     like(xmlCint)
      d ctxt                                value like(xmlSchemaValidCtxtPtr)
      d err                                 like(xmlSchemaValidityErrorFunc)
      d warn                                like(xmlSchemaValidityWarningFunc)
      d ctx                             *                                        void *(*)
 
      d xmlSchemaSetValidOptions...
-     d                 pr            10i 0 extproc('xmlSchemaSetValidOptions')
+     d                 pr                  extproc('xmlSchemaSetValidOptions')
+     d                                     like(xmlCint)
      d ctxt                                value like(xmlSchemaValidCtxtPtr)
-     d options                       10i 0 value
+     d options                             value like(xmlCint)
 
      d xmlSchemaValidateSetFilename...
      d                 pr                  extproc(
@@ -246,8 +253,9 @@
      d filename                        *   value options(*string)               const char *
 
      d xmlSchemaValidCtxtGetOptions...
-     d                 pr            10i 0 extproc(
+     d                 pr                  extproc(
      d                                     'xmlSchemaValidCtxtGetOptions')
+     d                                     like(xmlCint)
      d ctxt                                value like(xmlSchemaValidCtxtPtr)
 
      d xmlSchemaNewValidCtxt...
@@ -260,18 +268,21 @@
      d ctxt                                value like(xmlSchemaValidCtxtPtr)
 
      d xmlSchemaValidateDoc...
-     d                 pr            10i 0 extproc('xmlSchemaValidateDoc')
+     d                 pr                  extproc('xmlSchemaValidateDoc')
+     d                                     like(xmlCint)
      d ctxt                                value like(xmlSchemaValidCtxtPtr)
      d instance                            value like(xmlDocPtr)
 
      d xmlSchemaValidateOneElement...
-     d                 pr            10i 0 extproc(
+     d                 pr                  extproc(
      d                                     'xmlSchemaValidateOneElement')
+     d                                     like(xmlCint)
      d ctxt                                value like(xmlSchemaValidCtxtPtr)
      d elem                                value like(xmlNodePtr)
 
      d xmlSchemaValidateStream...
-     d                 pr            10i 0 extproc('xmlSchemaValidateStream')
+     d                 pr                  extproc('xmlSchemaValidateStream')
+     d                                     like(xmlCint)
      d ctxt                                value like(xmlSchemaValidCtxtPtr)
      d input                               value like(xmlParserInputBufferPtr)
      d enc                                 value like(xmlCharEncoding)
@@ -279,10 +290,11 @@
      d user_data                       *   value                                void *
 
      d xmlSchemaValidateFile...
-     d                 pr            10i 0 extproc('xmlSchemaValidateFile')
+     d                 pr                  extproc('xmlSchemaValidateFile')
+     d                                     like(xmlCint)
      d ctxt                                value like(xmlSchemaValidCtxtPtr)
      d filename                        *   value options(*string)               const char *
-     d options                       10i 0 value
+     d options                             value like(xmlCint)
 
      d xmlSchemaValidCtxtGetParserCtxt...
      d                 pr                  extproc(
@@ -303,7 +315,8 @@
      d user_data                       *                                        void *(*)
 
      d xmlSchemaSAXUnplug...
-     d                 pr            10i 0 extproc('xmlSchemaSAXUnplug')
+     d                 pr                  extproc('xmlSchemaSAXUnplug')
+     d                                     like(xmlCint)
      d plug                                value like(xmlSchemaSAXPlugPtr)
 
      d xmlSchemaValidateSetLocator...
diff --git a/os400/libxmlrpg/xmlschemastypes.rpgle b/os400/libxmlrpg/xmlschemastypes.rpgle
index 0bf0f70..ecd6aba 100644
--- a/os400/libxmlrpg/xmlschemastypes.rpgle
+++ b/os400/libxmlrpg/xmlschemastypes.rpgle
@@ -10,15 +10,16 @@
       /define XML_SCHEMA_TYPES_H__
 
       /include "libxmlrpg/xmlversion"
-      /include "libxmlrpg/xmlTypesC"
 
       /if defined(LIBXML_SCHEMAS_ENABLED)
 
+      /include "libxmlrpg/xmlTypesC"
       /include "libxmlrpg/schemasInternals"
       /include "libxmlrpg/xmlschemas"
 
      d xmlSchemaWhitespaceValueType...
-     d                 s             10i 0 based(######typedef######)           enum
+     d                 s                   based(######typedef######)
+     d                                     like(xmlCenum)
      d  XML_SCHEMA_WHITESPACE_UNKNOWN...
      d                 c                   0
      d  XML_SCHEMA_WHITESPACE_PRESERVE...
@@ -41,29 +42,33 @@
      d  ns                             *   value options(*string)               const xmlChar *
 
      d xmlSchemaValidatePredefinedType...
-     d                 pr            10i 0 extproc(
+     d                 pr                  extproc(
      d                                     'xmlSchemaValidatePredefinedType')
+     d                                     like(xmlCint)
      d  type                               value like(xmlSchemaTypePtr)
      d  value                          *   value options(*string)               const xmlChar *
      d  val                            *   value                                xmlSchemaValPtr *
 
      d xmlSchemaValPredefTypeNode...
-     d                 pr            10i 0 extproc('xmlSchemaValPredefTypeNode')
+     d                 pr                  extproc('xmlSchemaValPredefTypeNode')
+     d                                     like(xmlCint)
      d  type                               value like(xmlSchemaTypePtr)
      d  value                          *   value options(*string)               const xmlChar *
      d  val                            *   value                                xmlSchemaValPtr *
      d  node                               value like(xmlNodePtr)
 
      d xmlSchemaValidateFacet...
-     d                 pr            10i 0 extproc('xmlSchemaValidateFacet')
+     d                 pr                  extproc('xmlSchemaValidateFacet')
+     d                                     like(xmlCint)
      d  base                               value like(xmlSchemaTypePtr)
      d  facet                              value like(xmlSchemaFacetPtr)
      d  value                          *   value options(*string)               const xmlChar *
      d  val                                value like(xmlSchemaValPtr)
 
      d xmlSchemaValidateFacetWhtsp...
-     d                 pr            10i 0 extproc(
+     d                 pr                  extproc(
      d                                     'xmlSchemaValidateFacetWhtsp')
+     d                                     like(xmlCint)
      d  facet                              value like(xmlSchemaFacetPtr)
      d  fws                                value
      d                                     like(xmlSchemaWhitespaceValueType)
@@ -82,7 +87,8 @@
      d                                     like(xmlSchemaFacetPtr)
 
      d xmlSchemaCheckFacet...
-     d                 pr            10i 0 extproc('xmlSchemaCheckFacet')
+     d                 pr                  extproc('xmlSchemaCheckFacet')
+     d                                     like(xmlCint)
      d  facet                              value like(xmlSchemaFacetPtr)
      d  typeDecl                           value like(xmlSchemaTypePtr)
      d  ctxt                               value like(xmlSchemaParserCtxtPtr)
@@ -93,7 +99,8 @@
      d  facet                              value like(xmlSchemaFacetPtr)
 
      d xmlSchemaCompareValues...
-     d                 pr            10i 0 extproc('xmlSchemaCompareValues')
+     d                 pr                  extproc('xmlSchemaCompareValues')
+     d                                     like(xmlCint)
      d  x                                  value like(xmlSchemaValPtr)
      d  y                                  value like(xmlSchemaValPtr)
 
@@ -104,8 +111,9 @@
      d  type                               value like(xmlSchemaTypePtr)
 
      d xmlSchemaValidateListSimpleTypeFacet...
-     d                 pr            10i 0 extproc('xmlSchemaValidateListSimple-
+     d                 pr                  extproc('xmlSchemaValidateListSimple-
      d                                     TypeFacet')
+     d                                     like(xmlCint)
      d  facet                              value like(xmlSchemaFacetPtr)
      d  value                          *   value options(*string)               const xmlChar *
      d  actualLen                          value like(xmlCulong)
@@ -117,10 +125,11 @@
      d  type                               value like(xmlSchemaValType)
 
      d xmlSchemaIsBuiltInTypeFacet...
-     d                 pr            10i 0 extproc(
+     d                 pr                  extproc(
      d                                     'xmlSchemaIsBuiltInTypeFacet')
+     d                                     like(xmlCint)
      d  type                               value like(xmlSchemaTypePtr)
-     d  facetType                    10i 0 value
+     d  facetType                          value like(xmlCint)
 
      d xmlSchemaCollapseString...
      d                 pr              *   extproc('xmlSchemaCollapseString')   xmlChar *
@@ -137,8 +146,9 @@
      d  facet                              value like(xmlSchemaFacetPtr)
 
      d xmlSchemaValidateLengthFacet...
-     d                 pr            10i 0 extproc(
+     d                 pr                  extproc(
      d                                     'xmlSchemaValidateLengthFacet')
+     d                                     like(xmlCint)
      d  type                               value like(xmlSchemaTypePtr)
      d  facet                              value like(xmlSchemaFacetPtr)
      d  value                          *   value options(*string)               const xmlChar *
@@ -146,8 +156,9 @@
      d  length                             like(xmlCulong)
 
      d xmlSchemaValidateLengthFacetWhtsp...
-     d                 pr            10i 0 extproc(
+     d                 pr                  extproc(
      d                                     'xmlSchemaValidateLengthFacetWhtsp')
+     d                                     like(xmlCint)
      d  facet                              value like(xmlSchemaFacetPtr)
      d  valType                            value like(xmlSchemaValType)
      d  value                          *   value options(*string)               const xmlChar *
@@ -157,28 +168,32 @@
      d                                     like(xmlSchemaWhitespaceValueType)
 
      d xmlSchemaValPredefTypeNodeNoNorm...
-     d                 pr            10i 0 extproc(
+     d                 pr                  extproc(
      d                                     'xmlSchemaValPredefTypeNodeNoNorm')
+     d                                     like(xmlCint)
      d  type                               value like(xmlSchemaTypePtr)
      d  value                          *   value options(*string)               const xmlChar *
      d  val                                like(xmlSchemaValPtr)
      d  node                               value like(xmlNodePtr)
 
      d xmlSchemaGetCanonValue...
-     d                 pr            10i 0 extproc('xmlSchemaGetCanonValue')
+     d                 pr                  extproc('xmlSchemaGetCanonValue')
+     d                                     like(xmlCint)
      d  val                                value like(xmlSchemaValPtr)
      d  retValue                       *   value                                const xmlChar * *
 
      d xmlSchemaGetCanonValueWhtsp...
-     d                 pr            10i 0 extproc(
+     d                 pr                  extproc(
      d                                     'xmlSchemaGetCanonValueWhtsp')
+     d                                     like(xmlCint)
      d  val                                value like(xmlSchemaValPtr)
      d  retValue                       *   value                                const xmlChar * *
      d  ws                                 value
      d                                     like(xmlSchemaWhitespaceValueType)
 
      d xmlSchemaValueAppend...
-     d                 pr            10i 0 extproc('xmlSchemaValueAppend')
+     d                 pr                  extproc('xmlSchemaValueAppend')
+     d                                     like(xmlCint)
      d  prev                               value like(xmlSchemaValPtr)
      d  cur                                value like(xmlSchemaValPtr)
 
@@ -192,7 +207,8 @@
      d  val                                value like(xmlSchemaValPtr)
 
      d xmlSchemaValueGetAsBoolean...
-     d                 pr            10i 0 extproc('xmlSchemaValueGetAsBoolean')
+     d                 pr                  extproc('xmlSchemaValueGetAsBoolean')
+     d                                     like(xmlCint)
      d  val                                value like(xmlSchemaValPtr)
 
      d xmlSchemaNewStringValue...
@@ -214,8 +230,9 @@
      d  localName                      *   value options(*string)               const xmlChar *
 
      d xmlSchemaCompareValuesWhtsp...
-     d                 pr            10i 0 extproc(
+     d                 pr                  extproc(
      d                                     'xmlSchemaCompareValuesWhtsp')
+     d                                     like(xmlCint)
      d  x                                  value like(xmlSchemaValPtr)
      d  xws                                value
      d                                     like(xmlSchemaWhitespaceValueType)
diff --git a/os400/libxmlrpg/xmlstdarg.rpgle b/os400/libxmlrpg/xmlstdarg.rpgle
index 9e45a4c..3c8e200 100644
--- a/os400/libxmlrpg/xmlstdarg.rpgle
+++ b/os400/libxmlrpg/xmlstdarg.rpgle
@@ -8,6 +8,7 @@
       /define XML_STDARG_H__
 
       /include "libxmlrpg/xmlversion"
+      /include "libxmlrpg/xmlTypesC"
 
       * The va_list object.
 
@@ -21,12 +22,12 @@
      d xmlVaStart      pr                  extproc('__xmlVaStart')
      d  list                               likeds(xmlVaList)
      d  lastargaddr                    *   value
-     d  lastargsize                  10u 0 value
+     d  lastargsize                        value like(xmlCsize_t)
 
      d xmlVaArg        pr              *   extproc('__xmlVaArg')
      d  list                               likeds(xmlVaList)
      d  dest                           *   value
-     d  argsize                      10i 0 value
+     d  argsize                            value like(xmlCsize_t)
 
      d xmlVaEnd        pr                  extproc('__xmlVaEnd')
      d  list                               likeds(xmlVaList)
diff --git a/os400/libxmlrpg/xmlstring.rpgle b/os400/libxmlrpg/xmlstring.rpgle
index 5b863e4..8980fc0 100644
--- a/os400/libxmlrpg/xmlstring.rpgle
+++ b/os400/libxmlrpg/xmlstring.rpgle
@@ -29,19 +29,19 @@
 
      d xmlStrndup      pr              *   extproc('xmlStrndup')                xmlChar *
      d  cur                            *   value options(*string)               const xmlChar *
-     d  len                          10i 0 value
+     d  len                                value like(xmlCint)
 
      d xmlCharStrndup  pr              *   extproc('xmlCharStrndup')            xmlChar *
      d  cur                            *   value options(*string)               const char *
-     d  len                          10i 0 value
+     d  len                                value like(xmlCint)
 
      d xmlCharStrdup   pr              *   extproc('xmlCharStrdup')             xmlChar *
      d  cur                            *   value options(*string)               const char *
 
      d xmlStrsub       pr              *   extproc('xmlStrsub')                 const xmlChar *
      d  str                            *   value options(*string)               const xmlChar *
-     d  start                        10i 0 value
-     d  len                          10i 0 value
+     d  start                              value like(xmlCint)
+     d  len                                value like(xmlCint)
 
      d xmlStrchr       pr              *   extproc('xmlStrchr')                 const xmlChar *
      d  str                            *   value options(*string)               const xmlChar *
@@ -55,34 +55,41 @@
      d  str                            *   value options(*string)               const xmlChar *
      d  val                            *   value options(*string)               const xmlChar *
 
-     d xmlStrcmp       pr            10i 0 extproc('xmlStrcmp')
+     d xmlStrcmp       pr                  extproc('xmlStrcmp')
+     d                                     like(xmlCint)
      d  str1                           *   value options(*string)               const xmlChar *
      d  str2                           *   value options(*string)               const xmlChar *
 
-     d xmlStrncmp      pr            10i 0 extproc('xmlStrncmp')
+     d xmlStrncmp      pr                  extproc('xmlStrncmp')
+     d                                     like(xmlCint)
      d  str1                           *   value options(*string)               const xmlChar *
      d  str2                           *   value options(*string)               const xmlChar *
-     d  len                          10i 0 value
+     d  len                                value like(xmlCint)
 
-     d xmlStrcasecmp   pr            10i 0 extproc('xmlStrcasecmp')
+     d xmlStrcasecmp   pr                  extproc('xmlStrcasecmp')
+     d                                     like(xmlCint)
      d  str1                           *   value options(*string)               const xmlChar *
      d  str2                           *   value options(*string)               const xmlChar *
 
-     d xmlStrncasecmp  pr            10i 0 extproc('xmlStrncasecmp')
+     d xmlStrncasecmp  pr                  extproc('xmlStrncasecmp')
+     d                                     like(xmlCint)
      d  str1                           *   value options(*string)               const xmlChar *
      d  str2                           *   value options(*string)               const xmlChar *
-     d  len                          10i 0 value
+     d  len                                value like(xmlCint)
 
-     d xmlStrEqual     pr            10i 0 extproc('xmlStrEqual')
+     d xmlStrEqual     pr                  extproc('xmlStrEqual')
+     d                                     like(xmlCint)
      d  str1                           *   value options(*string)               const xmlChar *
      d  str2                           *   value options(*string)               const xmlChar *
 
-     d xmlStrQEqual    pr            10i 0 extproc('xmlStrQEqual')
+     d xmlStrQEqual    pr                  extproc('xmlStrQEqual')
+     d                                     like(xmlCint)
      d  pref                           *   value options(*string)               const xmlChar *
      d  name                           *   value options(*string)               const xmlChar *
      d  stre                           *   value options(*string)               const xmlChar *
 
-     d xmlStrlen       pr            10i 0 extproc('xmlStrlen')
+     d xmlStrlen       pr                  extproc('xmlStrlen')
+     d                                     like(xmlCint)
      d  str                            *   value options(*string)               const xmlChar *
 
      d xmlStrcat       pr              *   extproc('xmlStrcat')                 xmlChar *
@@ -92,21 +99,22 @@
      d xmlStrncat      pr              *   extproc('xmlStrncat')                xmlChar *
      d  cur                            *   value options(*string)               xmlChar *
      d  add                            *   value options(*string)               const xmlChar *
-     d  len                          10i 0 value
+     d  len                                value like(xmlCint)
 
      d xmlStrncatNew   pr              *   extproc('xmlStrncatNew')             xmlChar *
      d  str1                           *   value options(*string)               const xmlChar *
      d  str2                           *   value options(*string)               const xmlChar *
-     d  len                          10i 0 value
+     d  len                                value like(xmlCint)
 
       * xmlStrPrintf() is a vararg function.
       * The following prototype supports up to 8 pointer arguments.
       * Other argument signature can be achieved by defining alternate
       *   prototypes redirected to the same function.
 
-     d xmlStrPrintf    pr            10i 0 extproc('xmlStrPrintf')
+     d xmlStrPrintf    pr                  extproc('xmlStrPrintf')
+     d                                     like(xmlCint)
      d  buf                            *   value options(*string)               xmlChar *
-     d  len                          10i 0 value
+     d  len                                value like(xmlCint)
      d  msg                            *   value options(*string)               const xmlChar *
      d  arg1                           *   value options(*string: *nopass)
      d  arg2                           *   value options(*string: *nopass)
@@ -117,47 +125,55 @@
      d  arg7                           *   value options(*string: *nopass)
      d  arg8                           *   value options(*string: *nopass)
 
-     d xmlStrVPrintf   pr            10i 0 extproc('xmlStrVPrintf')
+     d xmlStrVPrintf   pr                  extproc('xmlStrVPrintf')
+     d                                     like(xmlCint)
      d  buf                            *   value options(*string)               xmlChar *
-     d  len                          10i 0 value
+     d  len                                value like(xmlCint)
      d  msg                            *   value options(*string)               const xmlChar *
      d  ap                                 likeds(xmlVaList)
 
-     d xmlGetUTF8Char  pr            10i 0 extproc('xmlGetUTF8Char')
+     d xmlGetUTF8Char  pr                  extproc('xmlGetUTF8Char')
+     d                                     like(xmlCint)
      d  utf                            *   value options(*string)               const uns. char *
-     d  len                          10i 0
+     d  len                                like(xmlCint)
 
-     d xmlCheckUTF8    pr            10i 0 extproc('xmlCheckUTF8')
+     d xmlCheckUTF8    pr                  extproc('xmlCheckUTF8')
+     d                                     like(xmlCint)
      d  utf                            *   value options(*string)               const uns. char *
 
-     d xmlUTF8Strsize  pr            10i 0 extproc('xmlUTF8Strsize')
+     d xmlUTF8Strsize  pr                  extproc('xmlUTF8Strsize')
+     d                                     like(xmlCint)
      d  utf                            *   value options(*string)               const xmlChar *
-     d  len                          10i 0 value
+     d  len                                value like(xmlCint)
 
      d xmlUTF8Strndup  pr              *   extproc('xmlUTF8Strndup')            xmlChar *
      d  utf                            *   value options(*string)               const xmlChar *
-     d  len                          10i 0 value
+     d  len                                value like(xmlCint)
 
      d xmlUTF8Strpos   pr              *   extproc('xmlUTF8Strpos')             const xmlChar *
      d  utf                            *   value options(*string)               const xmlChar *
-     d  pos                          10i 0 value
+     d  pos                                value like(xmlCint)
 
-     d xmlUTF8Strloc   pr            10i 0 extproc('xmlUTF8Strloc')
+     d xmlUTF8Strloc   pr                  extproc('xmlUTF8Strloc')
+     d                                     like(xmlCint)
      d  utf                            *   value options(*string)               const xmlChar *
      d  utfchar                        *   value options(*string)               const xmlChar *
 
      d xmlUTF8Strsub   pr              *   extproc('xmlUTF8Strsub')             xmlChar *
      d  utf                            *   value options(*string)               const xmlChar *
-     d  start                        10i 0 value
-     d  len                          10i 0 value
+     d  start                              value like(xmlCint)
+     d  len                                value like(xmlCint)
 
-     d xmlUTF8Strlen   pr            10i 0 extproc('xmlUTF8Strlen')
+     d xmlUTF8Strlen   pr                  extproc('xmlUTF8Strlen')
+     d                                     like(xmlCint)
      d  utf                            *   value options(*string)               const xmlChar *
 
-     d xmlUTF8Size     pr            10i 0 extproc('xmlUTF8Size')
+     d xmlUTF8Size     pr                  extproc('xmlUTF8Size')
+     d                                     like(xmlCint)
      d  utf                            *   value options(*string)               const xmlChar *
 
-     d xmlUTF8Charcmp  pr            10i 0 extproc('xmlUTF8Charcmp')
+     d xmlUTF8Charcmp  pr                  extproc('xmlUTF8Charcmp')
+     d                                     like(xmlCint)
      d  utf1                           *   value options(*string)               const xmlChar *
      d  utf2                           *   value options(*string)               const xmlChar *
 
diff --git a/os400/libxmlrpg/xmlunicode.rpgle b/os400/libxmlrpg/xmlunicode.rpgle
index 64f7abf..c4c4ba1 100644
--- a/os400/libxmlrpg/xmlunicode.rpgle
+++ b/os400/libxmlrpg/xmlunicode.rpgle
@@ -12,656 +12,824 @@
 
       /if defined(LIBXML_UNICODE_ENABLED)
 
+      /include "libxmlrpg/xmlTypesC"
+
      d xmlUCSIsAegeanNumbers...
-     d                 pr            10i 0 extproc('xmlUCSIsAegeanNumbers')
-     d  code                         10i 0 value
+     d                 pr                  extproc('xmlUCSIsAegeanNumbers')
+     d                                     like(xmlCint)
+     d  code                               value like(xmlCint)
 
      d xmlUCSIsAlphabeticPresentationForms...
-     d                 pr            10i 0 extproc(
+     d                 pr                  extproc(
      d                                     'xmlUCSIsAlphabeticPresentationForms'
      d                                     )
-     d  code                         10i 0 value
+     d                                     like(xmlCint)
+     d  code                               value like(xmlCint)
 
-     d xmlUCSIsArabic  pr            10i 0 extproc('xmlUCSIsArabic')
-     d  code                         10i 0 value
+     d xmlUCSIsArabic  pr                  extproc('xmlUCSIsArabic')
+     d                                     like(xmlCint)
+     d  code                               value like(xmlCint)
 
      d xmlUCSIsArabicPresentationFormsA...
-     d                 pr            10i 0 extproc(
+     d                 pr                  extproc(
      d                                     'xmlUCSIsArabicPresentationFormsA')
-     d  code                         10i 0 value
+     d                                     like(xmlCint)
+     d  code                               value like(xmlCint)
 
      d xmlUCSIsArabicPresentationFormsB...
-     d                 pr            10i 0 extproc(
+     d                 pr                  extproc(
      d                                     'xmlUCSIsArabicPresentationFormsB')
-     d  code                         10i 0 value
+     d                                     like(xmlCint)
+     d  code                               value like(xmlCint)
 
      d xmlUCSIsArmenian...
-     d                 pr            10i 0 extproc('xmlUCSIsArmenian')
-     d  code                         10i 0 value
+     d                 pr                  extproc('xmlUCSIsArmenian')
+     d                                     like(xmlCint)
+     d  code                               value like(xmlCint)
 
-     d xmlUCSIsArrows  pr            10i 0 extproc('xmlUCSIsArrows')
-     d  code                         10i 0 value
+     d xmlUCSIsArrows  pr                  extproc('xmlUCSIsArrows')
+     d                                     like(xmlCint)
+     d  code                               value like(xmlCint)
 
      d xmlUCSIsBasicLatin...
-     d                 pr            10i 0 extproc('xmlUCSIsBasicLatin')
-     d  code                         10i 0 value
+     d                 pr                  extproc('xmlUCSIsBasicLatin')
+     d                                     like(xmlCint)
+     d  code                               value like(xmlCint)
 
      d xmlUCSIsBengali...
-     d                 pr            10i 0 extproc('xmlUCSIsBengali')
-     d  code                         10i 0 value
+     d                 pr                  extproc('xmlUCSIsBengali')
+     d                                     like(xmlCint)
+     d  code                               value like(xmlCint)
 
      d xmlUCSIsBlockElements...
-     d                 pr            10i 0 extproc('xmlUCSIsBlockElements')
-     d  code                         10i 0 value
+     d                 pr                  extproc('xmlUCSIsBlockElements')
+     d                                     like(xmlCint)
+     d  code                               value like(xmlCint)
 
      d xmlUCSIsBopomofo...
-     d                 pr            10i 0 extproc('xmlUCSIsBopomofo')
-     d  code                         10i 0 value
+     d                 pr                  extproc('xmlUCSIsBopomofo')
+     d                                     like(xmlCint)
+     d  code                               value like(xmlCint)
 
      d xmlUCSIsBopomofoExtended...
-     d                 pr            10i 0 extproc('xmlUCSIsBopomofoExtended')
-     d  code                         10i 0 value
+     d                 pr                  extproc('xmlUCSIsBopomofoExtended')
+     d                                     like(xmlCint)
+     d  code                               value like(xmlCint)
 
      d xmlUCSIsBoxDrawing...
-     d                 pr            10i 0 extproc('xmlUCSIsBoxDrawing')
-     d  code                         10i 0 value
+     d                 pr                  extproc('xmlUCSIsBoxDrawing')
+     d                                     like(xmlCint)
+     d  code                               value like(xmlCint)
 
      d xmlUCSIsBraillePatterns...
-     d                 pr            10i 0 extproc('xmlUCSIsBraillePatterns')
-     d  code                         10i 0 value
+     d                 pr                  extproc('xmlUCSIsBraillePatterns')
+     d                                     like(xmlCint)
+     d  code                               value like(xmlCint)
 
-     d xmlUCSIsBuhid   pr            10i 0 extproc('xmlUCSIsBuhid')
-     d  code                         10i 0 value
+     d xmlUCSIsBuhid   pr                  extproc('xmlUCSIsBuhid')
+     d                                     like(xmlCint)
+     d  code                               value like(xmlCint)
 
      d xmlUCSIsByzantineMusicalSymbols...
-     d                 pr            10i 0 extproc(
+     d                 pr                  extproc(
      d                                     'xmlUCSIsByzantineMusicalSymbols')
-     d  code                         10i 0 value
+     d                                     like(xmlCint)
+     d  code                               value like(xmlCint)
 
      d xmlUCSIsCJKCompatibility...
-     d                 pr            10i 0 extproc('xmlUCSIsCJKCompatibility')
-     d  code                         10i 0 value
+     d                 pr                  extproc('xmlUCSIsCJKCompatibility')
+     d                                     like(xmlCint)
+     d  code                               value like(xmlCint)
 
      d xmlUCSIsCJKCompatibilityForms...
-     d                 pr            10i 0 extproc(
+     d                 pr                  extproc(
      d                                     'xmlUCSIsCJKCompatibilityForms')
-     d  code                         10i 0 value
+     d                                     like(xmlCint)
+     d  code                               value like(xmlCint)
 
      d xmlUCSIsCJKCompatibilityIdeographs...
-     d                 pr            10i 0 extproc(
+     d                 pr                  extproc(
      d                                     'xmlUCSIsCJKCompatibilityIdeographs')
-     d  code                         10i 0 value
+     d                                     like(xmlCint)
+     d  code                               value like(xmlCint)
 
      d xmlUCSIsCJKCompatibilityIdeographsSupplement...
-     d                 pr            10i 0 extproc('xmlUCSIsCJKCompatibilityIde-
+     d                 pr                  extproc('xmlUCSIsCJKCompatibilityIde-
      d                                     ographsSupplement')
-     d  code                         10i 0 value
+     d                                     like(xmlCint)
+     d  code                               value like(xmlCint)
 
      d xmlUCSIsCJKRadicalsSupplement...
-     d                 pr            10i 0 extproc(
+     d                 pr                  extproc(
      d                                     'xmlUCSIsCJKRadicalsSupplement')
-     d  code                         10i 0 value
+     d                                     like(xmlCint)
+     d  code                               value like(xmlCint)
 
      d xmlUCSIsCJKSymbolsandPunctuation...
-     d                 pr            10i 0 extproc(
+     d                 pr                  extproc(
      d                                     'xmlUCSIsCJKSymbolsandPunctuation')
-     d  code                         10i 0 value
+     d                                     like(xmlCint)
+     d  code                               value like(xmlCint)
 
      d xmlUCSIsCJKUnifiedIdeographs...
-     d                 pr            10i 0 extproc(
+     d                 pr                  extproc(
      d                                     'xmlUCSIsCJKUnifiedIdeographs')
-     d  code                         10i 0 value
+     d                                     like(xmlCint)
+     d  code                               value like(xmlCint)
 
      d xmlUCSIsCJKUnifiedIdeographsExtensionA...
-     d                 pr            10i 0 extproc('xmlUCSIsCJKUnifiedIdeograph-
+     d                 pr                  extproc('xmlUCSIsCJKUnifiedIdeograph-
      d                                     sExtensionA')
-     d  code                         10i 0 value
+     d                                     like(xmlCint)
+     d  code                               value like(xmlCint)
 
      d xmlUCSIsCJKUnifiedIdeographsExtensionB...
-     d                 pr            10i 0 extproc('xmlUCSIsCJKUnifiedIdeograph-
+     d                 pr                  extproc('xmlUCSIsCJKUnifiedIdeograph-
      d                                     sExtensionB')
-     d  code                         10i 0 value
+     d                                     like(xmlCint)
+     d  code                               value like(xmlCint)
 
      d xmlUCSIsCherokee...
-     d                 pr            10i 0 extproc('xmlUCSIsCherokee')
-     d  code                         10i 0 value
+     d                 pr                  extproc('xmlUCSIsCherokee')
+     d                                     like(xmlCint)
+     d  code                               value like(xmlCint)
 
      d xmlUCSIsCombiningDiacriticalMarks...
-     d                 pr            10i 0 extproc(
+     d                 pr                  extproc(
      d                                     'xmlUCSIsCombiningDiacriticalMarks')
-     d  code                         10i 0 value
+     d                                     like(xmlCint)
+     d  code                               value like(xmlCint)
 
      d xmlUCSIsCombiningDiacriticalMarksforSymbols...
-     d                 pr            10i 0 extproc('xmlUCSIsCombiningDiacritica-
+     d                 pr                  extproc('xmlUCSIsCombiningDiacritica-
      d                                     lMarksforSymbols')
-     d  code                         10i 0 value
+     d                                     like(xmlCint)
+     d  code                               value like(xmlCint)
 
      d xmlUCSIsCombiningHalfMarks...
-     d                 pr            10i 0 extproc('xmlUCSIsCombiningHalfMarks')
-     d  code                         10i 0 value
+     d                 pr                  extproc('xmlUCSIsCombiningHalfMarks')
+     d                                     like(xmlCint)
+     d  code                               value like(xmlCint)
 
      d xmlUCSIsCombiningMarksforSymbols...
-     d                 pr            10i 0 extproc(
+     d                 pr                  extproc(
      d                                     'xmlUCSIsCombiningMarksforSymbols')
-     d  code                         10i 0 value
+     d                                     like(xmlCint)
+     d  code                               value like(xmlCint)
 
      d xmlUCSIsControlPictures...
-     d                 pr            10i 0 extproc('xmlUCSIsControlPictures')
-     d  code                         10i 0 value
+     d                 pr                  extproc('xmlUCSIsControlPictures')
+     d                                     like(xmlCint)
+     d  code                               value like(xmlCint)
 
      d xmlUCSIsCurrencySymbols...
-     d                 pr            10i 0 extproc('xmlUCSIsCurrencySymbols')
-     d  code                         10i 0 value
+     d                 pr                  extproc('xmlUCSIsCurrencySymbols')
+     d                                     like(xmlCint)
+     d  code                               value like(xmlCint)
 
      d xmlUCSIsCypriotSyllabary...
-     d                 pr            10i 0 extproc('xmlUCSIsCypriotSyllabary')
-     d  code                         10i 0 value
+     d                 pr                  extproc('xmlUCSIsCypriotSyllabary')
+     d                                     like(xmlCint)
+     d  code                               value like(xmlCint)
 
      d xmlUCSIsCyrillic...
-     d                 pr            10i 0 extproc('xmlUCSIsCyrillic')
-     d  code                         10i 0 value
+     d                 pr                  extproc('xmlUCSIsCyrillic')
+     d                                     like(xmlCint)
+     d  code                               value like(xmlCint)
 
      d xmlUCSIsCyrillicSupplement...
-     d                 pr            10i 0 extproc('xmlUCSIsCyrillicSupplement')
-     d  code                         10i 0 value
+     d                 pr                  extproc('xmlUCSIsCyrillicSupplement')
+     d                                     like(xmlCint)
+     d  code                               value like(xmlCint)
 
      d xmlUCSIsDeseret...
-     d                 pr            10i 0 extproc('xmlUCSIsDeseret')
-     d  code                         10i 0 value
+     d                 pr                  extproc('xmlUCSIsDeseret')
+     d                                     like(xmlCint)
+     d  code                               value like(xmlCint)
 
      d xmlUCSIsDevanagari...
-     d                 pr            10i 0 extproc('xmlUCSIsDevanagari')
-     d  code                         10i 0 value
+     d                 pr                  extproc('xmlUCSIsDevanagari')
+     d                                     like(xmlCint)
+     d  code                               value like(xmlCint)
 
      d xmlUCSIsDingbats...
-     d                 pr            10i 0 extproc('xmlUCSIsDingbats')
-     d  code                         10i 0 value
+     d                 pr                  extproc('xmlUCSIsDingbats')
+     d                                     like(xmlCint)
+     d  code                               value like(xmlCint)
 
      d xmlUCSIsEnclosedAlphanumerics...
-     d                 pr            10i 0 extproc(
+     d                 pr                  extproc(
      d                                     'xmlUCSIsEnclosedAlphanumerics')
-     d  code                         10i 0 value
+     d                                     like(xmlCint)
+     d  code                               value like(xmlCint)
 
      d xmlUCSIsEnclosedCJKLettersandMonths...
-     d                 pr            10i 0 extproc(
+     d                 pr                  extproc(
      d                                     'xmlUCSIsEnclosedCJKLettersandMonths'
      d                                     )
-     d  code                         10i 0 value
+     d                                     like(xmlCint)
+     d  code                               value like(xmlCint)
 
      d xmlUCSIsEthiopic...
-     d                 pr            10i 0 extproc('xmlUCSIsEthiopic')
-     d  code                         10i 0 value
+     d                 pr                  extproc('xmlUCSIsEthiopic')
+     d                                     like(xmlCint)
+     d  code                               value like(xmlCint)
 
      d xmlUCSIsGeneralPunctuation...
-     d                 pr            10i 0 extproc('xmlUCSIsGeneralPunctuation')
-     d  code                         10i 0 value
+     d                 pr                  extproc('xmlUCSIsGeneralPunctuation')
+     d                                     like(xmlCint)
+     d  code                               value like(xmlCint)
 
      d xmlUCSIsGeometricShapes...
-     d                 pr            10i 0 extproc('xmlUCSIsGeometricShapes')
-     d  code                         10i 0 value
+     d                 pr                  extproc('xmlUCSIsGeometricShapes')
+     d                                     like(xmlCint)
+     d  code                               value like(xmlCint)
 
      d xmlUCSIsGeorgian...
-     d                 pr            10i 0 extproc('xmlUCSIsGeorgian')
-     d  code                         10i 0 value
+     d                 pr                  extproc('xmlUCSIsGeorgian')
+     d                                     like(xmlCint)
+     d  code                               value like(xmlCint)
 
-     d xmlUCSIsGothic  pr            10i 0 extproc('xmlUCSIsGothic')
-     d  code                         10i 0 value
+     d xmlUCSIsGothic  pr                  extproc('xmlUCSIsGothic')
+     d                                     like(xmlCint)
+     d  code                               value like(xmlCint)
 
-     d xmlUCSIsGreek   pr            10i 0 extproc('xmlUCSIsGreek')
-     d  code                         10i 0 value
+     d xmlUCSIsGreek   pr                  extproc('xmlUCSIsGreek')
+     d                                     like(xmlCint)
+     d  code                               value like(xmlCint)
 
      d xmlUCSIsGreekExtended...
-     d                 pr            10i 0 extproc('xmlUCSIsGreekExtended')
-     d  code                         10i 0 value
+     d                 pr                  extproc('xmlUCSIsGreekExtended')
+     d                                     like(xmlCint)
+     d  code                               value like(xmlCint)
 
      d xmlUCSIsGreekandCoptic...
-     d                 pr            10i 0 extproc('xmlUCSIsGreekandCoptic')
-     d  code                         10i 0 value
+     d                 pr                  extproc('xmlUCSIsGreekandCoptic')
+     d                                     like(xmlCint)
+     d  code                               value like(xmlCint)
 
      d xmlUCSIsGujarati...
-     d                 pr            10i 0 extproc('xmlUCSIsGujarati')
-     d  code                         10i 0 value
+     d                 pr                  extproc('xmlUCSIsGujarati')
+     d                                     like(xmlCint)
+     d  code                               value like(xmlCint)
 
      d xmlUCSIsGurmukhi...
-     d                 pr            10i 0 extproc('xmlUCSIsGurmukhi')
-     d  code                         10i 0 value
+     d                 pr                  extproc('xmlUCSIsGurmukhi')
+     d                                     like(xmlCint)
+     d  code                               value like(xmlCint)
 
      d xmlUCSIsHalfwidthandFullwidthForms...
-     d                 pr            10i 0 extproc(
+     d                 pr                  extproc(
      d                                     'xmlUCSIsHalfwidthandFullwidthForms')
-     d  code                         10i 0 value
+     d                                     like(xmlCint)
+     d  code                               value like(xmlCint)
 
      d xmlUCSIsHangulCompatibilityJamo...
-     d                 pr            10i 0 extproc(
+     d                 pr                  extproc(
      d                                     'xmlUCSIsHangulCompatibilityJamo')
-     d  code                         10i 0 value
+     d                                     like(xmlCint)
+     d  code                               value like(xmlCint)
 
      d xmlUCSIsHangulJamo...
-     d                 pr            10i 0 extproc('xmlUCSIsHangulJamo')
-     d  code                         10i 0 value
+     d                 pr                  extproc('xmlUCSIsHangulJamo')
+     d                                     like(xmlCint)
+     d  code                               value like(xmlCint)
 
      d xmlUCSIsHangulSyllables...
-     d                 pr            10i 0 extproc('xmlUCSIsHangulSyllables')
-     d  code                         10i 0 value
+     d                 pr                  extproc('xmlUCSIsHangulSyllables')
+     d                                     like(xmlCint)
+     d  code                               value like(xmlCint)
 
      d xmlUCSIsHanunoo...
-     d                 pr            10i 0 extproc('xmlUCSIsHanunoo')
-     d  code                         10i 0 value
+     d                 pr                  extproc('xmlUCSIsHanunoo')
+     d                                     like(xmlCint)
+     d  code                               value like(xmlCint)
 
-     d xmlUCSIsHebrew  pr            10i 0 extproc('xmlUCSIsHebrew')
-     d  code                         10i 0 value
+     d xmlUCSIsHebrew  pr                  extproc('xmlUCSIsHebrew')
+     d                                     like(xmlCint)
+     d  code                               value like(xmlCint)
 
      d xmlUCSIsHighPrivateUseSurrogates...
-     d                 pr            10i 0 extproc(
+     d                 pr                  extproc(
      d                                     'xmlUCSIsHighPrivateUseSurrogates')
-     d  code                         10i 0 value
+     d                                     like(xmlCint)
+     d  code                               value like(xmlCint)
 
      d xmlUCSIsHighSurrogates...
-     d                 pr            10i 0 extproc('xmlUCSIsHighSurrogates')
-     d  code                         10i 0 value
+     d                 pr                  extproc('xmlUCSIsHighSurrogates')
+     d                                     like(xmlCint)
+     d  code                               value like(xmlCint)
 
      d xmlUCSIsHiragana...
-     d                 pr            10i 0 extproc('xmlUCSIsHiragana')
-     d  code                         10i 0 value
+     d                 pr                  extproc('xmlUCSIsHiragana')
+     d                                     like(xmlCint)
+     d  code                               value like(xmlCint)
 
      d xmlUCSIsIPAExtensions...
-     d                 pr            10i 0 extproc('xmlUCSIsIPAExtensions')
-     d  code                         10i 0 value
+     d                 pr                  extproc('xmlUCSIsIPAExtensions')
+     d                                     like(xmlCint)
+     d  code                               value like(xmlCint)
 
      d xmlUCSIsIdeographicDescriptionCharacters...
-     d                 pr            10i 0 extproc('xmlUCSIsIdeographicDescript-
+     d                 pr                  extproc('xmlUCSIsIdeographicDescript-
      d                                     ionCharacters')
-     d  code                         10i 0 value
+     d                                     like(xmlCint)
+     d  code                               value like(xmlCint)
 
-     d xmlUCSIsKanbun  pr            10i 0 extproc('xmlUCSIsKanbun')
-     d  code                         10i 0 value
+     d xmlUCSIsKanbun  pr                  extproc('xmlUCSIsKanbun')
+     d                                     like(xmlCint)
+     d  code                               value like(xmlCint)
 
      d xmlUCSIsKangxiRadicals...
-     d                 pr            10i 0 extproc('xmlUCSIsKangxiRadicals')
-     d  code                         10i 0 value
+     d                 pr                  extproc('xmlUCSIsKangxiRadicals')
+     d                                     like(xmlCint)
+     d  code                               value like(xmlCint)
 
      d xmlUCSIsKannada...
-     d                 pr            10i 0 extproc('xmlUCSIsKannada')
-     d  code                         10i 0 value
+     d                 pr                  extproc('xmlUCSIsKannada')
+     d                                     like(xmlCint)
+     d  code                               value like(xmlCint)
 
      d xmlUCSIsKatakana...
-     d                 pr            10i 0 extproc('xmlUCSIsKatakana')
-     d  code                         10i 0 value
+     d                 pr                  extproc('xmlUCSIsKatakana')
+     d                                     like(xmlCint)
+     d  code                               value like(xmlCint)
 
      d xmlUCSIsKatakanaPhoneticExtensions...
-     d                 pr            10i 0 extproc(
+     d                 pr                  extproc(
      d                                     'xmlUCSIsKatakanaPhoneticExtensions')
-     d  code                         10i 0 value
+     d                                     like(xmlCint)
+     d  code                               value like(xmlCint)
 
-     d xmlUCSIsKhmer   pr            10i 0 extproc('xmlUCSIsKhmer')
-     d  code                         10i 0 value
+     d xmlUCSIsKhmer   pr                  extproc('xmlUCSIsKhmer')
+     d                                     like(xmlCint)
+     d  code                               value like(xmlCint)
 
      d xmlUCSIsKhmerSymbols...
-     d                 pr            10i 0 extproc('xmlUCSIsKhmerSymbols')
-     d  code                         10i 0 value
+     d                 pr                  extproc('xmlUCSIsKhmerSymbols')
+     d                                     like(xmlCint)
+     d  code                               value like(xmlCint)
 
-     d xmlUCSIsLao     pr            10i 0 extproc('xmlUCSIsLao')
-     d  code                         10i 0 value
+     d xmlUCSIsLao     pr                  extproc('xmlUCSIsLao')
+     d                                     like(xmlCint)
+     d  code                               value like(xmlCint)
 
      d xmlUCSIsLatin1Supplement...
-     d                 pr            10i 0 extproc('xmlUCSIsLatin1Supplement')
-     d  code                         10i 0 value
+     d                 pr                  extproc('xmlUCSIsLatin1Supplement')
+     d                                     like(xmlCint)
+     d  code                               value like(xmlCint)
 
      d xmlUCSIsLatinExtendedA...
-     d                 pr            10i 0 extproc('xmlUCSIsLatinExtendedA')
-     d  code                         10i 0 value
+     d                 pr                  extproc('xmlUCSIsLatinExtendedA')
+     d                                     like(xmlCint)
+     d  code                               value like(xmlCint)
 
      d xmlUCSIsLatinExtendedB...
-     d                 pr            10i 0 extproc('xmlUCSIsLatinExtendedB')
-     d  code                         10i 0 value
+     d                 pr                  extproc('xmlUCSIsLatinExtendedB')
+     d                                     like(xmlCint)
+     d  code                               value like(xmlCint)
 
      d xmlUCSIsLatinExtendedAdditional...
-     d                 pr            10i 0 extproc(
+     d                 pr                  extproc(
      d                                     'xmlUCSIsLatinExtendedAdditional')
-     d  code                         10i 0 value
+     d                                     like(xmlCint)
+     d  code                               value like(xmlCint)
 
      d xmlUCSIsLetterlikeSymbols...
-     d                 pr            10i 0 extproc('xmlUCSIsLetterlikeSymbols')
-     d  code                         10i 0 value
+     d                 pr                  extproc('xmlUCSIsLetterlikeSymbols')
+     d                                     like(xmlCint)
+     d  code                               value like(xmlCint)
 
-     d xmlUCSIsLimbu   pr            10i 0 extproc('xmlUCSIsLimbu')
-     d  code                         10i 0 value
+     d xmlUCSIsLimbu   pr                  extproc('xmlUCSIsLimbu')
+     d                                     like(xmlCint)
+     d  code                               value like(xmlCint)
 
      d xmlUCSIsLinearBIdeograms...
-     d                 pr            10i 0 extproc('xmlUCSIsLinearBIdeograms')
-     d  code                         10i 0 value
+     d                 pr                  extproc('xmlUCSIsLinearBIdeograms')
+     d                                     like(xmlCint)
+     d  code                               value like(xmlCint)
 
      d xmlUCSIsLinearBSyllabary...
-     d                 pr            10i 0 extproc('xmlUCSIsLinearBSyllabary')
-     d  code                         10i 0 value
+     d                 pr                  extproc('xmlUCSIsLinearBSyllabary')
+     d                                     like(xmlCint)
+     d  code                               value like(xmlCint)
 
      d xmlUCSIsLowSurrogates...
-     d                 pr            10i 0 extproc('xmlUCSIsLowSurrogates')
-     d  code                         10i 0 value
+     d                 pr                  extproc('xmlUCSIsLowSurrogates')
+     d                                     like(xmlCint)
+     d  code                               value like(xmlCint)
 
      d xmlUCSIsMalayalam...
-     d                 pr            10i 0 extproc('xmlUCSIsMalayalam')
-     d  code                         10i 0 value
+     d                 pr                  extproc('xmlUCSIsMalayalam')
+     d                                     like(xmlCint)
+     d  code                               value like(xmlCint)
 
      d xmlUCSIsMathematicalAlphanumericSymbols...
-     d                 pr            10i 0 extproc('xmlUCSIsMathematicalAlphanu-
+     d                 pr                  extproc('xmlUCSIsMathematicalAlphanu-
      d                                     mericSymbols')
-     d  code                         10i 0 value
+     d                                     like(xmlCint)
+     d  code                               value like(xmlCint)
 
      d xmlUCSIsMathematicalOperators...
-     d                 pr            10i 0 extproc(
+     d                 pr                  extproc(
      d                                     'xmlUCSIsMathematicalOperators')
-     d  code                         10i 0 value
+     d                                     like(xmlCint)
+     d  code                               value like(xmlCint)
 
      d xmlUCSIsMiscellaneousMathematicalSymbolsA...
-     d                 pr            10i 0 extproc('xmlUCSIsMiscellaneousMathem-
+     d                 pr                  extproc('xmlUCSIsMiscellaneousMathem-
      d                                     aticalSymbolsA')
-     d  code                         10i 0 value
+     d                                     like(xmlCint)
+     d  code                               value like(xmlCint)
 
      d xmlUCSIsMiscellaneousMathematicalSymbolsB...
-     d                 pr            10i 0 extproc('xmlUCSIsMiscellaneousMathem-
+     d                 pr                  extproc('xmlUCSIsMiscellaneousMathem-
      d                                     aticalSymbolsB')
-     d  code                         10i 0 value
+     d                                     like(xmlCint)
+     d  code                               value like(xmlCint)
 
      d xmlUCSIsMiscellaneousSymbols...
-     d                 pr            10i 0 extproc(
+     d                 pr                  extproc(
      d                                     'xmlUCSIsMiscellaneousSymbols')
-     d  code                         10i 0 value
+     d                                     like(xmlCint)
+     d  code                               value like(xmlCint)
 
      d xmlUCSIsMiscellaneousSymbolsandArrows...
-     d                 pr            10i 0 extproc('xmlUCSIsMiscellaneousSymbol-
+     d                 pr                  extproc('xmlUCSIsMiscellaneousSymbol-
      d                                     sandArrows')
-     d  code                         10i 0 value
+     d                                     like(xmlCint)
+     d  code                               value like(xmlCint)
 
      d xmlUCSIsMiscellaneousTechnical...
-     d                 pr            10i 0 extproc(
+     d                 pr                  extproc(
      d                                     'xmlUCSIsMiscellaneousTechnical')
-     d  code                         10i 0 value
+     d                                     like(xmlCint)
+     d  code                               value like(xmlCint)
 
      d xmlUCSIsMongolian...
-     d                 pr            10i 0 extproc('xmlUCSIsMongolian')
-     d  code                         10i 0 value
+     d                 pr                  extproc('xmlUCSIsMongolian')
+     d                                     like(xmlCint)
+     d  code                               value like(xmlCint)
 
      d xmlUCSIsMusicalSymbols...
-     d                 pr            10i 0 extproc('xmlUCSIsMusicalSymbols')
-     d  code                         10i 0 value
+     d                 pr                  extproc('xmlUCSIsMusicalSymbols')
+     d                                     like(xmlCint)
+     d  code                               value like(xmlCint)
 
      d xmlUCSIsMyanmar...
-     d                 pr            10i 0 extproc('xmlUCSIsMyanmar')
-     d  code                         10i 0 value
+     d                 pr                  extproc('xmlUCSIsMyanmar')
+     d                                     like(xmlCint)
+     d  code                               value like(xmlCint)
 
      d xmlUCSIsNumberForms...
-     d                 pr            10i 0 extproc('xmlUCSIsNumberForms')
-     d  code                         10i 0 value
+     d                 pr                  extproc('xmlUCSIsNumberForms')
+     d                                     like(xmlCint)
+     d  code                               value like(xmlCint)
 
-     d xmlUCSIsOgham   pr            10i 0 extproc('xmlUCSIsOgham')
-     d  code                         10i 0 value
+     d xmlUCSIsOgham   pr                  extproc('xmlUCSIsOgham')
+     d                                     like(xmlCint)
+     d  code                               value like(xmlCint)
 
      d xmlUCSIsOldItalic...
-     d                 pr            10i 0 extproc('xmlUCSIsOldItalic')
-     d  code                         10i 0 value
+     d                 pr                  extproc('xmlUCSIsOldItalic')
+     d                                     like(xmlCint)
+     d  code                               value like(xmlCint)
 
      d xmlUCSIsOpticalCharacterRecognition...
-     d                 pr            10i 0 extproc(
+     d                 pr                  extproc(
      d                                     'xmlUCSIsOpticalCharacterRecognition'
      d                                     )
-     d  code                         10i 0 value
+     d                                     like(xmlCint)
+     d  code                               value like(xmlCint)
 
-     d xmlUCSIsOriya   pr            10i 0 extproc('xmlUCSIsOriya')
-     d  code                         10i 0 value
+     d xmlUCSIsOriya   pr                  extproc('xmlUCSIsOriya')
+     d                                     like(xmlCint)
+     d  code                               value like(xmlCint)
 
      d xmlUCSIsOsmanya...
-     d                 pr            10i 0 extproc('xmlUCSIsOsmanya')
-     d  code                         10i 0 value
+     d                 pr                  extproc('xmlUCSIsOsmanya')
+     d                                     like(xmlCint)
+     d  code                               value like(xmlCint)
 
      d xmlUCSIsPhoneticExtensions...
-     d                 pr            10i 0 extproc('xmlUCSIsPhoneticExtensions')
-     d  code                         10i 0 value
+     d                 pr                  extproc('xmlUCSIsPhoneticExtensions')
+     d                                     like(xmlCint)
+     d  code                               value like(xmlCint)
 
      d xmlUCSIsPrivateUse...
-     d                 pr            10i 0 extproc('xmlUCSIsPrivateUse')
-     d  code                         10i 0 value
+     d                 pr                  extproc('xmlUCSIsPrivateUse')
+     d                                     like(xmlCint)
+     d  code                               value like(xmlCint)
 
      d xmlUCSIsPrivateUseArea...
-     d                 pr            10i 0 extproc('xmlUCSIsPrivateUseArea')
-     d  code                         10i 0 value
+     d                 pr                  extproc('xmlUCSIsPrivateUseArea')
+     d                                     like(xmlCint)
+     d  code                               value like(xmlCint)
 
-     d xmlUCSIsRunic   pr            10i 0 extproc('xmlUCSIsRunic')
-     d  code                         10i 0 value
+     d xmlUCSIsRunic   pr                  extproc('xmlUCSIsRunic')
+     d                                     like(xmlCint)
+     d  code                               value like(xmlCint)
 
      d xmlUCSIsShavian...
-     d                 pr            10i 0 extproc('xmlUCSIsShavian')
-     d  code                         10i 0 value
+     d                 pr                  extproc('xmlUCSIsShavian')
+     d                                     like(xmlCint)
+     d  code                               value like(xmlCint)
 
      d xmlUCSIsSinhala...
-     d                 pr            10i 0 extproc('xmlUCSIsSinhala')
-     d  code                         10i 0 value
+     d                 pr                  extproc('xmlUCSIsSinhala')
+     d                                     like(xmlCint)
+     d  code                               value like(xmlCint)
 
      d xmlUCSIsSmallFormVariants...
-     d                 pr            10i 0 extproc('xmlUCSIsSmallFormVariants')
-     d  code                         10i 0 value
+     d                 pr                  extproc('xmlUCSIsSmallFormVariants')
+     d                                     like(xmlCint)
+     d  code                               value like(xmlCint)
 
      d xmlUCSIsSpacingModifierLetters...
-     d                 pr            10i 0 extproc(
+     d                 pr                  extproc(
      d                                     'xmlUCSIsSpacingModifierLetters')
-     d  code                         10i 0 value
+     d                                     like(xmlCint)
+     d  code                               value like(xmlCint)
 
      d xmlUCSIsSpecials...
-     d                 pr            10i 0 extproc('xmlUCSIsSpecials')
-     d  code                         10i 0 value
+     d                 pr                  extproc('xmlUCSIsSpecials')
+     d                                     like(xmlCint)
+     d  code                               value like(xmlCint)
 
      d xmlUCSIsSuperscriptsandSubscripts...
-     d                 pr            10i 0 extproc(
+     d                 pr                  extproc(
      d                                     'xmlUCSIsSuperscriptsandSubscripts')
-     d  code                         10i 0 value
+     d                                     like(xmlCint)
+     d  code                               value like(xmlCint)
 
      d xmlUCSIsSupplementalArrowsA...
-     d                 pr            10i 0 extproc(
+     d                 pr                  extproc(
      d                                     'xmlUCSIsSupplementalArrowsA')
-     d  code                         10i 0 value
+     d                                     like(xmlCint)
+     d  code                               value like(xmlCint)
 
      d xmlUCSIsSupplementalArrowsB...
-     d                 pr            10i 0 extproc(
+     d                 pr                  extproc(
      d                                     'xmlUCSIsSupplementalArrowsB')
-     d  code                         10i 0 value
+     d                                     like(xmlCint)
+     d  code                               value like(xmlCint)
 
      d xmlUCSIsSupplementalMathematicalOperators...
-     d                 pr            10i 0 extproc('xmlUCSIsSupplementalMathema-
+     d                 pr                  extproc('xmlUCSIsSupplementalMathema-
      d                                     ticalOperators')
-     d  code                         10i 0 value
+     d                                     like(xmlCint)
+     d  code                               value like(xmlCint)
 
      d xmlUCSIsSupplementaryPrivateUseAreaA...
-     d                 pr            10i 0 extproc('xmlUCSIsSupplementaryPrivat-
+     d                 pr                  extproc('xmlUCSIsSupplementaryPrivat-
      d                                     eUseAreaA')
-     d  code                         10i 0 value
+     d                                     like(xmlCint)
+     d  code                               value like(xmlCint)
 
      d xmlUCSIsSupplementaryPrivateUseAreaB...
-     d                 pr            10i 0 extproc('xmlUCSIsSupplementaryPrivat-
+     d                 pr                  extproc('xmlUCSIsSupplementaryPrivat-
      d                                     eUseAreaB')
-     d  code                         10i 0 value
+     d                                     like(xmlCint)
+     d  code                               value like(xmlCint)
 
-     d xmlUCSIsSyriac  pr            10i 0 extproc('xmlUCSIsSyriac')
-     d  code                         10i 0 value
+     d xmlUCSIsSyriac  pr                  extproc('xmlUCSIsSyriac')
+     d                                     like(xmlCint)
+     d  code                               value like(xmlCint)
 
      d xmlUCSIsTagalog...
-     d                 pr            10i 0 extproc('xmlUCSIsTagalog')
-     d  code                         10i 0 value
+     d                 pr                  extproc('xmlUCSIsTagalog')
+     d                                     like(xmlCint)
+     d  code                               value like(xmlCint)
 
      d xmlUCSIsTagbanwa...
-     d                 pr            10i 0 extproc('xmlUCSIsTagbanwa')
-     d  code                         10i 0 value
+     d                 pr                  extproc('xmlUCSIsTagbanwa')
+     d                                     like(xmlCint)
+     d  code                               value like(xmlCint)
 
-     d xmlUCSIsTags    pr            10i 0 extproc('xmlUCSIsTags')
-     d  code                         10i 0 value
+     d xmlUCSIsTags    pr                  extproc('xmlUCSIsTags')
+     d                                     like(xmlCint)
+     d  code                               value like(xmlCint)
 
-     d xmlUCSIsTaiLe   pr            10i 0 extproc('xmlUCSIsTaiLe')
-     d  code                         10i 0 value
+     d xmlUCSIsTaiLe   pr                  extproc('xmlUCSIsTaiLe')
+     d                                     like(xmlCint)
+     d  code                               value like(xmlCint)
 
      d xmlUCSIsTaiXuanJingSymbols...
-     d                 pr            10i 0 extproc('xmlUCSIsTaiXuanJingSymbols')
-     d  code                         10i 0 value
+     d                 pr                  extproc('xmlUCSIsTaiXuanJingSymbols')
+     d                                     like(xmlCint)
+     d  code                               value like(xmlCint)
 
-     d xmlUCSIsTamil   pr            10i 0 extproc('xmlUCSIsTamil')
-     d  code                         10i 0 value
+     d xmlUCSIsTamil   pr                  extproc('xmlUCSIsTamil')
+     d                                     like(xmlCint)
+     d  code                               value like(xmlCint)
 
-     d xmlUCSIsTelugu  pr            10i 0 extproc('xmlUCSIsTelugu')
-     d  code                         10i 0 value
+     d xmlUCSIsTelugu  pr                  extproc('xmlUCSIsTelugu')
+     d                                     like(xmlCint)
+     d  code                               value like(xmlCint)
 
-     d xmlUCSIsThaana  pr            10i 0 extproc('xmlUCSIsThaana')
-     d  code                         10i 0 value
+     d xmlUCSIsThaana  pr                  extproc('xmlUCSIsThaana')
+     d                                     like(xmlCint)
+     d  code                               value like(xmlCint)
 
-     d xmlUCSIsThai    pr            10i 0 extproc('xmlUCSIsThai')
-     d  code                         10i 0 value
+     d xmlUCSIsThai    pr                  extproc('xmlUCSIsThai')
+     d                                     like(xmlCint)
+     d  code                               value like(xmlCint)
 
      d xmlUCSIsTibetan...
-     d                 pr            10i 0 extproc('xmlUCSIsTibetan')
-     d  code                         10i 0 value
+     d                 pr                  extproc('xmlUCSIsTibetan')
+     d                                     like(xmlCint)
+     d  code                               value like(xmlCint)
 
      d xmlUCSIsUgaritic...
-     d                 pr            10i 0 extproc('xmlUCSIsUgaritic')
-     d  code                         10i 0 value
+     d                 pr                  extproc('xmlUCSIsUgaritic')
+     d                                     like(xmlCint)
+     d  code                               value like(xmlCint)
 
      d xmlUCSIsUnifiedCanadianAboriginalSyllabics...
-     d                 pr            10i 0 extproc('xmlUCSIsUnifiedCanadianAbor-
+     d                 pr                  extproc('xmlUCSIsUnifiedCanadianAbor-
      d                                     iginalSyllabics')
-     d  code                         10i 0 value
+     d                                     like(xmlCint)
+     d  code                               value like(xmlCint)
 
      d xmlUCSIsVariationSelectors...
-     d                 pr            10i 0 extproc('xmlUCSIsVariationSelectors')
-     d  code                         10i 0 value
+     d                 pr                  extproc('xmlUCSIsVariationSelectors')
+     d                                     like(xmlCint)
+     d  code                               value like(xmlCint)
 
      d xmlUCSIsVariationSelectorsSupplement...
-     d                 pr            10i 0 extproc('xmlUCSIsVariationSelectorsS-
+     d                 pr                  extproc('xmlUCSIsVariationSelectorsS-
      d                                     upplement')
-     d  code                         10i 0 value
+     d                                     like(xmlCint)
+     d  code                               value like(xmlCint)
 
      d xmlUCSIsYiRadicals...
-     d                 pr            10i 0 extproc('xmlUCSIsYiRadicals')
-     d  code                         10i 0 value
+     d                 pr                  extproc('xmlUCSIsYiRadicals')
+     d                                     like(xmlCint)
+     d  code                               value like(xmlCint)
 
      d xmlUCSIsYiSyllables...
-     d                 pr            10i 0 extproc('xmlUCSIsYiSyllables')
-     d  code                         10i 0 value
+     d                 pr                  extproc('xmlUCSIsYiSyllables')
+     d                                     like(xmlCint)
+     d  code                               value like(xmlCint)
 
      d xmlUCSIsYijingHexagramSymbols...
-     d                 pr            10i 0 extproc(
+     d                 pr                  extproc(
      d                                     'xmlUCSIsYijingHexagramSymbols')
-     d  code                         10i 0 value
+     d                                     like(xmlCint)
+     d  code                               value like(xmlCint)
 
-     d xmlUCSIsBlock   pr            10i 0 extproc('xmlUCSIsBlock')
-     d  code                         10i 0 value
+     d xmlUCSIsBlock   pr                  extproc('xmlUCSIsBlock')
+     d                                     like(xmlCint)
+     d  code                               value like(xmlCint)
      d  block                          *   value options(*string)               const char *
 
-     d xmlUCSIsCatC    pr            10i 0 extproc('xmlUCSIsCatC')
-     d  code                         10i 0 value
+     d xmlUCSIsCatC    pr                  extproc('xmlUCSIsCatC')
+     d                                     like(xmlCint)
+     d  code                               value like(xmlCint)
 
-     d xmlUCSIsCatCc   pr            10i 0 extproc('xmlUCSIsCatCc')
-     d  code                         10i 0 value
+     d xmlUCSIsCatCc   pr                  extproc('xmlUCSIsCatCc')
+     d                                     like(xmlCint)
+     d  code                               value like(xmlCint)
 
-     d xmlUCSIsCatCf   pr            10i 0 extproc('xmlUCSIsCatCf')
-     d  code                         10i 0 value
+     d xmlUCSIsCatCf   pr                  extproc('xmlUCSIsCatCf')
+     d                                     like(xmlCint)
+     d  code                               value like(xmlCint)
 
-     d xmlUCSIsCatCo   pr            10i 0 extproc('xmlUCSIsCatCo')
-     d  code                         10i 0 value
+     d xmlUCSIsCatCo   pr                  extproc('xmlUCSIsCatCo')
+     d                                     like(xmlCint)
+     d  code                               value like(xmlCint)
 
-     d xmlUCSIsCatCs   pr            10i 0 extproc('xmlUCSIsCatCs')
-     d  code                         10i 0 value
+     d xmlUCSIsCatCs   pr                  extproc('xmlUCSIsCatCs')
+     d                                     like(xmlCint)
+     d  code                               value like(xmlCint)
 
-     d xmlUCSIsCatL    pr            10i 0 extproc('xmlUCSIsCatL')
-     d  code                         10i 0 value
+     d xmlUCSIsCatL    pr                  extproc('xmlUCSIsCatL')
+     d                                     like(xmlCint)
+     d  code                               value like(xmlCint)
 
-     d xmlUCSIsCatLl   pr            10i 0 extproc('xmlUCSIsCatLl')
-     d  code                         10i 0 value
+     d xmlUCSIsCatLl   pr                  extproc('xmlUCSIsCatLl')
+     d                                     like(xmlCint)
+     d  code                               value like(xmlCint)
 
-     d xmlUCSIsCatLm   pr            10i 0 extproc('xmlUCSIsCatLm')
-     d  code                         10i 0 value
+     d xmlUCSIsCatLm   pr                  extproc('xmlUCSIsCatLm')
+     d                                     like(xmlCint)
+     d  code                               value like(xmlCint)
 
-     d xmlUCSIsCatLo   pr            10i 0 extproc('xmlUCSIsCatLo')
-     d  code                         10i 0 value
+     d xmlUCSIsCatLo   pr                  extproc('xmlUCSIsCatLo')
+     d                                     like(xmlCint)
+     d  code                               value like(xmlCint)
 
-     d xmlUCSIsCatLt   pr            10i 0 extproc('xmlUCSIsCatLt')
-     d  code                         10i 0 value
+     d xmlUCSIsCatLt   pr                  extproc('xmlUCSIsCatLt')
+     d                                     like(xmlCint)
+     d  code                               value like(xmlCint)
 
-     d xmlUCSIsCatLu   pr            10i 0 extproc('xmlUCSIsCatLu')
-     d  code                         10i 0 value
+     d xmlUCSIsCatLu   pr                  extproc('xmlUCSIsCatLu')
+     d                                     like(xmlCint)
+     d  code                               value like(xmlCint)
 
-     d xmlUCSIsCatM    pr            10i 0 extproc('xmlUCSIsCatM')
-     d  code                         10i 0 value
+     d xmlUCSIsCatM    pr                  extproc('xmlUCSIsCatM')
+     d                                     like(xmlCint)
+     d  code                               value like(xmlCint)
 
-     d xmlUCSIsCatMc   pr            10i 0 extproc('xmlUCSIsCatMc')
-     d  code                         10i 0 value
+     d xmlUCSIsCatMc   pr                  extproc('xmlUCSIsCatMc')
+     d                                     like(xmlCint)
+     d  code                               value like(xmlCint)
 
-     d xmlUCSIsCatMe   pr            10i 0 extproc('xmlUCSIsCatMe')
-     d  code                         10i 0 value
+     d xmlUCSIsCatMe   pr                  extproc('xmlUCSIsCatMe')
+     d                                     like(xmlCint)
+     d  code                               value like(xmlCint)
 
-     d xmlUCSIsCatMn   pr            10i 0 extproc('xmlUCSIsCatMn')
-     d  code                         10i 0 value
+     d xmlUCSIsCatMn   pr                  extproc('xmlUCSIsCatMn')
+     d                                     like(xmlCint)
+     d  code                               value like(xmlCint)
 
-     d xmlUCSIsCatN    pr            10i 0 extproc('xmlUCSIsCatN')
-     d  code                         10i 0 value
+     d xmlUCSIsCatN    pr                  extproc('xmlUCSIsCatN')
+     d                                     like(xmlCint)
+     d  code                               value like(xmlCint)
 
-     d xmlUCSIsCatNd   pr            10i 0 extproc('xmlUCSIsCatNd')
-     d  code                         10i 0 value
+     d xmlUCSIsCatNd   pr                  extproc('xmlUCSIsCatNd')
+     d                                     like(xmlCint)
+     d  code                               value like(xmlCint)
 
-     d xmlUCSIsCatNl   pr            10i 0 extproc('xmlUCSIsCatNl')
-     d  code                         10i 0 value
+     d xmlUCSIsCatNl   pr                  extproc('xmlUCSIsCatNl')
+     d                                     like(xmlCint)
+     d  code                               value like(xmlCint)
 
-     d xmlUCSIsCatNo   pr            10i 0 extproc('xmlUCSIsCatNo')
-     d  code                         10i 0 value
+     d xmlUCSIsCatNo   pr                  extproc('xmlUCSIsCatNo')
+     d                                     like(xmlCint)
+     d  code                               value like(xmlCint)
 
-     d xmlUCSIsCatP    pr            10i 0 extproc('xmlUCSIsCatP')
-     d  code                         10i 0 value
+     d xmlUCSIsCatP    pr                  extproc('xmlUCSIsCatP')
+     d                                     like(xmlCint)
+     d  code                               value like(xmlCint)
 
-     d xmlUCSIsCatPc   pr            10i 0 extproc('xmlUCSIsCatPc')
-     d  code                         10i 0 value
+     d xmlUCSIsCatPc   pr                  extproc('xmlUCSIsCatPc')
+     d                                     like(xmlCint)
+     d  code                               value like(xmlCint)
 
-     d xmlUCSIsCatPd   pr            10i 0 extproc('xmlUCSIsCatPd')
-     d  code                         10i 0 value
+     d xmlUCSIsCatPd   pr                  extproc('xmlUCSIsCatPd')
+     d                                     like(xmlCint)
+     d  code                               value like(xmlCint)
 
-     d xmlUCSIsCatPe   pr            10i 0 extproc('xmlUCSIsCatPe')
-     d  code                         10i 0 value
+     d xmlUCSIsCatPe   pr                  extproc('xmlUCSIsCatPe')
+     d                                     like(xmlCint)
+     d  code                               value like(xmlCint)
 
-     d xmlUCSIsCatPf   pr            10i 0 extproc('xmlUCSIsCatPf')
-     d  code                         10i 0 value
+     d xmlUCSIsCatPf   pr                  extproc('xmlUCSIsCatPf')
+     d                                     like(xmlCint)
+     d  code                               value like(xmlCint)
 
-     d xmlUCSIsCatPi   pr            10i 0 extproc('xmlUCSIsCatPi')
-     d  code                         10i 0 value
+     d xmlUCSIsCatPi   pr                  extproc('xmlUCSIsCatPi')
+     d                                     like(xmlCint)
+     d  code                               value like(xmlCint)
 
-     d xmlUCSIsCatPo   pr            10i 0 extproc('xmlUCSIsCatPo')
-     d  code                         10i 0 value
+     d xmlUCSIsCatPo   pr                  extproc('xmlUCSIsCatPo')
+     d                                     like(xmlCint)
+     d  code                               value like(xmlCint)
 
-     d xmlUCSIsCatPs   pr            10i 0 extproc('xmlUCSIsCatPs')
-     d  code                         10i 0 value
+     d xmlUCSIsCatPs   pr                  extproc('xmlUCSIsCatPs')
+     d                                     like(xmlCint)
+     d  code                               value like(xmlCint)
 
-     d xmlUCSIsCatS    pr            10i 0 extproc('xmlUCSIsCatS')
-     d  code                         10i 0 value
+     d xmlUCSIsCatS    pr                  extproc('xmlUCSIsCatS')
+     d                                     like(xmlCint)
+     d  code                               value like(xmlCint)
 
-     d xmlUCSIsCatSc   pr            10i 0 extproc('xmlUCSIsCatSc')
-     d  code                         10i 0 value
+     d xmlUCSIsCatSc   pr                  extproc('xmlUCSIsCatSc')
+     d                                     like(xmlCint)
+     d  code                               value like(xmlCint)
 
-     d xmlUCSIsCatSk   pr            10i 0 extproc('xmlUCSIsCatSk')
-     d  code                         10i 0 value
+     d xmlUCSIsCatSk   pr                  extproc('xmlUCSIsCatSk')
+     d                                     like(xmlCint)
+     d  code                               value like(xmlCint)
 
-     d xmlUCSIsCatSm   pr            10i 0 extproc('xmlUCSIsCatSm')
-     d  code                         10i 0 value
+     d xmlUCSIsCatSm   pr                  extproc('xmlUCSIsCatSm')
+     d                                     like(xmlCint)
+     d  code                               value like(xmlCint)
 
-     d xmlUCSIsCatSo   pr            10i 0 extproc('xmlUCSIsCatSo')
-     d  code                         10i 0 value
+     d xmlUCSIsCatSo   pr                  extproc('xmlUCSIsCatSo')
+     d                                     like(xmlCint)
+     d  code                               value like(xmlCint)
 
-     d xmlUCSIsCatZ    pr            10i 0 extproc('xmlUCSIsCatZ')
-     d  code                         10i 0 value
+     d xmlUCSIsCatZ    pr                  extproc('xmlUCSIsCatZ')
+     d                                     like(xmlCint)
+     d  code                               value like(xmlCint)
 
-     d xmlUCSIsCatZl   pr            10i 0 extproc('xmlUCSIsCatZl')
-     d  code                         10i 0 value
+     d xmlUCSIsCatZl   pr                  extproc('xmlUCSIsCatZl')
+     d                                     like(xmlCint)
+     d  code                               value like(xmlCint)
 
-     d xmlUCSIsCatZp   pr            10i 0 extproc('xmlUCSIsCatZp')
-     d  code                         10i 0 value
+     d xmlUCSIsCatZp   pr                  extproc('xmlUCSIsCatZp')
+     d                                     like(xmlCint)
+     d  code                               value like(xmlCint)
 
-     d xmlUCSIsCatZs   pr            10i 0 extproc('xmlUCSIsCatZs')
-     d  code                         10i 0 value
+     d xmlUCSIsCatZs   pr                  extproc('xmlUCSIsCatZs')
+     d                                     like(xmlCint)
+     d  code                               value like(xmlCint)
 
-     d xmlUCSIsCat     pr            10i 0 extproc('xmlUCSIsCat')
-     d  code                         10i 0 value
+     d xmlUCSIsCat     pr                  extproc('xmlUCSIsCat')
+     d                                     like(xmlCint)
+     d  code                               value like(xmlCint)
      d  cat                            *   value options(*string)               const char *
 
       /endif                                                                    LIBXML_UNICODE_ENBLD
diff --git a/os400/libxmlrpg/xmlversion.rpgle.in b/os400/libxmlrpg/xmlversion.rpgle.in
index 81676be..955599e 100644
--- a/os400/libxmlrpg/xmlversion.rpgle.in
+++ b/os400/libxmlrpg/xmlversion.rpgle.in
@@ -8,6 +8,7 @@
       /if not defined(XML_VERSION_H__)
       /define XML_VERSION_H__
 
+      /include "libxmlrpg/xmlTypesC"
       /include "libxmlrpg/xmlexports"
 
       * use those to be sure nothing nasty will happen if
@@ -16,7 +17,7 @@
 
      d xmlCheckVersion...
      d                 pr                  extproc('xmlCheckVersion')
-     d  version                      10i 0 value
+     d  version                            value like(xmlCint)
 
       * LIBXML_DOTTED_VERSION:
       *
diff --git a/os400/libxmlrpg/xmlwriter.rpgle b/os400/libxmlrpg/xmlwriter.rpgle
index f2d3d30..c8530f8 100644
--- a/os400/libxmlrpg/xmlwriter.rpgle
+++ b/os400/libxmlrpg/xmlwriter.rpgle
@@ -12,6 +12,7 @@
 
       /if defined(LIBXML_WRITER_ENABLED)
 
+      /include "libxmlrpg/xmlTypesC"
       /include "libxmlrpg/xmlstdarg"
       /include "libxmlrpg/xmlIO"
       /include "libxmlrpg/list"
@@ -31,32 +32,32 @@
      d                 pr                  extproc('xmlNewTextWriterFilename')
      d                                     like(xmlTextWriterPtr)
      d  uri                            *   value options(*string)               const char *
-     d  compression                  10i 0 value
+     d  compression                        value like(xmlCint)
 
      d xmlNewTextWriterMemory...
      d                 pr                  extproc('xmlNewTextWriterMemory')
      d                                     like(xmlTextWriterPtr)
      d  buf                                value like(xmlBufferPtr)
-     d  compression                  10i 0 value
+     d  compression                        value like(xmlCint)
 
      d xmlNewTextWriterPushParser...
      d                 pr                  extproc('xmlNewTextWriterPushParser')
      d                                     like(xmlTextWriterPtr)
      d  ctxt                               value like(xmlParserCtxtPtr)
-     d  compression                  10i 0 value
+     d  compression                        value like(xmlCint)
 
      d xmlNewTextWriterDoc...
      d                 pr                  extproc('xmlNewTextWriterDoc')
      d                                     like(xmlTextWriterPtr)
      d  doc                                like(xmlDocPtr)
-     d  compression                  10i 0 value
+     d  compression                        value like(xmlCint)
 
      d xmlNewTextWriterTree...
      d                 pr                  extproc('xmlNewTextWriterTree')
      d                                     like(xmlTextWriterPtr)
      d  doc                                value like(xmlDocPtr)
      d  node                               value like(xmlNodePtr)
-     d  compression                  10i 0 value
+     d  compression                        value like(xmlCint)
 
      d xmlFreeTextWriter...
      d                 pr                  extproc('xmlFreeTextWriter')
@@ -67,29 +68,34 @@
       * Document
 
      d xmlTextWriterStartDocument...
-     d                 pr            10i 0 extproc('xmlTextWriterStartDocument')
+     d                 pr                  extproc('xmlTextWriterStartDocument')
+     d                                     like(xmlCint)
      d  writer                             value like(xmlTextWriterPtr)
      d  version                        *   value options(*string)               const char *
      d  encoding                       *   value options(*string)               const char *
      d  standalone                     *   value options(*string)               const char *
 
      d xmlTextWriterEndDocument...
-     d                 pr            10i 0 extproc('xmlTextWriterEndDocument')
+     d                 pr                  extproc('xmlTextWriterEndDocument')
+     d                                     like(xmlCint)
      d  writer                             value like(xmlTextWriterPtr)
 
       * Comments
 
      d xmlTextWriterStartComment...
-     d                 pr            10i 0 extproc('xmlTextWriterStartComment')
+     d                 pr                  extproc('xmlTextWriterStartComment')
+     d                                     like(xmlCint)
      d  writer                             value like(xmlTextWriterPtr)
 
      d xmlTextWriterEndComment...
-     d                 pr            10i 0 extproc('xmlTextWriterEndComment')
+     d                 pr                  extproc('xmlTextWriterEndComment')
+     d                                     like(xmlCint)
      d  writer                             value like(xmlTextWriterPtr)
 
      d xmlTextWriterWriteFormatComment...
-     d                 pr            10i 0 extproc(
+     d                 pr                  extproc(
      d                                     'xmlTextWriterWriteFormatComment')
+     d                                     like(xmlCint)
      d  writer                             value like(xmlTextWriterPtr)
      d  format                         *   value options(*string: *nopass)      const char *
      d  #vararg1                       *   value options(*string: *nopass)      void *
@@ -102,46 +108,53 @@
      d  #vararg8                       *   value options(*string: *nopass)      void *
 
      d xmlTextWriterWriteVFormatComment...
-     d                 pr            10i 0 extproc(
+     d                 pr                  extproc(
      d                                     'xmlTextWriterWriteVFormatComment')
+     d                                     like(xmlCint)
      d  writer                             value like(xmlTextWriterPtr)
      d  format                         *   value options(*string)               const char *
      d  argptr                             likeds(xmlVaList)
 
      d xmlTextWriterWriteComment...
-     d                 pr            10i 0 extproc('xmlTextWriterWriteComment')
+     d                 pr                  extproc('xmlTextWriterWriteComment')
+     d                                     like(xmlCint)
      d  writer                             value like(xmlTextWriterPtr)
      d  content                        *   value options(*string)               const xmlChar *
 
       * Elements
 
      d xmlTextWriterStartElement...
-     d                 pr            10i 0 extproc('xmlTextWriterStartElement')
+     d                 pr                  extproc('xmlTextWriterStartElement')
+     d                                     like(xmlCint)
      d  writer                             value like(xmlTextWriterPtr)
      d  name                           *   value options(*string)               const xmlChar *
 
      d xmlTextWriterStartElementNS...
-     d                 pr            10i 0 extproc(
+     d                 pr                  extproc(
      d                                     'xmlTextWriterStartElementNS')
+     d                                     like(xmlCint)
      d  writer                             value like(xmlTextWriterPtr)
      d  prefix                         *   value options(*string)               const xmlChar *
      d  name                           *   value options(*string)               const xmlChar *
      d  namespaceURI                   *   value options(*string)               const xmlChar *
 
      d xmlTextWriterEndElement...
-     d                 pr            10i 0 extproc('xmlTextWriterEndElement')
+     d                 pr                  extproc('xmlTextWriterEndElement')
+     d                                     like(xmlCint)
      d  writer                             value like(xmlTextWriterPtr)
 
      d xmlTextWriterFullEndElement...
-     d                 pr            10i 0 extproc(
+     d                 pr                  extproc(
      d                                     'xmlTextWriterFullEndElement')
+     d                                     like(xmlCint)
      d  writer                             value like(xmlTextWriterPtr)
 
       * Elements conveniency functions
 
      d xmlTextWriterWriteFormatElement...
-     d                 pr            10i 0 extproc(
+     d                 pr                  extproc(
      d                                     'xmlTextWriterWriteFormatElement')
+     d                                     like(xmlCint)
      d  writer                             value like(xmlTextWriterPtr)
      d  name                           *   value options(*string)               const xmlChar *
      d  format                         *   value options(*string)               const char *
@@ -155,22 +168,25 @@
      d  #vararg8                       *   value options(*string: *nopass)      void *
 
      d xmlTextWriterWriteVFormatElement...
-     d                 pr            10i 0 extproc(
+     d                 pr                  extproc(
      d                                     'xmlTextWriterWriteVFormatElement')
+     d                                     like(xmlCint)
      d  writer                             value like(xmlTextWriterPtr)
      d  name                           *   value options(*string)               const xmlChar *
      d  format                         *   value options(*string)               const char *
      d  argptr                             likeds(xmlVaList)
 
      d xmlTextWriterWriteElement...
-     d                 pr            10i 0 extproc('xmlTextWriterWriteElement')
+     d                 pr                  extproc('xmlTextWriterWriteElement')
+     d                                     like(xmlCint)
      d  writer                             value like(xmlTextWriterPtr)
      d  name                           *   value options(*string)               const xmlChar *
      d  content                        *   value options(*string)               const xmlChar *
 
      d xmlTextWriterWriteFormatElementNS...
-     d                 pr            10i 0 extproc(
+     d                 pr                  extproc(
      d                                     'xmlTextWriterWriteFormatElementNS')
+     d                                     like(xmlCint)
      d  writer                             value like(xmlTextWriterPtr)
      d  prefix                         *   value options(*string)               const xmlChar *
      d  name                           *   value options(*string)               const xmlChar *
@@ -186,8 +202,9 @@
      d  #vararg8                       *   value options(*string: *nopass)      void *
 
      d xmlTextWriterWriteVFormatElementNS...
-     d                 pr            10i 0 extproc(
+     d                 pr                  extproc(
      d                                     'xmlTextWriterWriteVFormatElementNS')
+     d                                     like(xmlCint)
      d  writer                             value like(xmlTextWriterPtr)
      d  prefix                         *   value options(*string)               const xmlChar *
      d  name                           *   value options(*string)               const xmlChar *
@@ -196,8 +213,9 @@
      d  argptr                             likeds(xmlVaList)
 
      d xmlTextWriterWriteElementNS...
-     d                 pr            10i 0 extproc(
+     d                 pr                  extproc(
      d                                     'xmlTextWriterWriteElementNS')
+     d                                     like(xmlCint)
      d  writer                             value like(xmlTextWriterPtr)
      d  prefix                         *   value options(*string)               const xmlChar *
      d  name                           *   value options(*string)               const xmlChar *
@@ -207,8 +225,9 @@
       * Text
 
      d xmlTextWriterWriteFormatRaw...
-     d                 pr            10i 0 extproc(
+     d                 pr                  extproc(
      d                                     'xmlTextWriterWriteFormatRaw')
+     d                                     like(xmlCint)
      d  writer                             value like(xmlTextWriterPtr)
      d  format                         *   value options(*string)               const char *
      d  #vararg1                       *   value options(*string: *nopass)      void *
@@ -221,26 +240,30 @@
      d  #vararg8                       *   value options(*string: *nopass)      void *
 
      d xmlTextWriterWriteVFormatRaw...
-     d                 pr            10i 0 extproc(
+     d                 pr                  extproc(
      d                                     'xmlTextWriterWriteVFormatRaw')
+     d                                     like(xmlCint)
      d  writer                             value like(xmlTextWriterPtr)
      d  format                         *   value options(*string)               const char *
      d  argptr                             likeds(xmlVaList)
 
      d xmlTextWriterWriteRawLen...
-     d                 pr            10i 0 extproc('xmlTextWriterWriteRawLen')
+     d                 pr                  extproc('xmlTextWriterWriteRawLen')
+     d                                     like(xmlCint)
      d  writer                             value like(xmlTextWriterPtr)
      d  content                        *   value options(*string)               const xmlChar *
-     d  len                          10i 0 value
+     d  len                                value like(xmlCint)
 
      d xmlTextWriterWriteRaw...
-     d                 pr            10i 0 extproc('xmlTextWriterWriteRaw')
+     d                 pr                  extproc('xmlTextWriterWriteRaw')
+     d                                     like(xmlCint)
      d  writer                             value like(xmlTextWriterPtr)
      d  content                        *   value options(*string)               const xmlChar *
 
      d xmlTextWriterWriteFormatString...
-     d                 pr            10i 0 extproc(
+     d                 pr                  extproc(
      d                                     'xmlTextWriterWriteFormatString')
+     d                                     like(xmlCint)
      d  writer                             value like(xmlTextWriterPtr)
      d  format                         *   value options(*string)               const char *
      d  #vararg1                       *   value options(*string: *nopass)      void *
@@ -253,56 +276,64 @@
      d  #vararg8                       *   value options(*string: *nopass)      void *
 
      d xmlTextWriterWriteVFormatString...
-     d                 pr            10i 0 extproc(
+     d                 pr                  extproc(
      d                                     'xmlTextWriterWriteVFormatString')
+     d                                     like(xmlCint)
      d  writer                             value like(xmlTextWriterPtr)
      d  format                         *   value options(*string)               const char *
      d  argptr                             likeds(xmlVaList)
 
      d xmlTextWriterWriteString...
-     d                 pr            10i 0 extproc('xmlTextWriterWriteString')
+     d                 pr                  extproc('xmlTextWriterWriteString')
+     d                                     like(xmlCint)
      d  writer                             value like(xmlTextWriterPtr)
      d  content                        *   value options(*string)               const xmlChar *
 
      d xmlTextWriterWriteBase64...
-     d                 pr            10i 0 extproc('xmlTextWriterWriteBase64')
+     d                 pr                  extproc('xmlTextWriterWriteBase64')
+     d                                     like(xmlCint)
      d  writer                             value like(xmlTextWriterPtr)
      d  data                           *   value options(*string)               const char *
-     d  start                        10i 0 value
-     d  len                          10i 0 value
+     d  start                              value like(xmlCint)
+     d  len                                value like(xmlCint)
 
      d xmlTextWriterWriteBinHex...
-     d                 pr            10i 0 extproc('xmlTextWriterWriteBinHex')
+     d                 pr                  extproc('xmlTextWriterWriteBinHex')
+     d                                     like(xmlCint)
      d  writer                             value like(xmlTextWriterPtr)
      d  data                           *   value options(*string)               const char *
-     d  start                        10i 0 value
-     d  len                          10i 0 value
+     d  start                              value like(xmlCint)
+     d  len                                value like(xmlCint)
 
       * Attributes
 
      d xmlTextWriterStartAttribute...
-     d                 pr            10i 0 extproc(
+     d                 pr                  extproc(
      d                                     'xmlTextWriterStartAttribute')
+     d                                     like(xmlCint)
      d  writer                             value like(xmlTextWriterPtr)
      d  name                           *   value options(*string)               const xmlChar *
 
      d xmlTextWriterStartAttributeNS...
-     d                 pr            10i 0 extproc(
+     d                 pr                  extproc(
      d                                     'xmlTextWriterStartAttributeNS')
+     d                                     like(xmlCint)
      d  writer                             value like(xmlTextWriterPtr)
      d  prefix                         *   value options(*string)               const xmlChar *
      d  name                           *   value options(*string)               const xmlChar *
      d  namespaceURI                   *   value options(*string)               const xmlChar *
 
      d xmlTextWriterEndAttribute...
-     d                 pr            10i 0 extproc('xmlTextWriterEndAttribute')
+     d                 pr                  extproc('xmlTextWriterEndAttribute')
+     d                                     like(xmlCint)
      d  writer                             value like(xmlTextWriterPtr)
 
       * Attributes conveniency functions
 
      d xmlTextWriterWriteFormatAttribute...
-     d                 pr            10i 0 extproc(
+     d                 pr                  extproc(
      d                                     'xmlTextWriterWriteFormatAttribute')
+     d                                     like(xmlCint)
      d  writer                             value like(xmlTextWriterPtr)
      d  name                           *   value options(*string)               const xmlChar *
      d  format                         *   value options(*string)               const char *
@@ -316,24 +347,27 @@
      d  #vararg8                       *   value options(*string: *nopass)      void *
 
      d xmlTextWriterWriteVFormatAttribute...
-     d                 pr            10i 0 extproc(
+     d                 pr                  extproc(
      d                                     'xmlTextWriterWriteVFormatAttribute')
+     d                                     like(xmlCint)
      d  writer                             value like(xmlTextWriterPtr)
      d  name                           *   value options(*string)               const xmlChar *
      d  format                         *   value options(*string)               const char *
      d  argptr                             likeds(xmlVaList)
 
      d xmlTextWriterWriteAttribute...
-     d                 pr            10i 0 extproc(
+     d                 pr                  extproc(
      d                                     'xmlTextWriterWriteAttribute')
+     d                                     like(xmlCint)
      d  writer                             value like(xmlTextWriterPtr)
      d  name                           *   value options(*string)               const xmlChar *
      d  content                        *   value options(*string)               const xmlChar *
 
      d xmlTextWriterWriteFormatAttributeNS...
-     d                 pr            10i 0 extproc(
+     d                 pr                  extproc(
      d                                     'xmlTextWriterWriteFormatAttributeNS'
      d                                     )
+     d                                     like(xmlCint)
      d  writer                             value like(xmlTextWriterPtr)
      d  prefix                         *   value options(*string)               const xmlChar *
      d  name                           *   value options(*string)               const xmlChar *
@@ -349,8 +383,9 @@
      d  #vararg8                       *   value options(*string: *nopass)      void *
 
      d xmlTextWriterWriteVFormatAttributeNS...
-     d                 pr            10i 0 extproc('xmlTextWriterWriteVFormatAt-
+     d                 pr                  extproc('xmlTextWriterWriteVFormatAt-
      d                                     tributeNS')
+     d                                     like(xmlCint)
      d  writer                             value like(xmlTextWriterPtr)
      d  prefix                         *   value options(*string)               const xmlChar *
      d  name                           *   value options(*string)               const xmlChar *
@@ -359,8 +394,9 @@
      d  argptr                             likeds(xmlVaList)
 
      d xmlTextWriterWriteAttributeNS...
-     d                 pr            10i 0 extproc(
+     d                 pr                  extproc(
      d                                     'xmlTextWriterWriteAttributeNS')
+     d                                     like(xmlCint)
      d  writer                             value like(xmlTextWriterPtr)
      d  prefix                         *   value options(*string)               const xmlChar *
      d  name                           *   value options(*string)               const xmlChar *
@@ -370,18 +406,21 @@
       * PI's
 
      d xmlTextWriterStartPI...
-     d                 pr            10i 0 extproc('xmlTextWriterStartPI')
+     d                 pr                  extproc('xmlTextWriterStartPI')
+     d                                     like(xmlCint)
      d  writer                             value like(xmlTextWriterPtr)
      d  target                         *   value options(*string)               const xmlChar *
 
      d xmlTextWriterEndPI...
-     d                 pr            10i 0 extproc('xmlTextWriterEndPI')
+     d                 pr                  extproc('xmlTextWriterEndPI')
+     d                                     like(xmlCint)
      d  writer                             value like(xmlTextWriterPtr)
 
       * PI conveniency functions
 
      d xmlTextWriterWriteFormatPI...
-     d                 pr            10i 0 extproc('xmlTextWriterWriteFormatPI')
+     d                 pr                  extproc('xmlTextWriterWriteFormatPI')
+     d                                     like(xmlCint)
      d  writer                             value like(xmlTextWriterPtr)
      d  target                         *   value options(*string)               const xmlChar *
      d  format                         *   value options(*string)               const char *
@@ -395,15 +434,17 @@
      d  #vararg8                       *   value options(*string: *nopass)      void *
 
      d xmlTextWriterWriteVFormatPI...
-     d                 pr            10i 0 extproc(
+     d                 pr                  extproc(
      d                                     'xmlTextWriterWriteVFormatPI')
+     d                                     like(xmlCint)
      d  writer                             value like(xmlTextWriterPtr)
      d  target                         *   value options(*string)               const xmlChar *
      d  format                         *   value options(*string)               const char *
      d  argptr                             likeds(xmlVaList)
 
      d xmlTextWriterWritePI...
-     d                 pr            10i 0 extproc('xmlTextWriterWritePI')
+     d                 pr                  extproc('xmlTextWriterWritePI')
+     d                                     like(xmlCint)
      d  writer                             value like(xmlTextWriterPtr)
      d  target                         *   value options(*string)               const xmlChar *
      d  content                        *   value options(*string)               const xmlChar *
@@ -413,7 +454,8 @@
       * This macro maps to xmlTextWriterWritePI
 
      d xmlTextWriterWriteProcessingInstruction...
-     d                 pr            10i 0 extproc('xmlTextWriterWritePI')
+     d                 pr                  extproc('xmlTextWriterWritePI')
+     d                                     like(xmlCint)
      d  writer                             value like(xmlTextWriterPtr)
      d  target                         *   value options(*string)               const xmlChar *
      d  content                        *   value options(*string)               const xmlChar *
@@ -421,18 +463,21 @@
       * CDATA
 
      d xmlTextWriterStartCDATA...
-     d                 pr            10i 0 extproc('xmlTextWriterStartCDATA')
+     d                 pr                  extproc('xmlTextWriterStartCDATA')
+     d                                     like(xmlCint)
      d  writer                             value like(xmlTextWriterPtr)
 
      d xmlTextWriterEndCDATA...
-     d                 pr            10i 0 extproc('xmlTextWriterEndCDATA')
+     d                 pr                  extproc('xmlTextWriterEndCDATA')
+     d                                     like(xmlCint)
      d  writer                             value like(xmlTextWriterPtr)
 
       * CDATA conveniency functions
 
      d xmlTextWriterWriteFormatCDATA...
-     d                 pr            10i 0 extproc(
+     d                 pr                  extproc(
      d                                     'xmlTextWriterWriteFormatCDATA')
+     d                                     like(xmlCint)
      d  writer                             value like(xmlTextWriterPtr)
      d  format                         *   value options(*string)               const char *
      d  #vararg1                       *   value options(*string: *nopass)      void *
@@ -445,35 +490,40 @@
      d  #vararg8                       *   value options(*string: *nopass)      void *
 
      d xmlTextWriterWriteVFormatCDATA...
-     d                 pr            10i 0 extproc(
+     d                 pr                  extproc(
      d                                     'xmlTextWriterWriteVFormatCDATA')
+     d                                     like(xmlCint)
      d  writer                             value like(xmlTextWriterPtr)
      d  format                         *   value options(*string)               const char *
      d  argptr                             likeds(xmlVaList)
 
      d xmlTextWriterWriteCDATA...
-     d                 pr            10i 0 extproc('xmlTextWriterWriteCDATA')
+     d                 pr                  extproc('xmlTextWriterWriteCDATA')
+     d                                     like(xmlCint)
      d  writer                             value like(xmlTextWriterPtr)
      d  content                        *   value options(*string)               const xmlChar *
 
       * DTD
 
      d xmlTextWriterStartDTD...
-     d                 pr            10i 0 extproc('xmlTextWriterStartDTD')
+     d                 pr                  extproc('xmlTextWriterStartDTD')
+     d                                     like(xmlCint)
      d  writer                             value like(xmlTextWriterPtr)
      d  name                           *   value options(*string)               const xmlChar *
      d  pubid                          *   value options(*string)               const xmlChar *
      d  sysid                          *   value options(*string)               const xmlChar *
 
      d xmlTextWriterEndDTD...
-     d                 pr            10i 0 extproc('xmlTextWriterEndDTD')
+     d                 pr                  extproc('xmlTextWriterEndDTD')
+     d                                     like(xmlCint)
      d  writer                             value like(xmlTextWriterPtr)
 
       * DTD conveniency functions
 
      d xmlTextWriterWriteFormatDTD...
-     d                 pr            10i 0 extproc(
+     d                 pr                  extproc(
      d                                     'xmlTextWriterWriteFormatDTD')
+     d                                     like(xmlCint)
      d  writer                             value like(xmlTextWriterPtr)
      d  name                           *   value options(*string)               const xmlChar *
      d  pubid                          *   value options(*string)               const xmlChar *
@@ -489,8 +539,9 @@
      d  #vararg8                       *   value options(*string: *nopass)      void *
 
      d xmlTextWriterWriteVFormatDTD...
-     d                 pr            10i 0 extproc(
+     d                 pr                  extproc(
      d                                     'xmlTextWriterWriteVFormatDTD')
+     d                                     like(xmlCint)
      d  writer                             value like(xmlTextWriterPtr)
      d  name                           *   value options(*string)               const xmlChar *
      d  pubid                          *   value options(*string)               const xmlChar *
@@ -499,7 +550,8 @@
      d  argptr                             likeds(xmlVaList)
 
      d xmlTextWriterWriteDTD...
-     d                 pr            10i 0 extproc('xmlTextWriterWriteDTD')
+     d                 pr                  extproc('xmlTextWriterWriteDTD')
+     d                                     like(xmlCint)
      d  writer                             value like(xmlTextWriterPtr)
      d  name                           *   value options(*string)               const xmlChar *
      d  pubid                          *   value options(*string)               const xmlChar *
@@ -511,7 +563,8 @@
       * this macro maps to xmlTextWriterWriteDTD
 
      d xmlTextWriterWriteDocType...
-     d                 pr            10i 0 extproc('xmlTextWriterWriteDTD')
+     d                 pr                  extproc('xmlTextWriterWriteDTD')
+     d                                     like(xmlCint)
      d  writer                             value like(xmlTextWriterPtr)
      d  name                           *   value options(*string)               const xmlChar *
      d  pubid                          *   value options(*string)               const xmlChar *
@@ -521,20 +574,23 @@
       * DTD element definition
 
      d xmlTextWriterStartDTDElement...
-     d                 pr            10i 0 extproc(
+     d                 pr                  extproc(
      d                                     'xmlTextWriterStartDTDElement')
+     d                                     like(xmlCint)
      d  writer                             value like(xmlTextWriterPtr)
      d  name                           *   value options(*string)               const xmlChar *
 
      d xmlTextWriterEndDTDElement...
-     d                 pr            10i 0 extproc('xmlTextWriterEndDTDElement')
+     d                 pr                  extproc('xmlTextWriterEndDTDElement')
+     d                                     like(xmlCint)
      d  writer                             value like(xmlTextWriterPtr)
 
       * DTD element definition conveniency functions
 
      d xmlTextWriterWriteFormatDTDElement...
-     d                 pr            10i 0 extproc(
+     d                 pr                  extproc(
      d                                     'xmlTextWriterWriteFormatDTDElement')
+     d                                     like(xmlCint)
      d  writer                             value like(xmlTextWriterPtr)
      d  name                           *   value options(*string)               const xmlChar *
      d  format                         *   value options(*string)               const char *
@@ -548,17 +604,19 @@
      d  #vararg8                       *   value options(*string: *nopass)      void *
 
      d xmlTextWriterWriteVFormatDTDElement...
-     d                 pr            10i 0 extproc(
+     d                 pr                  extproc(
      d                                     'xmlTextWriterWriteVFormatDTDElement'
      d                                     )
+     d                                     like(xmlCint)
      d  writer                             value like(xmlTextWriterPtr)
      d  name                           *   value options(*string)               const xmlChar *
      d  format                         *   value options(*string)               const char *
      d  argptr                             likeds(xmlVaList)
 
      d xmlTextWriterWriteDTDElement...
-     d                 pr            10i 0 extproc(
+     d                 pr                  extproc(
      d                                     'xmlTextWriterWriteDTDElement')
+     d                                     like(xmlCint)
      d  writer                             value like(xmlTextWriterPtr)
      d  name                           *   value options(*string)               const xmlChar *
      d  content                        *   value options(*string)               const xmlChar *
@@ -566,20 +624,23 @@
       * DTD attribute list definition
 
      d xmlTextWriterStartDTDAttlist...
-     d                 pr            10i 0 extproc(
+     d                 pr                  extproc(
      d                                     'xmlTextWriterStartDTDAttlist')
+     d                                     like(xmlCint)
      d  writer                             value like(xmlTextWriterPtr)
      d  name                           *   value options(*string)               const xmlChar *
 
      d xmlTextWriterEndDTDAttlist...
-     d                 pr            10i 0 extproc('xmlTextWriterEndDTDAttlist')
+     d                 pr                  extproc('xmlTextWriterEndDTDAttlist')
+     d                                     like(xmlCint)
      d  writer                             value like(xmlTextWriterPtr)
 
       * DTD attribute list definition conveniency functions
 
      d xmlTextWriterWriteFormatDTDAttlist...
-     d                 pr            10i 0 extproc(
+     d                 pr                  extproc(
      d                                     'xmlTextWriterWriteFormatDTDAttlist')
+     d                                     like(xmlCint)
      d  writer                             value like(xmlTextWriterPtr)
      d  name                           *   value options(*string)               const xmlChar *
      d  format                         *   value options(*string)               const char *
@@ -593,17 +654,19 @@
      d  #vararg8                       *   value options(*string: *nopass)      void *
 
      d xmlTextWriterWriteVFormatDTDAttlist...
-     d                 pr            10i 0 extproc(
+     d                 pr                  extproc(
      d                                     'xmlTextWriterWriteVFormatDTDAttlist'
      d                                     )
+     d                                     like(xmlCint)
      d  writer                             value like(xmlTextWriterPtr)
      d  name                           *   value options(*string)               const xmlChar *
      d  format                         *   value options(*string)               const char *
      d  argptr                             likeds(xmlVaList)
 
      d xmlTextWriterWriteDTDAttlist...
-     d                 pr            10i 0 extproc(
+     d                 pr                  extproc(
      d                                     'xmlTextWriterWriteDTDAttlist')
+     d                                     like(xmlCint)
      d  writer                             value like(xmlTextWriterPtr)
      d  name                           *   value options(*string)               const xmlChar *
      d  content                        *   value options(*string)               const xmlChar *
@@ -611,23 +674,26 @@
       * DTD entity definition
 
      d xmlTextWriterStartDTDEntity...
-     d                 pr            10i 0 extproc(
+     d                 pr                  extproc(
      d                                     'xmlTextWriterStartDTDEntity')
+     d                                     like(xmlCint)
      d  writer                             value like(xmlTextWriterPtr)
-     d  pe                           10i 0 value
+     d  pe                                 value like(xmlCint)
      d  name                           *   value options(*string)               const xmlChar *
 
      d xmlTextWriterEndDTDEntity...
-     d                 pr            10i 0 extproc('xmlTextWriterEndDTDEntity')
+     d                 pr                  extproc('xmlTextWriterEndDTDEntity')
+     d                                     like(xmlCint)
      d  writer                             value like(xmlTextWriterPtr)
 
       * DTD entity definition conveniency functions
 
      d xmlTextWriterWriteFormatDTDInternalEntity...
-     d                 pr            10i 0 extproc('xmlTextWriterWriteFormatDTD-
+     d                 pr                  extproc('xmlTextWriterWriteFormatDTD-
      d                                     InternalEntity')
+     d                                     like(xmlCint)
      d  writer                             value like(xmlTextWriterPtr)
-     d  pe                           10i 0 value
+     d  pe                                 value like(xmlCint)
      d  name                           *   value options(*string)               const xmlChar *
      d  format                         *   value options(*string)               const char *
      d  #vararg1                       *   value options(*string: *nopass)      void *
@@ -640,47 +706,52 @@
      d  #vararg8                       *   value options(*string: *nopass)      void *
 
      d xmlTextWriterWriteVFormatDTDInternalEntity...
-     d                 pr            10i 0 extproc('xmlTextWriterWriteVFormatDT-
+     d                 pr                  extproc('xmlTextWriterWriteVFormatDT-
      d                                     DInternalEntity')
+     d                                     like(xmlCint)
      d  writer                             value like(xmlTextWriterPtr)
-     d  pe                           10i 0 value
+     d  pe                                 value like(xmlCint)
      d  name                           *   value options(*string)               const xmlChar *
      d  format                         *   value options(*string)               const char *
      d  argptr                             likeds(xmlVaList)
 
      d xmlTextWriterWriteDTDInternalEntity...
-     d                 pr            10i 0 extproc(
+     d                 pr                  extproc(
      d                                     'xmlTextWriterWriteDTDInternalEntity'
      d                                     )
+     d                                     like(xmlCint)
      d  writer                             value like(xmlTextWriterPtr)
-     d  pe                           10i 0 value
+     d  pe                                 value like(xmlCint)
      d  name                           *   value options(*string)               const xmlChar *
      d  content                        *   value options(*string)               const xmlChar *
 
      d xmlTextWriterWriteDTDExternalEntity...
-     d                 pr            10i 0 extproc(
+     d                 pr                  extproc(
      d                                     'xmlTextWriterWriteDTDExternalEntity'
      d                                     )
+     d                                     like(xmlCint)
      d  writer                             value like(xmlTextWriterPtr)
-     d  pe                           10i 0 value
+     d  pe                                 value like(xmlCint)
      d  name                           *   value options(*string)               const xmlChar *
      d  pubid                          *   value options(*string)               const xmlChar *
      d  sysid                          *   value options(*string)               const xmlChar *
      d  ndataid                        *   value options(*string)               const xmlChar *
 
      d xmlTextWriterWriteDTDExternalEntityContents...
-     d                 pr            10i 0 extproc('xmlTextWriterWriteDTDExtern-
+     d                 pr                  extproc('xmlTextWriterWriteDTDExtern-
      d                                     alEntityContents')
+     d                                     like(xmlCint)
      d  writer                             value like(xmlTextWriterPtr)
      d  pubid                          *   value options(*string)               const xmlChar *
      d  sysid                          *   value options(*string)               const xmlChar *
      d  ndataid                        *   value options(*string)               const xmlChar *
 
      d xmlTextWriterWriteDTDEntity...
-     d                 pr            10i 0 extproc(
+     d                 pr                  extproc(
      d                                     'xmlTextWriterWriteDTDEntity')
+     d                                     like(xmlCint)
      d  writer                             value like(xmlTextWriterPtr)
-     d  pe                           10i 0 value
+     d  pe                                 value like(xmlCint)
      d  name                           *   value options(*string)               const xmlChar *
      d  pubid                          *   value options(*string)               const xmlChar *
      d  sysid                          *   value options(*string)               const xmlChar *
@@ -690,8 +761,9 @@
       * DTD notation definition
 
      d xmlTextWriterWriteDTDNotation...
-     d                 pr            10i 0 extproc(
+     d                 pr                  extproc(
      d                                     'xmlTextWriterWriteDTDNotation')
+     d                                     like(xmlCint)
      d  writer                             value like(xmlTextWriterPtr)
      d  name                           *   value options(*string)               const xmlChar *
      d  pubid                          *   value options(*string)               const xmlChar *
@@ -700,25 +772,29 @@
       * Indentation
 
      d xmlTextWriterSetIndent...
-     d                 pr            10i 0 extproc('xmlTextWriterSetIndent')
+     d                 pr                  extproc('xmlTextWriterSetIndent')
+     d                                     like(xmlCint)
      d  writer                             value like(xmlTextWriterPtr)
-     d  indent                       10i 0 value
+     d  indent                             value like(xmlCint)
 
      d xmlTextWriterSetIndentString...
-     d                 pr            10i 0 extproc(
+     d                 pr                  extproc(
      d                                     'xmlTextWriterSetIndentString')
+     d                                     like(xmlCint)
      d  writer                             value like(xmlTextWriterPtr)
      d  str                            *   value options(*string)               const xmlChar *
 
      d xmlTextWriterSetQuoteChar...
-     d                 pr            10i 0 extproc('xmlTextWriterSetQuoteChar')
+     d                 pr                  extproc('xmlTextWriterSetQuoteChar')
+     d                                     like(xmlCint)
      d  writer                             value like(xmlTextWriterPtr)
      d  quotechar                          value like(xmlChar)
 
       * misc
 
      d xmlTextWriterFlush...
-     d                 pr            10i 0 extproc('xmlTextWriterFlush')
+     d                 pr                  extproc('xmlTextWriterFlush')
+     d                                     like(xmlCint)
      d  writer                             value like(xmlTextWriterPtr)
 
       /endif                                                                    LIBXML_WRITER_ENABLD
diff --git a/os400/libxmlrpg/xpath.rpgle b/os400/libxmlrpg/xpath.rpgle
index 1784fad..6e591ee 100644
--- a/os400/libxmlrpg/xpath.rpgle
+++ b/os400/libxmlrpg/xpath.rpgle
@@ -18,10 +18,10 @@
       /define XML_XPATH_H__
 
       /include "libxmlrpg/xmlversion"
-      /include "libxmlrpg/xmlTypesC"
 
       /if defined(LIBXML_XPATH_ENABLED)
 
+      /include "libxmlrpg/xmlTypesC"
       /include "libxmlrpg/xmlerror"
       /include "libxmlrpg/tree"
       /include "libxmlrpg/hash"
@@ -37,7 +37,8 @@
 
       * The set of XPath error codes.
 
-     d xmlXPathError   s             10i 0 based(######typedef######)           enum
+     d xmlXPathError   s                   based(######typedef######)
+     d                                     like(xmlCenum)
      d  XPATH_EXPRESSION_OK...
      d                 c                   0
      d  XPATH_NUMBER_ERROR...
@@ -95,8 +96,8 @@
 
      d xmlNodeSet      ds                  based(xmlNodeSetPtr)
      d                                     align qualified
-     d  nodeNr                       10i 0                                      Set node count
-     d  nodeMax                      10i 0                                      Max # nodes in set
+     d  nodeNr                             like(xmlCint)                        Set node count
+     d  nodeMax                            like(xmlCint)                        Max # nodes in set
      d  nodeTab                        *                                        xmlNodePtr *
 
       * An expression is evaluated to yield an object, which
@@ -109,7 +110,8 @@
       * @@ XPointer will add more types !
 
      d xmlXPathObjectType...
-     d                 s             10i 0 based(######typedef######)           enum
+     d                 s                   based(######typedef######)
+     d                                     like(xmlCenum)
      d  XPATH_UNDEFINED...
      d                 c                   0
      d  XPATH_NODESET  c                   1
@@ -131,13 +133,13 @@
      d                                     align qualified
      d  type                               like(xmlXPathObjectType)
      d  nodesetval                         like(xmlNodeSetPtr)
-     d  boolval                      10i 0
-     d  floatval                      8f
+     d  boolval                            like(xmlCint)
+     d  floatval                           like(xmlCdouble)
      d  stringval                      *                                        xmlChar *
      d  user                           *                                        void *
-     d  index                        10i 0
+     d  index                              like(xmlCint)
      d  user2                          *                                        void *
-     d  index2                       10i 0
+     d  index2                             like(xmlCint)
 
       * xmlXPathConvertFunc:
       * @obj:  an XPath object
@@ -299,69 +301,69 @@
      d  node                               like(xmlNodePtr)                     Current node
       *
      d  nb_variables_unused...                                                  Unused (hash table)
-     d                               10i 0
-     d  max_variables_unused...                                                  Unused (hash table)
-     d                               10i 0
-     d  varHash                            like(xmlHashTablePtr)                 Defined variables
+     d                                     like(xmlCint)
+     d  max_variables_unused...                                                 Unused (hash table)
+     d                                     like(xmlCint)
+     d  varHash                            like(xmlHashTablePtr)                Defined variables
       *
-     d  nb_types                     10i 0                                       # of defined types
-     d  max_types                    10i 0                                       Max number of types
-     d  types                              like(xmlXPathTypePtr)                 Defined types array
+     d  nb_types                           like(xmlCint)                        # of defined types
+     d  max_types                          like(xmlCint)                        Max number of types
+     d  types                              like(xmlXPathTypePtr)                Defined types array
       *
      d  nb_funcs_unused...                                                      Unused (hash table)
-     d                               10i 0
-     d  max_funcs_unused...                                                      Unused (hash table)
-     d                               10i 0
-     d  funcHash                           like(xmlHashTablePtr)                 Defined functions
+     d                                     like(xmlCint)
+     d  max_funcs_unused...                                                     Unused (hash table)
+     d                                     like(xmlCint)
+     d  funcHash                           like(xmlHashTablePtr)                Defined functions
       *
-     d  nb_axis                      10i 0                                       # of defined axis
-     d  max_axis                     10i 0                                       Max number of axis
-     d  axis                               like(xmlXPathAxisPtr)                 Defined axis array
+     d  nb_axis                            like(xmlCint)                        # of defined axis
+     d  max_axis                           like(xmlCint)                        Max number of axis
+     d  axis                               like(xmlXPathAxisPtr)                Defined axis array
       *
       * the namespace nodes of the context node
       *
-     d  namespaces                     *                                         xmlNsPtr *
-     d  nsNr                         10i 0                                       # scope namespaces
-     d  user                           *   procptr                               Function to free
+     d  namespaces                     *                                        xmlNsPtr *
+     d  nsNr                               like(xmlCint)                        # scope namespaces
+     d  user                           *   procptr                              Function to free
       *
       * extra variables
       *
-     d  contextSize                  10i 0                                       The context size
+     d  contextSize                        like(xmlCint)                        The context size
      d  proximityPosition...
-     d                               10i 0
+     d                                     like(xmlCint)
       *
       * extra stuff for XPointer
       *
-     d  xptr                         10i 0                                       XPointer context ?
-     d  here                               like(xmlNodePtr)                      For here()
-     d  origin                             like(xmlNodePtr)                      For origin()
+     d  xptr                               like(xmlCint)                        XPointer context ?
+     d  here                               like(xmlNodePtr)                     For here()
+     d  origin                             like(xmlNodePtr)                     For origin()
       *
       * the set of namespace declarations in scope for the expression
       *
-     d  nsHash                             like(xmlHashTablePtr)                 Namespace hashtable
-     d  varLookupFunc                      like(xmlXPathVariableLookupFunc)      Var lookup function
-     d  varLookupData                  *                                         void *
+     d  nsHash                             like(xmlHashTablePtr)                Namespace hashtable
+     d  varLookupFunc                      like(xmlXPathVariableLookupFunc)     Var lookup function
+     d  varLookupData                  *                                        void *
       *
       * Possibility to link in an extra item
       *
-     d  extra                          *                                         void *
+     d  extra                          *                                        void *
       *
       * The function name and URI when calling a function
       *
-     d  function                       *                                         const xmlChar *
-     d  functionURI                    *                                         const xmlChar *
+     d  function                       *                                        const xmlChar *
+     d  functionURI                    *                                        const xmlChar *
       *
       * function lookup function and data
       *
-     d  funcLookupFunc...                                                        Func lookup func
+     d  funcLookupFunc...                                                       Func lookup func
      d                                     like(xmlXPathVariableLookupFunc)
-     d  funcLookupData...                                                        void *
+     d  funcLookupData...                                                       void *
      d                                 *
       *
       * temporary namespace lists kept for walking the namespace axis
       *
      d  tmpNsList                      *                                        xmlNsPtr *
-     d  tmpNsNr                      10i 0                                      # scope namespaces
+     d  tmpNsNr                            like(xmlCint)                        # scope namespaces
       *
       * error reporting mechanism
       *
@@ -374,7 +376,7 @@
       *
      d  dict                               like(xmlDictPtr)                     Dictionary if any
       *
-     d  flags                        10i 0                                      Compilation control
+     d  flags                              like(xmlCint)                        Compilation control
       *
       * Cache for reusal of XPath objects
       *
@@ -396,19 +398,19 @@
      d  cur                            *                                        const xmlChar *
      d  base                           *                                        const xmlChar *
       *
-     d  error                        10i 0                                      Error code
+     d  error                              like(xmlCint)                        Error code
       *
      d  context                            like(xmlXPathContextPtr)             Evaluation context
      d  value                              like(xmlXPathObjectPtr)              The current value
-     d  valueNr                      10i 0                                      Value stack depth
-     d  valueMax                     10i 0                                      Max stack depth
+     d  valueNr                            like(xmlCint)                        Value stack depth
+     d  valueMax                           like(xmlCint)                        Max stack depth
      d  valueTab                       *                                        xmlXPathObjectPtr *
       *
      d  comp                               like(xmlXPathCompExprPtr)            Precompiled expr.
-     d  xptr                         10i 0                                      XPointer expression?
+     d  xptr                               like(xmlCint)                        XPointer expression?
      d  ancestor                           like(xmlNodePtr)                     To walk prec. axis
       *
-     d  valueFrame                   10i 0                                      Limit stack pop
+     d  valueFrame                         like(xmlCint)                        Limit stack pop
 
       **************************************************************************
       *                                                                        *
@@ -418,9 +420,14 @@
 
       * Objects and Nodesets handling
 
-     d xmlXPathNAN     s              8f   import('xmlXPathNAN')
-     d xmlXPathPINF    s              8f   import('xmlXPathPINF')
-     d xmlXPathNINF    s              8f   import('xmlXPathNINF')
+     d xmlXPathNAN     s                   import('xmlXPathNAN')
+     d                                     like(xmlCdouble)
+
+     d xmlXPathPINF    s                   import('xmlXPathPINF')
+     d                                     like(xmlCdouble)
+
+     d xmlXPathNINF    s                   import('xmlXPathNINF')
+     d                                     like(xmlCdouble)
 
      d xmlXPathFreeObject...
      d                 pr                  extproc('xmlXPathFreeObject')
@@ -445,62 +452,71 @@
      d val                                 value like(xmlXPathObjectPtr)
 
      d xmlXPathCmpNodes...
-     d                 pr            10i 0 extproc('xmlXPathCmpNodes')
+     d                 pr                  extproc('xmlXPathCmpNodes')
+     d                                     like(xmlCint)
      d node1                               value like(xmlNodePtr)
      d node2                               value like(xmlNodePtr)
 
       * Conversion functions to basic types.
 
      d xmlXPathCastNumberToBoolean...
-     d                 pr            10i 0 extproc(
+     d                 pr                  extproc(
      d                                      'xmlXPathCastNumberToBoolean')
-     d val                            8f   value
+     d                                     like(xmlCint)
+     d val                                 value like(xmlCdouble)
 
      d xmlXPathCastStringToBoolean...
-     d                 pr            10i 0 extproc(
+     d                 pr                  extproc(
      d                                      'xmlXPathCastStringToBoolean')
+     d                                     like(xmlCint)
      d val                             *   value options(*string)               const xmlChar *
 
      d xmlXPathCastNodeSetToBoolean...
-     d                 pr            10i 0 extproc(
+     d                 pr                  extproc(
      d                                     'xmlXPathCastNodeSetToBoolean')
+     d                                     like(xmlCint)
      d ns                                  value like(xmlNodeSetPtr)
 
      d xmlXPathCastToBoolean...
-     d                 pr            10i 0 extproc('xmlXPathCastToBoolean')
+     d                 pr                  extproc('xmlXPathCastToBoolean')
+     d                                     like(xmlCint)
      d val                                 value like(xmlXPathObjectPtr)
 
      d xmlXPathCastBooleanToNumber...
      d                 pr                  extproc(
      d                                      'xmlXPathCastBooleanToNumber')
-     d                                8f
-     d val                           10i 0 value
+     d                                     like(xmlCdouble)
+     d val                                 value like(xmlCint)
 
      d xmlXPathCastStringToNumber...
-     d                 pr             8f   extproc('xmlXPathCastStringToNumber')
+     d                 pr                  extproc('xmlXPathCastStringToNumber')
+     d                                     like(xmlCdouble)
      d val                             *   value options(*string)               const xmlChar *
 
      d xmlXPathCastNodeToNumber...
-     d                 pr             8f   extproc('xmlXPathCastNodeToNumber')
+     d                 pr                  extproc('xmlXPathCastNodeToNumber')
+     d                                     like(xmlCdouble)
      d node                                value like(xmlNodePtr)
 
      d xmlXPathCastNodeSetToNumber...
-     d                 pr             8f   extproc(
+     d                 pr                  extproc(
      d                                      'xmlXPathCastNodeSetToNumber')
+     d                                     like(xmlCdouble)
      d ns                                  value like(xmlNodeSetPtr)
 
      d xmlXPathCastToNumber...
-     d                 pr             8f   extproc('xmlXPathCastToNumber')
+     d                 pr                  extproc('xmlXPathCastToNumber')
+     d                                     like(xmlCdouble)
      d val                                 value like(xmlXPathObjectPtr)
 
      d xmlXPathCastBooleanToString...
      d                 pr              *   extproc(                             xmlChar *
      d                                      'xmlXPathCastBooleanToString')
-     d val                           10i 0 value
+     d val                                 value like(xmlCint)
 
      d xmlXPathCastNumberToString...
      d                 pr              *   extproc('xmlXPathCastNumberToString')xmlChar *
-     d val                            8f   value
+     d val                                 value like(xmlCdouble)
 
      d xmlXPathCastNodeToString...
      d                 pr              *   extproc('xmlXPathCastNodeToString')  xmlChar *
@@ -542,11 +558,12 @@
      d ctxt                                value like(xmlXPathContextPtr)
 
      d xmlXPathContextSetCache...
-     d                 pr            10i 0 extproc('xmlXPathContextSetCache')
+     d                 pr                  extproc('xmlXPathContextSetCache')
+     d                                     like(xmlCint)
      d ctxt                                value like(xmlXPathContextPtr)
-     d active                        10i 0 value
-     d value                         10i 0 value
-     d options                       10i 0 value
+     d active                              value like(xmlCint)
+     d value                               value like(xmlCint)
+     d options                             value like(xmlCint)
 
       * Evaluation functions.
 
@@ -556,7 +573,8 @@
      d doc                                 value like(xmlDocPtr)
 
      d xmlXPathSetContextNode...
-     d                 pr            10i 0 extproc('xmlXPathSetContextNode')
+     d                 pr                  extproc('xmlXPathSetContextNode')
+     d                                     like(xmlCint)
      d node                                value like(xmlNodePtr)
      d ctx                                 value like(xmlXPathContextPtr)
 
@@ -579,7 +597,8 @@
      d ctxt                                value like(xmlXPathContextPtr)
 
      d xmlXPathEvalPredicate...
-     d                 pr            10i 0 extproc('xmlXPathEvalPredicate')
+     d                 pr                  extproc('xmlXPathEvalPredicate')
+     d                                     like(xmlCint)
      d ctxt                                value like(xmlXPathContextPtr)
      d res                                 value like(xmlXPathObjectPtr)
 
@@ -603,8 +622,9 @@
      d ctx                                 value like(xmlXPathContextPtr)
 
      d xmlXPathCompiledEvalToBoolean...
-     d                 pr            10i 0 extproc(
+     d                 pr                  extproc(
      d                                     'xmlXPathCompiledEvalToBoolean')
+     d                                     like(xmlCint)
      d comp                                value like(xmlXPathCompExprPtr)
      d ctxt                                value like(xmlXPathContextPtr)
 
@@ -622,11 +642,13 @@
       /if defined(XML_TESTVAL)
      d xmlXPathInit    pr                  extproc('xmlXPathInit')
 
-     d xmlXPathIsNaN   pr            10i 0 extproc('xmlXPathIsNaN')
-     d val                            8f   value
+     d xmlXPathIsNaN   pr                  extproc('xmlXPathIsNaN')
+     d                                     like(xmlCint)
+     d val                                 value like(xmlCdouble)
 
-     d xmlXPathIsInf   pr            10i 0 extproc('xmlXPathIsInf')
-     d val                            8f   value
+     d xmlXPathIsInf   pr                  extproc('xmlXPathIsInf')
+     d                                     like(xmlCint)
+     d val                                 value like(xmlCdouble)
 
       /undefine XML_TESTVAL
       /endif
@@ -635,17 +657,19 @@
 
       /if defined(LIBXML_XPATH_ENABLED)
      d xmlXPathNodeSetGetLength...
-     d                 pr            10i 0 extproc('__xmlXPathNodeSetGetLength')
+     d                 pr                  extproc('__xmlXPathNodeSetGetLength')
+     d                                     like(xmlCint)
      d  ns                                 value like(xmlNodeSetPtr)
 
      d xmlXPathNodeSetItem...
      d                 pr                  extproc('__xmlXPathNodeSetItem')
      d                                     like(xmlNodePtr)
      d  ns                                 value like(xmlNodeSetPtr)
-     d  index                        10i 0 value
+     d  index                              value like(xmlCint)
 
      d xmlXPathNodeSetIsEmpty...
-     d                 pr            10i 0 extproc('__xmlXPathNodeSetIsEmpty')
+     d                 pr                  extproc('__xmlXPathNodeSetIsEmpty')
+     d                                     like(xmlCint)
      d  ns                                 value like(xmlNodeSetPtr)
       /endif                                                                    LIBXML_XPATH_ENABLED
       /endif                                                                    XML_XPATH_H__
diff --git a/os400/libxmlrpg/xpathInternals.rpgle b/os400/libxmlrpg/xpathInternals.rpgle
index 69f3ae0..a6d12e1 100644
--- a/os400/libxmlrpg/xpathInternals.rpgle
+++ b/os400/libxmlrpg/xpathInternals.rpgle
@@ -11,10 +11,12 @@
       /define XML_XPATH_INTERNALS_H__
 
       /include "libxmlrpg/xmlversion"
-      /include "libxmlrpg/xpath"
 
       /if defined(LIBXML_XPATH_ENABLED)
 
+      /include "libxmlrpg/xmlTypesC"
+      /include "libxmlrpg/xpath"
+
       ************************************************************************
       *                                                                      *
       *                            Helpers                                   *
@@ -25,11 +27,13 @@
       * shouldn't be used in #ifdef's preprocessor instructions.
 
      d xmlXPathPopBoolean...
-     d                 pr            10i 0 extproc('xmlXPathPopBoolean')
+     d                 pr                  extproc('xmlXPathPopBoolean')
+     d                                     like(xmlCint)
      d  ctxt                               value like(xmlXPathParserContextPtr)
 
      d xmlXPathPopNumber...
-     d                 pr             8f   extproc('xmlXPathPopNumber')
+     d                 pr                  extproc('xmlXPathPopNumber')
+     d                                     like(xmlCdouble)
      d  ctxt                               value like(xmlXPathParserContextPtr)
 
      d xmlXPathPopString...
@@ -71,31 +75,32 @@
      d                 pr                  extproc('xmlXPatherror')
      d  ctxt                               value like(xmlXPathParserContextPtr)
      d  file                           *   value options(*string)               const char *
-     d  line                         10i 0 value
-     d  no                           10i 0 value
+     d  line                               value like(xmlCint)
+     d  no                                 value like(xmlCint)
 
      d xmlXPathErr     pr                  extproc('xmlXPathErr')
      d  ctxt                               value like(xmlXPathParserContextPtr)
-     d  error                        10i 0 value
+     d  error                              value like(xmlCint)
 
       /if defined(LIBXML_DEBUG_ENABLED)
      d xmlXPathDebugDumpObject...
      d                 pr                  extproc('xmlXPathDebugDumpObject')
      d  output                         *   value                                FILE *
      d  cur                                value like(xmlXPathObjectPtr)
-     d  depth                        10i 0 value
+     d  depth                              value like(xmlCint)
 
      d xmlXPathDebugDumpCompExpr...
      d                 pr                  extproc('xmlXPathDebugDumpCompExpr')
      d  output                         *   value                                FILE *
      d  comp                               value like(xmlXPathCompExprPtr)
-     d  depth                        10i 0 value
+     d  depth                              value like(xmlCint)
       /endif
 
       * NodeSet handling.
 
      d xmlXPathNodeSetContains...
-     d                 pr            10i 0 extproc('xmlXPathNodeSetContains')
+     d                 pr                  extproc('xmlXPathNodeSetContains')
+     d                                     like(xmlCint)
      d  cur                                value like(xmlNodeSetPtr)
      d  val                                value like(xmlNodePtr)
 
@@ -122,7 +127,8 @@
      d  nodes                              value like(xmlNodeSetPtr)
 
      d xmlXPathHasSameNodes...
-     d                 pr            10i 0 extproc('xmlXPathHasSameNodes')
+     d                 pr                  extproc('xmlXPathHasSameNodes')
+     d                                     like(xmlCint)
      d  nodes1                             value like(xmlNodeSetPtr)
      d  nodes2                             value like(xmlNodeSetPtr)
 
@@ -177,7 +183,8 @@
       * Extending a context.
 
      d xmlXPathRegisterNs...
-     d                 pr            10i 0 extproc('xmlXPathRegisterNs')
+     d                 pr                  extproc('xmlXPathRegisterNs')
+     d                                     like(xmlCint)
      d  ctxt                               value like(xmlXPathContextPtr)
      d  prefix                         *   value options(*string)               const xmlChar *
      d  ns_uri                         *   value options(*string)               const xmlChar *
@@ -193,26 +200,30 @@
      d  ctxt                               value like(xmlXPathContextPtr)
 
      d xmlXPathRegisterFunc...
-     d                 pr            10i 0 extproc('xmlXPathRegisterFunc')
+     d                 pr                  extproc('xmlXPathRegisterFunc')
+     d                                     like(xmlCint)
      d  ctxt                               value like(xmlXPathContextPtr)
      d  name                           *   value options(*string)               const xmlChar *
      d  f                                  value like(xmlXPathFunction)
 
      d xmlXPathRegisterFuncNS...
-     d                 pr            10i 0 extproc('xmlXPathRegisterFuncNS')
+     d                 pr                  extproc('xmlXPathRegisterFuncNS')
+     d                                     like(xmlCint)
      d  ctxt                               value like(xmlXPathContextPtr)
      d  name                           *   value options(*string)               const xmlChar *
      d  ns_uri                         *   value options(*string)               const xmlChar *
      d  f                                  value like(xmlXPathFunction)
 
      d xmlXPathRegisterVariable...
-     d                 pr            10i 0 extproc('xmlXPathRegisterVariable')
+     d                 pr                  extproc('xmlXPathRegisterVariable')
+     d                                     like(xmlCint)
      d  ctxt                               value like(xmlXPathContextPtr)
      d  name                           *   value options(*string)               const xmlChar *
      d  value                              value like(xmlXPathObjectPtr)
 
      d xmlXPathRegisterVariableNS...
-     d                 pr            10i 0 extproc('xmlXPathRegisterVariableNS')
+     d                 pr                  extproc('xmlXPathRegisterVariableNS')
+     d                                     like(xmlCint)
      d  ctxt                               value like(xmlXPathContextPtr)
      d  name                           *   value options(*string)               const xmlChar *
      d  ns_uri                         *   value options(*string)               const xmlChar *
@@ -273,7 +284,8 @@
      d                                     like(xmlXPathObjectPtr)
      d  ctxt                               value like(xmlXPathParserContextPtr)
 
-     d valuePush       pr            10i 0 extproc('valuePush')
+     d valuePush       pr                  extproc('valuePush')
+     d                                     like(xmlCint)
      d  ctxt                               value like(xmlXPathParserContextPtr)
      d  value                              value like(xmlXPathObjectPtr)
 
@@ -300,12 +312,12 @@
      d xmlXPathNewFloat...
      d                 pr                  extproc('xmlXPathNewFloat')
      d                                     like(xmlXPathObjectPtr)
-     d  val                           8f   value
+     d  val                                value like(xmlCdouble)
 
      d xmlXPathNewBoolean...
      d                 pr                  extproc('xmlXPathNewBoolean')
      d                                     like(xmlXPathObjectPtr)
-     d  val                          10i 0 value
+     d  val                                value like(xmlCint)
 
      d xmlXPathNewNodeSet...
      d                 pr                  extproc('xmlXPathNewNodeSet')
@@ -318,17 +330,20 @@
      d  val                                value like(xmlNodePtr)
 
      d xmlXPathNodeSetAdd...
-     d                 pr            10i 0 extproc('xmlXPathNodeSetAdd')
+     d                 pr                  extproc('xmlXPathNodeSetAdd')
+     d                                     like(xmlCint)
      d  cur                                value like(xmlNodeSetPtr)
      d  val                                value like(xmlNodePtr)
 
      d xmlXPathNodeSetAddUnique...
-     d                 pr            10i 0 extproc('xmlXPathNodeSetAddUnique')
+     d                 pr                  extproc('xmlXPathNodeSetAddUnique')
+     d                                     like(xmlCint)
      d  cur                                value like(xmlNodeSetPtr)
      d  val                                value like(xmlNodePtr)
 
      d xmlXPathNodeSetAddNs...
-     d                 pr            10i 0 extproc('xmlXPathNodeSetAddNs')
+     d                 pr                  extproc('xmlXPathNodeSetAddNs')
+     d                                     like(xmlCint)
      d  cur                                value like(xmlNodeSetPtr)
      d  node                               value like(xmlNodePtr)
      d  ns                                 value like(xmlNsPtr)
@@ -355,12 +370,14 @@
       * Existing functions.
 
      d xmlXPathStringEvalNumber...
-     d                 pr             8f   extproc('xmlXPathStringEvalNumber')
+     d                 pr                  extproc('xmlXPathStringEvalNumber')
+     d                                     like(xmlCdouble)
      d  str                            *   value options(*string)               const xmlChar *
 
      d xmlXPathEvaluatePredicateResult...
-     d                 pr            10i 0 extproc(
+     d                 pr                  extproc(
      d                                     'xmlXPathEvaluatePredicateResult')
+     d                                     like(xmlCint)
      d  ctxt                               value like(xmlXPathParserContextPtr)
      d  res                                value like(xmlXPathObjectPtr)
 
@@ -383,7 +400,7 @@
      d xmlXPathNodeSetRemove...
      d                 pr                  extproc('xmlXPathNodeSetRemove')
      d  cur                                value like(xmlNodeSetPtr)
-     d  val                          10i 0 value
+     d  val                                value like(xmlCint)
 
      d xmlXPathNewNodeSetList...
      d                 pr                  extproc('xmlXPathNewNodeSetList')
@@ -401,18 +418,21 @@
      d  val                            *   value                                void *
 
      d xmlXPathEqualValues...
-     d                 pr            10i 0 extproc('xmlXPathEqualValues')
+     d                 pr                  extproc('xmlXPathEqualValues')
+     d                                     like(xmlCint)
      d  ctxt                               value like(xmlXPathParserContextPtr)
 
      d xmlXPathNotEqualValues...
-     d                 pr            10i 0 extproc('xmlXPathNotEqualValues')
+     d                 pr                  extproc('xmlXPathNotEqualValues')
+     d                                     like(xmlCint)
      d  ctxt                               value like(xmlXPathParserContextPtr)
 
      d xmlXPathCompareValues...
-     d                 pr            10i 0 extproc('xmlXPathCompareValues')
+     d                 pr                  extproc('xmlXPathCompareValues')
+     d                                     like(xmlCint)
      d  ctxt                               value like(xmlXPathParserContextPtr)
-     d  inf                          10i 0 value
-     d  strict                       10i 0 value
+     d  inf                                value like(xmlCint)
+     d  strict                             value like(xmlCint)
 
      d xmlXPathValueFlipSign...
      d                 pr                  extproc('xmlXPathValueFlipSign')
@@ -439,7 +459,8 @@
      d  ctxt                               value like(xmlXPathParserContextPtr)
 
      d xmlXPathIsNodeType...
-     d                 pr            10i 0 extproc('xmlXPathIsNodeType')
+     d                 pr                  extproc('xmlXPathIsNodeType')
+     d                                     like(xmlCint)
      d  name                           *   value options(*string)               const xmlChar *
 
       * Some of the axis navigation routines.
@@ -530,137 +551,137 @@
      d xmlXPathLastFunction...
      d                 pr                  extproc('xmlXPathLastFunction')
      d  ctxt                               value like(xmlXPathParserContextPtr)
-     d  nargs                        10i 0 value
+     d  nargs                              value like(xmlCint)
 
      d xmlXPathPositionFunction...
      d                 pr                  extproc('xmlXPathPositionFunction')
      d  ctxt                               value like(xmlXPathParserContextPtr)
-     d  nargs                        10i 0 value
+     d  nargs                              value like(xmlCint)
 
      d xmlXPathCountFunction...
      d                 pr                  extproc('xmlXPathCountFunction')
      d  ctxt                               value like(xmlXPathParserContextPtr)
-     d  nargs                        10i 0 value
+     d  nargs                              value like(xmlCint)
 
      d xmlXPathIdFunction...
      d                 pr                  extproc('xmlXPathIdFunction')
      d  ctxt                               value like(xmlXPathParserContextPtr)
-     d  nargs                        10i 0 value
+     d  nargs                              value like(xmlCint)
 
      d xmlXPathLocalNameFunction...
      d                 pr                  extproc('xmlXPathLocalNameFunction')
      d  ctxt                               value like(xmlXPathParserContextPtr)
-     d  nargs                        10i 0 value
+     d  nargs                              value like(xmlCint)
 
      d xmlXPathNamespaceURIFunction...
      d                 pr                  extproc(
      d                                     'xmlXPathNamespaceURIFunction')
      d  ctxt                               value like(xmlXPathParserContextPtr)
-     d  nargs                        10i 0 value
+     d  nargs                              value like(xmlCint)
 
      d xmlXPathStringFunction...
      d                 pr                  extproc('xmlXPathStringFunction')
      d  ctxt                               value like(xmlXPathParserContextPtr)
-     d  nargs                        10i 0 value
+     d  nargs                              value like(xmlCint)
 
      d xmlXPathStringLengthFunction...
      d                 pr                  extproc(
      d                                     'xmlXPathStringLengthFunction')
      d  ctxt                               value like(xmlXPathParserContextPtr)
-     d  nargs                        10i 0 value
+     d  nargs                              value like(xmlCint)
 
      d xmlXPathConcatFunction...
      d                 pr                  extproc('xmlXPathConcatFunction')
      d  ctxt                               value like(xmlXPathParserContextPtr)
-     d  nargs                        10i 0 value
+     d  nargs                              value like(xmlCint)
 
      d xmlXPathContainsFunction...
      d                 pr                  extproc('xmlXPathContainsFunction')
      d  ctxt                               value like(xmlXPathParserContextPtr)
-     d  nargs                        10i 0 value
+     d  nargs                              value like(xmlCint)
 
      d xmlXPathStartsWithFunction...
      d                 pr                  extproc('xmlXPathStartsWithFunction')
      d  ctxt                               value like(xmlXPathParserContextPtr)
-     d  nargs                        10i 0 value
+     d  nargs                              value like(xmlCint)
 
      d xmlXPathSubstringFunction...
      d                 pr                  extproc('xmlXPathSubstringFunction')
      d  ctxt                               value like(xmlXPathParserContextPtr)
-     d  nargs                        10i 0 value
+     d  nargs                              value like(xmlCint)
 
      d xmlXPathSubstringBeforeFunction...
      d                 pr                  extproc(
      d                                     'xmlXPathSubstringBeforeFunction')
      d  ctxt                               value like(xmlXPathParserContextPtr)
-     d  nargs                        10i 0 value
+     d  nargs                              value like(xmlCint)
 
      d xmlXPathSubstringAfterFunction...
      d                 pr                  extproc(
      d                                     'xmlXPathSubstringAfterFunction')
      d  ctxt                               value like(xmlXPathParserContextPtr)
-     d  nargs                        10i 0 value
+     d  nargs                              value like(xmlCint)
 
 
      d xmlXPathNormalizeFunction...
      d                 pr                  extproc('xmlXPathNormalizeFunction')
      d  ctxt                               value like(xmlXPathParserContextPtr)
-     d  nargs                        10i 0 value
+     d  nargs                              value like(xmlCint)
 
      d xmlXPathTranslateFunction...
      d                 pr                  extproc('xmlXPathTranslateFunction')
      d  ctxt                               value like(xmlXPathParserContextPtr)
-     d  nargs                        10i 0 value
+     d  nargs                              value like(xmlCint)
 
      d xmlXPathNotFunction...
      d                 pr                  extproc('xmlXPathNotFunction')
      d  ctxt                               value like(xmlXPathParserContextPtr)
-     d  nargs                        10i 0 value
+     d  nargs                              value like(xmlCint)
 
      d xmlXPathTrueFunction...
      d                 pr                  extproc('xmlXPathTrueFunction')
      d  ctxt                               value like(xmlXPathParserContextPtr)
-     d  nargs                        10i 0 value
+     d  nargs                              value like(xmlCint)
 
      d xmlXPathFalseFunction...
      d                 pr                  extproc('xmlXPathFalseFunction')
      d  ctxt                               value like(xmlXPathParserContextPtr)
-     d  nargs                        10i 0 value
+     d  nargs                              value like(xmlCint)
 
      d xmlXPathLangFunction...
      d                 pr                  extproc('xmlXPathLangFunction')
      d  ctxt                               value like(xmlXPathParserContextPtr)
-     d  nargs                        10i 0 value
+     d  nargs                              value like(xmlCint)
 
      d xmlXPathNumberFunction...
      d                 pr                  extproc('xmlXPathNumberFunction')
      d  ctxt                               value like(xmlXPathParserContextPtr)
-     d  nargs                        10i 0 value
+     d  nargs                              value like(xmlCint)
 
      d xmlXPathSumFunction...
      d                 pr                  extproc('xmlXPathSumFunction')
      d  ctxt                               value like(xmlXPathParserContextPtr)
-     d  nargs                        10i 0 value
+     d  nargs                              value like(xmlCint)
 
      d xmlXPathFloorFunction...
      d                 pr                  extproc('xmlXPathFloorFunction')
      d  ctxt                               value like(xmlXPathParserContextPtr)
-     d  nargs                        10i 0 value
+     d  nargs                              value like(xmlCint)
 
      d xmlXPathCeilingFunction...
      d                 pr                  extproc('xmlXPathCeilingFunction')
      d  ctxt                               value like(xmlXPathParserContextPtr)
-     d  nargs                        10i 0 value
+     d  nargs                              value like(xmlCint)
 
      d xmlXPathRoundFunction...
      d                 pr                  extproc('xmlXPathRoundFunction')
      d  ctxt                               value like(xmlXPathParserContextPtr)
-     d  nargs                        10i 0 value
+     d  nargs                              value like(xmlCint)
 
      d xmlXPathBooleanFunction...
      d                 pr                  extproc('xmlXPathBooleanFunction')
      d  ctxt                               value like(xmlXPathParserContextPtr)
-     d  nargs                        10i 0 value
+     d  nargs                              value like(xmlCint)
 
       * Really internal functions
 
diff --git a/os400/libxmlrpg/xpointer.rpgle b/os400/libxmlrpg/xpointer.rpgle
index 6f43314..29ef0f3 100644
--- a/os400/libxmlrpg/xpointer.rpgle
+++ b/os400/libxmlrpg/xpointer.rpgle
@@ -19,6 +19,7 @@
 
       /if defined(LIBXML_XPTR_ENABLED)
 
+      /include "libxmlrpg/xmlTypesC"
       /include "libxmlrpg/tree"
       /include "libxmlrpg/xpath"
 
@@ -29,8 +30,8 @@
 
      d xmlLocationSet  ds                  based(xmlLocationSetPtr)
      d                                     align qualified
-     d  locNr                        10i 0                                      # locations in set
-     d  locMax                       10i 0                                      Max locations in set
+     d  locNr                              like(xmlCint)                        # locations in set
+     d  locMax                             like(xmlCint)                        Max locations in set
      d  locTab                         *                                        xmlXPathObjectPtr *
 
       * Handling of location sets.
@@ -54,9 +55,9 @@
      d                 pr                  extproc('xmlXPtrNewRange')
      d                                     like(xmlXPathObjectPtr)
      d start                               value like(xmlNodePtr)
-     d startindex                    10i 0 value
+     d startindex                          value like(xmlCint)
      d end                                 value like(xmlNodePtr)
-     d endindex                      10i 0 value
+     d endindex                            value like(xmlCint)
 
      d xmlXPtrNewRangePoints...
      d                 pr                  extproc('xmlXPtrNewRangePoints')
@@ -123,7 +124,7 @@
      d xmlXPtrLocationSetRemove...
      d                 pr                  extproc('xmlXPtrLocationSetRemove')
      d cur                                 value like(xmlLocationSetPtr)
-     d val                           10i 0 value
+     d val                                 value like(xmlCint)
 
       * Functions.
 
@@ -142,7 +143,7 @@
      d xmlXPtrRangeToFunction...
      d                 pr                  extproc('xmlXPtrRangeToFunction')
      d ctxt                                value like(xmlXPathParserContextPtr)
-     d nargs                         10i 0 value
+     d nargs                               value like(xmlCint)
 
      d xmlXPtrBuildNodeList...
      d                 pr                  extproc('xmlXPtrBuildNodeList')
diff --git a/os400/make-src.sh b/os400/make-src.sh
index f06cfaf..6094de8 100644
--- a/os400/make-src.sh
+++ b/os400/make-src.sh
@@ -17,7 +17,7 @@
 echo '#pragma comment(user, "libxml2 version '"${LIBXML_VERSION}"'")' > os400.c
 echo '#pragma comment(user, __DATE__)' >> os400.c
 echo '#pragma comment(user, __TIME__)' >> os400.c
-echo '#pragma comment(copyright, "Copyright (C) 1998-2014 Daniel Veillard. OS/400 version by P. Monnerat.")' >> os400.c
+echo '#pragma comment(copyright, "Copyright (C) 1998-2015 Daniel Veillard. OS/400 version by P. Monnerat.")' >> os400.c
 make_module     OS400           os400.c
 LINK=                           # No need to rebuild service program yet.
 MODULES=
@@ -62,11 +62,11 @@
 
 #       OS/400 specific modules first.
 
-make_module     DLFCN           "${SCRIPTDIR}/dlfcn/dlfcn.c"    ''      ebcdic
-make_module     ICONV           "${SCRIPTDIR}/iconv/iconv.c"    ''      ebcdic
-make_module     WRAPPERS        "${SCRIPTDIR}/wrappers.c"       ''      ebcdic
-make_module     TRANSCODE       "${SCRIPTDIR}/transcode.c"
-make_module     RPGSUPPORT      "${SCRIPTDIR}/rpgsupport.c"
+make_module     --ebcdic        DLFCN           "${SCRIPTDIR}/dlfcn/dlfcn.c"
+make_module     --ebcdic        ICONV           "${SCRIPTDIR}/iconv/iconv.c"
+make_module     --ebcdic        WRAPPERS        "${SCRIPTDIR}/wrappers.c"
+make_module                     TRANSCODE       "${SCRIPTDIR}/transcode.c"
+make_module                     RPGSUPPORT      "${SCRIPTDIR}/rpgsupport.c"
 
 #       Regular libxml2 modules.
 
@@ -239,3 +239,117 @@
         CMD="${CMD} OBJ((*LIBL/${SRVPGM} *SRVPGM))"
         system "${CMD}"
 fi
+
+
+#       Compile the ASCII main() stub.
+
+make_module     --ebcdic --sysiconv     LIBXMLMAIN  "${SCRIPTDIR}/libxmlmain.c"
+
+
+#       Compile and link program xmllint.
+
+if action_needed "${LIBIFSNAME}/XMLLINT.PGM" "xmllint.c" ||
+   action_needed "${LIBIFSNAME}/XMLLINT.PGM" "${LIBIFSNAME}/${SRVPGM}.SRVPGM" ||
+   action_needed "${LIBIFSNAME}/XMLLINT.PGM" "${LIBIFSNAME}/LIBXMLMAIN.MODULE"
+then    make_module XMLLINT xmllint.c
+        CMD="CRTPGM PGM(${TARGETLIB}/XMLLINT) MODULE(${TARGETLIB}/XMLLINT)"
+        CMD="${CMD} ENTMOD(${TARGETLIB}/LIBXMLMAIN)"
+        CMD="${CMD} BNDSRVPGM(QADRTTS) BNDDIR((${TARGETLIB}/${STATBNDDIR})"
+        if [ "${WITH_ZLIB}" -ne 0 ]
+        then    CMD="${CMD} (${ZLIB_LIB}/${ZLIB_BNDDIR})"
+        fi
+        CMD="${CMD}) ACTGRP(*NEW) TEXT('XML tool')"
+        CMD="${CMD} TGTRLS(${TGTRLS})"
+        system "${CMD}"
+        rm -f "${LIBIFSNAME}/XMLLINT.MODULE"
+fi
+
+#       Install xmllint in IFS.
+
+if [ ! -d "${IFSDIR}/bin" ]
+then    mkdir -p "${IFSDIR}/bin"
+fi
+rm -f "${IFSDIR}/bin/xmllint"
+ln -s "${LIBIFSNAME}/XMLLINT.PGM" "${IFSDIR}/bin/xmllint"
+
+#       Prepare the XMLLINT command and its response program.
+
+if action_needed "${LIBIFSNAME}/XMLLINTCL.PGM" "${SCRIPTDIR}/xmllintcl.c"
+then    make_module --ebcdic XMLLINTCL "${SCRIPTDIR}/xmllintcl.c"
+        CMD="CRTPGM PGM(${TARGETLIB}/XMLLINTCL) MODULE(${TARGETLIB}/XMLLINTCL)"
+        CMD="${CMD} ACTGRP(*NEW) TEXT('XMLLINT command response')"
+        CMD="${CMD} TGTRLS(${TGTRLS})"
+        system "${CMD}"
+        rm -f "${LIBIFSNAME}/XMLLINTCL.MODULE"
+fi
+
+if action_needed "${LIBIFSNAME}/TOOLS.FILE/XMLLINT.MBR"                 \
+                 "${SCRIPTDIR}/xmllint.cmd"
+then    CMD="CPY OBJ('${SCRIPTDIR}/xmllint.cmd')"
+        CMD="${CMD} TOOBJ('${LIBIFSNAME}/TOOLS.FILE/XMLLINT.MBR')"
+        CMD="${CMD} TOCCSID(${TGTCCSID}) DTAFMT(*TEXT) REPLACE(*YES)"
+        system "${CMD}"
+fi
+
+if action_needed "${LIBIFSNAME}/XMLLINT.CMD"                            \
+                 "${LIBIFSNAME}/TOOLS.FILE/XMLLINT.MBR"
+then    CMD="CRTCMD CMD(${TARGETLIB}/XMLLINT) PGM(${TARGETLIB}/XMLLINTCL)"
+        CMD="${CMD} SRCFILE(${TARGETLIB}/TOOLS) SRCMBR(XMLLINT) THDSAFE(*YES)"
+        CMD="${CMD} TEXT('XML tool') REPLACE(*YES)"
+        system "${CMD}"
+fi
+
+
+#       Compile and link program xmlcatalog.
+
+if action_needed "${LIBIFSNAME}/XMLCATALOG.PGM" "xmlcatalog.c" ||
+   action_needed "${LIBIFSNAME}/XMLCATALOG.PGM"                         \
+                 "${LIBIFSNAME}/${SRVPGM}.SRVPGM" ||
+   action_needed "${LIBIFSNAME}/XMLCATALOG.PGM"                         \
+                 "${LIBIFSNAME}/LIBXMLMAIN.MODULE"
+then    make_module XMLCATALOG xmlcatalog.c
+        CMD="CRTPGM PGM(${TARGETLIB}/XMLCATALOG)"
+        CMD="${CMD}  MODULE(${TARGETLIB}/XMLCATALOG)"
+        CMD="${CMD} ENTMOD(${TARGETLIB}/LIBXMLMAIN)"
+        CMD="${CMD} BNDSRVPGM(QADRTTS) BNDDIR((${TARGETLIB}/${STATBNDDIR})"
+        if [ "${WITH_ZLIB}" -ne 0 ]
+        then    CMD="${CMD} (${ZLIB_LIB}/${ZLIB_BNDDIR})"
+        fi
+        CMD="${CMD}) ACTGRP(*NEW) TEXT('XML/SGML catalog tool')"
+        CMD="${CMD} TGTRLS(${TGTRLS})"
+        system "${CMD}"
+        rm -f "${LIBIFSNAME}/XMLCATALOG.MODULE"
+fi
+
+#       Install xmlcatalog in IFS.
+
+rm -f "${IFSDIR}/bin/xmlcatalog"
+ln -s "${LIBIFSNAME}/XMLCATALOG.PGM" "${IFSDIR}/bin/xmlcatalog"
+
+#       Prepare the XMLCATALOG command and its response program.
+
+if action_needed "${LIBIFSNAME}/XMLCATLGCL.PGM" "${SCRIPTDIR}/xmlcatlgcl.c"
+then    make_module --ebcdic XMLCATLGCL "${SCRIPTDIR}/xmlcatlgcl.c"
+        CMD="CRTPGM PGM(${TARGETLIB}/XMLCATLGCL)"
+        CMD="${CMD} MODULE(${TARGETLIB}/XMLCATLGCL)"
+        CMD="${CMD} ACTGRP(*NEW) TEXT('XMLCATALOG command response')"
+        CMD="${CMD} TGTRLS(${TGTRLS})"
+        system "${CMD}"
+        rm -f "${LIBIFSNAME}/XMLCATLGCL.MODULE"
+fi
+
+if action_needed "${LIBIFSNAME}/TOOLS.FILE/XMLCATALOG.MBR"              \
+                 "${SCRIPTDIR}/xmlcatalog.cmd"
+then    CMD="CPY OBJ('${SCRIPTDIR}/xmlcatalog.cmd')"
+        CMD="${CMD} TOOBJ('${LIBIFSNAME}/TOOLS.FILE/XMLCATALOG.MBR')"
+        CMD="${CMD} TOCCSID(${TGTCCSID}) DTAFMT(*TEXT) REPLACE(*YES)"
+        system "${CMD}"
+fi
+
+if action_needed "${LIBIFSNAME}/XMLCATALOG.CMD"                         \
+                 "${LIBIFSNAME}/TOOLS.FILE/XMLCATALOG.MBR"
+then    CMD="CRTCMD CMD(${TARGETLIB}/XMLCATALOG) PGM(${TARGETLIB}/XMLCATLGCL)"
+        CMD="${CMD} SRCFILE(${TARGETLIB}/TOOLS) SRCMBR(XMLCATALOG)"
+        CMD="${CMD} THDSAFE(*YES) TEXT('XML/SGML catalog tool') REPLACE(*YES)"
+        system "${CMD}"
+fi
diff --git a/os400/rpgsupport.c b/os400/rpgsupport.c
index a3609c0..ad4cc5d 100644
--- a/os400/rpgsupport.c
+++ b/os400/rpgsupport.c
@@ -219,7 +219,7 @@
 __xmlXPathNodeSetGetLength(const xmlNodeSet * ns)
 
 {
-	return xmlXPathNodeSetGetLength(ns);
+        return xmlXPathNodeSetGetLength(ns);
 }
 
 
@@ -227,7 +227,7 @@
 __xmlXPathNodeSetItem(const xmlNodeSet * ns, int index)
 
 {
-	return xmlXPathNodeSetItem(ns, index);
+        return xmlXPathNodeSetItem(ns, index);
 }
 
 
@@ -235,7 +235,7 @@
 __xmlXPathNodeSetIsEmpty(const xmlNodeSet * ns)
 
 {
-	return xmlXPathNodeSetIsEmpty(ns);
+        return xmlXPathNodeSetIsEmpty(ns);
 }
 
 #endif
@@ -247,16 +247,16 @@
 __htmlDefaultSubelement(const htmlElemDesc * elt)
 
 {
-	return htmlDefaultSubelement(elt);
+        return htmlDefaultSubelement(elt);
 }
 
 
 int
 __htmlElementAllowedHereDesc(const htmlElemDesc * parent,
-						const htmlElemDesc * elt)
+                                                const htmlElemDesc * elt)
 
 {
-	return htmlElementAllowedHereDesc(parent, elt);
+        return htmlElementAllowedHereDesc(parent, elt);
 }
 
 
@@ -264,7 +264,7 @@
 __htmlRequiredAttrs(const htmlElemDesc * elt)
 
 {
-	return htmlRequiredAttrs(elt);
+        return htmlRequiredAttrs(elt);
 }
 
 #endif
diff --git a/os400/rpgsupport.h b/os400/rpgsupport.h
index 6725b59..d8016d7 100644
--- a/os400/rpgsupport.h
+++ b/os400/rpgsupport.h
@@ -141,17 +141,17 @@
 XMLPUBFUN void          __xmlVaEnd(char * * list);
 
 #ifdef LIBXML_XPATH_ENABLED
-XMLPUBFUN int		__xmlXPathNodeSetGetLength(xmlNodeSetPtr ns);
-XMLPUBFUN xmlNodePtr	__xmlXPathNodeSetItem(xmlNodeSetPtr ns, int index);
-XMLPUBFUN int		__xmlXPathNodeSetIsEmpty(xmlNodeSetPtr ns);
+XMLPUBFUN int           __xmlXPathNodeSetGetLength(xmlNodeSetPtr ns);
+XMLPUBFUN xmlNodePtr    __xmlXPathNodeSetItem(xmlNodeSetPtr ns, int index);
+XMLPUBFUN int           __xmlXPathNodeSetIsEmpty(xmlNodeSetPtr ns);
 #endif
 
 #ifdef LIBXML_HTML_ENABLED
-XMLPUBFUN const char *	__htmlDefaultSubelement(const htmlElemDesc * elt);
-XMLPUBFUN int	__htmlElementAllowedHereDesc(const htmlElemDesc * parent,
-			const htmlElemDesc * elt);
+XMLPUBFUN const char *  __htmlDefaultSubelement(const htmlElemDesc * elt);
+XMLPUBFUN int   __htmlElementAllowedHereDesc(const htmlElemDesc * parent,
+                        const htmlElemDesc * elt);
 XMLPUBFUN const char * *
-			__htmlRequiredAttrs(const htmlElemDesc * elt);
+                        __htmlRequiredAttrs(const htmlElemDesc * elt);
 #endif
 
 #endif
diff --git a/os400/xmlcatalog.cmd b/os400/xmlcatalog.cmd
new file mode 100644
index 0000000..92f0270
--- /dev/null
+++ b/os400/xmlcatalog.cmd
@@ -0,0 +1,112 @@
+/*      XMLCATALOG CL command.                                                */
+/*                                                                            */
+/*      See Copyright for the status of this software.                        */
+/*                                                                            */
+/*      Author: Patrick Monnerat <pm@datasphere.ch>, DATASPHERE S.A.          */
+
+/*      Interface to program XMLCATLGCL                                       */
+
+             CMD        PROMPT('XML/SGML catalog  tool')
+
+             /* Catalog file path. */
+
+             PARM       KWD(INSTMF) TYPE(*PNAME) LEN(5000) VARY(*YES *INT2)    +
+                          CASE(*MIXED) EXPR(*YES) MIN(1) SPCVAL((*NEW ''))     +
+                          CHOICE('Stream file path')                           +
+                          PROMPT('XML/SGML catalog file')
+
+             /* Catalog kind: XML/SGML. */
+
+             PARM       KWD(KIND) TYPE(*CHAR) LEN(7) VARY(*YES *INT2)          +
+                          EXPR(*YES) RSTD(*YES) DFT(*XML)                      +
+                          SPCVAL((*XML '') (*SGML '--sgml'))                   +
+                          PROMPT('Catalog kind')
+
+             /* Output file. */
+
+             PARM       KWD(OUTSTMF) TYPE(*PNAME) LEN(5000) VARY(*YES *INT2)   +
+                          CASE(*MIXED) EXPR(*YES) DFT(*STDOUT)                 +
+                          SPCVAL((*STDOUT '') (*INSTMF X'00'))                 +
+                          CHOICE('*STDOUT, *INSTMF or file path')              +
+                          PROMPT('Output stream file path')
+
+             /* Convert SGML to XML catalog. */
+
+             PARM       KWD(CONVERT) TYPE(*CHAR) LEN(10) VARY(*YES *INT2)      +
+                          RSTD(*YES) SPCVAL((*YES '--convert') (*NO ''))       +
+                          EXPR(*YES) DFT(*NO) PMTCTL(TYPEXML)                  +
+                          PROMPT('Convert SGML to XML catalog')
+
+             /* SGML super catalog update. */
+
+             PARM       KWD(SUPERUPD) TYPE(*CHAR) LEN(17) VARY(*YES *INT2)     +
+                          SPCVAL((*YES '') (*NO '--no-super-update'))          +
+                          EXPR(*YES) DFT(*YES) RSTD(*YES) PMTCTL(TYPESGML)     +
+                          PROMPT('Update the SGML super catalog')
+
+             /* Verbose/debug output. */
+
+             PARM       KWD(VERBOSE) TYPE(*CHAR) LEN(4) VARY(*YES *INT2)       +
+                          RSTD(*YES) SPCVAL((*YES '-v') (*NO ''))              +
+                          EXPR(*YES) DFT(*NO)                                  +
+                          PROMPT('Output debugging information')
+
+             /* Interactive shell not supported. */
+
+             /* Values to delete. */
+
+             PARM       KWD(DELETE) TYPE(*PNAME) LEN(256) VARY(*YES *INT2)     +
+                          CASE(*MIXED) MAX(64) EXPR(*YES)                      +
+                          CHOICE('Identifier value')                           +
+                          PROMPT('Delete System/URI identifier')
+
+             /* Values to add. */
+
+             PARM       KWD(ADD) TYPE(XMLELEM) MAX(10) PMTCTL(TYPEXML)         +
+                          PROMPT('Add definition')
+XMLELEM:     ELEM       TYPE(*CHAR) LEN(16) VARY(*YES *INT2) DFT(*PUBLIC)      +
+                          PROMPT('Entry type')                                 +
+                          EXPR(*YES) RSTD(*YES) SPCVAL(                        +
+                            (*PUBLIC         'public')                         +
+                            (*SYSTEM         'system')                         +
+                            (*URI            'uri')                            +
+                            (*REWRITESYSTEM  'rewriteSystem')                  +
+                            (*REWRITEURI     'rewriteURI')                     +
+                            (*DELEGATEPUBLIC 'delegatePublic')                 +
+                            (*DELEGATESYSTEM 'delegateSystem')                 +
+                            (*DELEGATEURI    'delegateURI')                    +
+                            (*NEXTCATALOG    'nextCatalog')                    +
+                          )
+             ELEM       TYPE(*PNAME) LEN(256) VARY(*YES *INT2) EXPR(*YES)      +
+                          CASE(*MIXED) PROMPT('Original reference/file name')
+             ELEM       TYPE(*PNAME) LEN(256) VARY(*YES *INT2) EXPR(*YES)      +
+                          CASE(*MIXED) PROMPT('Replacement entity URI')
+
+             PARM       KWD(SGMLADD) TYPE(SGMLELEM) MAX(10)                    +
+                          PMTCTL(TYPESGML) PROMPT('Add SGML definition')
+SGMLELEM:    ELEM       TYPE(*PNAME) LEN(256) VARY(*YES *INT2) EXPR(*YES)      +
+                          CASE(*MIXED) PROMPT('SGML catalog file name')
+             ELEM       TYPE(*PNAME) LEN(256) VARY(*YES *INT2) EXPR(*YES)      +
+                          CASE(*MIXED) PROMPT('SGML definition')
+
+             /* Entities to resolve. */
+
+             PARM       KWD(ENTITY) TYPE(*PNAME) LEN(256) VARY(*YES *INT2)     +
+                          CASE(*MIXED) EXPR(*YES) MAX(150)                     +
+                          PROMPT('Resolve entity')
+
+             /* Additional catalog files. */
+
+             PARM       KWD(CATALOG) TYPE(*PNAME) LEN(5000) VARY(*YES *INT2)   +
+                          CASE(*MIXED) EXPR(*YES) MAX(150) DFT(*DEFAULT)       +
+                          CHOICE('Catalog stream file path')                   +
+                          PROMPT('Additional catalog file') SPCVAL(            +
+                            (*DEFAULT       '/etc/xml/catalog')                +
+                            (*NONE          '')                                +
+                          )
+
+
+             /* Conditional prompting. */
+
+TYPEXML:     PMTCTL     CTL(KIND) COND((*EQ ''))
+TYPESGML:    PMTCTL     CTL(KIND) COND((*NE ''))
diff --git a/os400/xmlcatlgcl.c b/os400/xmlcatlgcl.c
new file mode 100644
index 0000000..6f1e4ff
--- /dev/null
+++ b/os400/xmlcatlgcl.c
@@ -0,0 +1,288 @@
+/**
+***     XMLCATALOG command response program.
+***
+***     See Copyright for the status of this software.
+***
+***     Author: Patrick Monnerat <pm@datasphere.ch>, DATASPHERE S.A.
+**/
+
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#include <qshell.h>
+
+
+/* Variable-length string, with 16-bit length. */
+typedef struct {
+        short           len;
+        char            string[5000];
+}               vary2;
+
+
+/* Variable-length string, with 32-bit length. */
+typedef struct {
+        int             len;
+        char            string[5000];
+}               vary4;
+
+
+/* Multiple occurrence parameter list. */
+#define paramlist(itemsize, itemtype)                                   \
+        _Packed struct {                                                \
+                short           len;                                    \
+                _Packed union {                                         \
+                         char           _pad[itemsize];                 \
+                        itemtype        param;                          \
+                }               item[1];                                \
+        }
+
+/* Add element list structure. */
+typedef struct {
+        short           elcount;        /* Element count (=3). */
+        paramlist(16, char) type;       /* vary2(16). */
+        paramlist(256, char) origin;    /* vary2(256). */
+        paramlist(256, char) replace;   /* vary2(256). */
+}               addelement;
+
+/* SGML add element list structure. */
+typedef struct {
+        short           elcount;        /* Element count (=3). */
+        paramlist(256, char) catalog;   /* vary2(256). */
+        paramlist(256, char) ident;     /* vary2(256). */
+}               sgmladdelement;
+
+
+/* Arguments from CL command. */
+typedef struct {
+        char *          pgm;            /* Program name. */
+        vary2 *         instmf;         /* Input catalog file name. */
+        vary2 *         kind;           /* Catalog kind. */
+        vary2 *         outstmf;        /* Output catalog file name. */
+        vary2 *         convert;        /* Convert SGML to XML. */
+        vary2 *         superupd;       /* --no-super-update. */
+        vary2 *         verbose;        /* Verbose output. */
+        paramlist(256 + 2, vary2) * delete; /* Identifiers to delete. */
+        paramlist(2, unsigned short) * add; /* Items to add. */
+        paramlist(2, unsigned short) * sgmladd; /* SGML items to add. */
+        paramlist(256 + 2, vary2) * resolve; /* Identifiers to resolve. */
+        paramlist(5000 + 2, vary2) * catalog; /* Additional catalog files. */
+}               arguments;
+
+
+/* Definition of QSHELL program. */
+extern void     qshell(vary4 * cmd);
+#pragma linkage(qshell, OS)
+#pragma map(qshell, "QSHELL/QZSHQSHC")
+
+/* Macro to handle displacements. */
+#define OFFSETBY(t, p, n)       ((t *) (((char *) (p)) + (n)))
+
+
+static void
+vary4nappend(vary4 * dst, const char * src, size_t len)
+
+{
+        if (len > sizeof(dst->string) - dst->len)
+                len = sizeof(dst->string) - dst->len;
+
+        if (len) {
+                memcpy(dst->string + dst->len, src, len);
+                dst->len += len;
+                }
+}
+
+
+static void
+vary4append(vary4 * dst, const char * src)
+
+{
+        vary4nappend(dst, src, strlen(src));
+}
+
+
+static void
+vary4arg(vary4 * dst, const char * arg)
+
+{
+        vary4nappend(dst, " ", 1);
+        vary4append(dst, arg);
+}
+
+
+static void
+vary4varg(vary4 * dst, vary2 * arg)
+
+{
+        vary4nappend(dst, " ", 1);
+        vary4nappend(dst, arg->string, arg->len);
+}
+
+
+static void
+vary4vescape(vary4 * dst, vary2 * arg)
+
+{
+        int i;
+
+        for (i = 0; i < arg->len; i++)
+                if (arg->string[i] == '\'')
+                        vary4nappend(dst, "'\"'\"'", 5);
+                else
+                        vary4nappend(dst, arg->string + i, 1);
+}
+
+
+static void
+vary4vargquote(vary4 * dst, vary2 * arg)
+
+{
+        vary4nappend(dst, " '", 2);
+        vary4vescape(dst, arg);
+        vary4nappend(dst, "'", 1);
+}
+
+
+int
+main(int argsc, arguments * args)
+
+{
+        vary4 cmd;
+        int i;
+        char c;
+        addelement * aelp;
+        sgmladdelement * saelp;
+
+        /* Specify additional catalogs. */
+        cmd.len = 0;
+        if (args->catalog->len) {
+                for (i = 0; i < args->catalog->len &&
+                            !args->catalog->item[i].param.len; i++)
+                        ;
+
+                vary4append(&cmd, "XML_CATALOG_FILES=");
+                if (i < args->catalog->len) {
+                        c = '\'';
+                        for (i = 0; i < args->catalog->len; i++) {
+                                if (!args->catalog->item[i].param.len)
+                                        continue;
+                                vary4nappend(&cmd, &c, 1);
+                                c = ' ';
+                                vary4vescape(&cmd,
+                                            &args->catalog->item[i].param);
+                                }
+                        vary4nappend(&cmd, "'", 1);
+                        }
+                vary4nappend(&cmd, " ", 1);
+                }
+
+        /* find length of library name. */
+        for (i = 0; i < 10 && args->pgm[i] && args->pgm[i] != '/'; i++)
+                ;
+
+        /* Store program name in command buffer. */
+        vary4append(&cmd, "/QSYS.LIB/");
+        vary4nappend(&cmd, args->pgm, i);
+        vary4append(&cmd, ".LIB/XMLCATALOG.PGM");
+
+        /* Map command arguments to standard xmlcatalog argument vector. */
+        if (args->kind && args->kind->len)
+                vary4varg(&cmd, args->kind);
+
+        if (args->verbose && args->verbose->len)
+                vary4varg(&cmd, args->verbose);
+
+        if (args->delete)
+                for (i = 0; i < args->delete->len; i++) {
+                        vary4arg(&cmd, "--del");
+                        vary4vargquote(&cmd, &args->delete->item[i].param);
+                        }
+
+        if (args->kind && args->kind->len) {
+                /* Process SGML-specific parameters. */
+                if (args->superupd && args->superupd->len)
+                        vary4varg(&cmd, args->superupd);
+
+                if (args->sgmladd)
+                        for (i = 0; i < args->sgmladd->len; i++) {
+                                saelp = OFFSETBY(sgmladdelement, args->sgmladd,
+                                                args->sgmladd->item[i].param);
+                                if (!((vary2 *) &saelp->catalog)->len)
+                                        continue;
+                                vary4arg(&cmd, "--add");
+                                vary4vargquote(&cmd, (vary2 *) &saelp->catalog);
+                                vary4vargquote(&cmd, (vary2 *) &saelp->ident);
+                                }
+                }
+        else {
+                /* Process XML-specific parameters. */
+                if (args->convert && args->convert->len)
+                        vary4varg(&cmd, args->convert);
+
+                if (args->add)
+                        for (i = 0; i < args->add->len; i++) {
+                                aelp = OFFSETBY(addelement, args->add,
+                                                args->add->item[i].param);
+                                if (!((vary2 *) &aelp->origin)->len)
+                                        continue;
+                                vary4arg(&cmd, "--add");
+                                vary4varg(&cmd, (vary2 *) &aelp->type);
+                                vary4vargquote(&cmd, (vary2 *) &aelp->origin);
+                                vary4vargquote(&cmd, (vary2 *) &aelp->replace);
+                                }
+                }
+
+        /* Avoid INSTMF(*NEW) and OUTSMTF(*INSTMF). */
+        if (args->outstmf && args->outstmf->len && !args->outstmf->string[0])
+                if (args->instmf && args->instmf->len)
+                        args->outstmf = args->instmf;
+                else
+                        args->outstmf = NULL;
+
+        /* If INSTMF(*NEW) and OUTSTMF(somepath), Use --create --noout and
+           somepath as (unexisting) input file. */
+        if (args->outstmf && args->outstmf->len)
+                if (!args->instmf || !args->instmf->len) {
+                        vary4arg(&cmd, "--create");
+                        vary4arg(&cmd, "--noout");
+                        args->instmf = args->outstmf;
+                        args->outstmf = NULL;
+                        }
+
+        /* If output to input file, use --noout option. */
+        if (args->instmf && args->outstmf && args->instmf->len &&
+            args->instmf->len == args->outstmf->len &&
+            !strncmp(args->instmf->string, args->outstmf->string,
+                     args->instmf->len)) {
+                vary4arg(&cmd, "--noout");
+                args->outstmf = NULL;
+                }
+
+        /* If no input file create catalog, else specify the input file name. */
+        /* Specify the input file name: my be a dummy one. */
+        if (!args->instmf || !args->instmf->len) {
+                vary4arg(&cmd, "--create -");
+                vary4arg(&cmd, ".dmyxmlcatalog");
+                }
+        else {
+                vary4arg(&cmd, "-");
+                vary4vargquote(&cmd, args->instmf);
+                }
+
+        /* Query entities. */
+
+        if (args->resolve)
+                for (i = 0; i < args->resolve->len; i++)
+                        vary4vargquote(&cmd, &args->resolve->item[i].param);
+
+        /* Redirect output if requested. */
+        if (args->outstmf && args->outstmf->len) {
+                vary4arg(&cmd, ">");
+                vary4vargquote(&cmd, args->outstmf);
+                }
+
+        /* Execute the shell command. */
+        qshell(&cmd);
+
+        /* Terminate. */
+        exit(0);
+}
diff --git a/os400/xmllint.cmd b/os400/xmllint.cmd
new file mode 100644
index 0000000..1582837
--- /dev/null
+++ b/os400/xmllint.cmd
@@ -0,0 +1,146 @@
+/*      XMLLINT CL command.                                                   */
+/*                                                                            */
+/*      See Copyright for the status of this software.                        */
+/*                                                                            */
+/*      Author: Patrick Monnerat <pm@datasphere.ch>, DATASPHERE S.A.          */
+
+/*      Interface to program XMLLINTCL                                        */
+
+             CMD        PROMPT('XML tool')
+
+             /* XML input file location. */
+
+             PARM       KWD(STMF) TYPE(*PNAME) LEN(5000) VARY(*YES *INT2)      +
+                          CASE(*MIXED) EXPR(*YES) MIN(1)                       +
+                          CHOICE('Stream file path')                           +
+                          PROMPT('XML Stream file')
+
+             /* DTD location. */
+
+             PARM       KWD(DTD) TYPE(*PNAME) LEN(5000) VARY(*YES *INT2)       +
+                          CASE(*MIXED) EXPR(*YES) PASSVAL(*NULL)               +
+                          CHOICE('ID, URL or stream file path')                +
+                          PROMPT('DTD id, URL or file path')
+
+             PARM       KWD(DTDLOCATOR) TYPE(*CHAR) LEN(8) DFT(*DTDURL)        +
+                          SPCVAL(*DTDURL *DTDFPI) EXPR(*YES) RSTD(*YES)        +
+                          PROMPT('DTD locator is URL/FPI')
+
+             /* Schema location. */
+
+             PARM       KWD(SCHEMA) TYPE(*PNAME) LEN(5000) VARY(*YES *INT2)    +
+                          CASE(*MIXED) EXPR(*YES) PASSVAL(*NULL)               +
+                          CHOICE('URL or stream file path')                    +
+                          PROMPT('Schema URL or stream file path')
+
+             PARM       KWD(SCHEMAKIND) TYPE(*CHAR) LEN(12) VARY(*YES *INT2)   +
+                          RSTD(*YES) DFT(*XSD)                                 +
+                          PROMPT('Validating schema kind')                     +
+                          CHOICE('Keyword') SPCVAL(                            +
+                            (*XSD               '--schema')                    +
+                            (*RELAXNG           '--relaxng')                   +
+                            (*SCHEMATRON        '--schematron')                +
+                          )
+
+             /* Output location. */
+
+             PARM       KWD(OUTSTMF) TYPE(*PNAME) LEN(5000) VARY(*YES *INT2)   +
+                          CASE(*MIXED) EXPR(*YES) PASSVAL(*NULL)               +
+                          CHOICE('Stream file path')                           +
+                          PROMPT('Output stream file path')
+
+             /* Other parameters with arguments. */
+
+             PARM       KWD(XPATH) TYPE(*CHAR) LEN(5000) VARY(*YES *INT2)      +
+                          CASE(*MIXED) EXPR(*YES) PASSVAL(*NULL)               +
+                          CHOICE('XPath expression')                           +
+                          PROMPT('XPath filter')
+
+             PARM       KWD(PATTERN) TYPE(*CHAR) LEN(5000) VARY(*YES *INT2)    +
+                          CASE(*MIXED) EXPR(*YES) PASSVAL(*NULL)               +
+                          CHOICE('Reader pattern')                             +
+                          PROMPT('Reader node filter')
+
+             /* Paths for resources. */
+
+             PARM       KWD(PATH) TYPE(*PNAME) LEN(5000) VARY(*YES *INT2)      +
+                          CASE(*MIXED) EXPR(*YES) MAX(64)                      +
+                          CHOICE('IFS directory path')                         +
+                          PROMPT('Path for resources')
+
+             PARM       KWD(PRETTY) TYPE(*CHAR) LEN(11) VARY(*YES *INT2)       +
+                          RSTD(*YES) DFT(*NONE)                                +
+                          PROMPT('Pretty-print style')                         +
+                          CHOICE('Keyword') SPCVAL(                            +
+                            (*NONE              '0')                           +
+                            (*FORMAT            '1')                           +
+                            (*WHITESPACE        '2')                           +
+                          )
+
+             PARM       KWD(MAXMEM) TYPE(*UINT4) EXPR(*YES) DFT(0)             +
+                          CHOICE('Number of bytes')                            +
+                          PROMPT('Maximum dynamic memory')
+
+             PARM       KWD(ENCODING) TYPE(*CHAR) LEN(32) VARY(*YES *INT2)     +
+                          CASE(*MIXED) EXPR(*YES) PASSVAL(*NULL)               +
+                          PMTCTL(ENCODING) CHOICE('Encoding name')             +
+                          PROMPT('Output character encoding')
+ENCODING:    PMTCTL     CTL(OUTSTMF) COND(*SPCFD)
+
+             /* Boolean options. */
+             /* --shell is not supported from command mode. */
+
+             PARM       KWD(OPTIONS) TYPE(*CHAR) LEN(20) VARY(*YES *INT2)      +
+                          MAX(50) RSTD(*YES) PROMPT('Options')                 +
+                          CHOICE('Keyword') SPCVAL(                            +
+                            (*VERSION         '--version')                     +
+                            (*DEBUG           '--debug')                       +
+                            (*DEBUGENT        '--debugent')                    +
+                            (*COPY            '--copy')                        +
+                            (*RECOVER         '--recover')                     +
+                            (*HUGE            '--huge')                        +
+                            (*NOENT           '--noent')                       +
+                            (*NOENC           '--noenc')                       +
+                            (*NOOUT           '--noout')                       +
+                            (*LOADTRACE       '--load-trace')                  +
+                            (*NONET           '--nonet')                       +
+                            (*NOCOMPACT       '--nocompact')                   +
+                            (*HTMLOUT         '--htmlout')                     +
+                            (*NOWRAP          '--nowrap')                      +
+                            (*VALID           '--valid')                       +
+                            (*POSTVALID       '--postvalid')                   +
+                            (*TIMING          '--timing')                      +
+                            (*REPEAT          '--repeat')                      +
+                            (*INSERT          '--insert')                      +
+                            (*COMPRESS        '--compress')                    +
+                            (*HTML            '--html')                        +
+                            (*XMLOUT          '--xmlout')                      +
+                            (*NODEFDTD        '--nodefdtd')                    +
+                            (*PUSH            '--push')                        +
+                            (*PUSHSMALL       '--pushsmall')                   +
+                            (*MEMORY          '--memory')                      +
+                            (*NOWARNING       '--nowarning')                   +
+                            (*NOBLANKS        '--noblanks')                    +
+                            (*NOCDATA         '--nocdata')                     +
+                            (*FORMAT          '--format')                      +
+                            (*DROPDTD         '--dropdtd')                     +
+                            (*NSCLEAN         '--nsclean')                     +
+                            (*TESTIO          '--testIO')                      +
+                            (*CATALOGS        '--catalogs')                    +
+                            (*NOCATALOGS      '--nocatalogs')                  +
+                            (*AUTO            '--auto')                        +
+                            (*XINCLUDE        '--xinclude')                    +
+                            (*NOXINCLUDENODE  '--noxincludenode')              +
+                            (*NOFIXUPBASEURIS '--nofixup-base-uris')           +
+                            (*LOADDTD         '--loaddtd')                     +
+                            (*DTDATTR         '--dtdattr')                     +
+                            (*STREAM          '--stream')                      +
+                            (*WALKER          '--walker')                      +
+                            (*CHKREGISTER     '--chkregister')                 +
+                            (*C14N            '--c14n')                        +
+                            (*C14N11          '--c14n11')                      +
+                            (*EXCC14N         '--exc-c14n')                    +
+                            (*SAX1            '--sax1')                        +
+                            (*SAX             '--sax')                         +
+                            (*OLDXML10        '--oldxml10')                    +
+                          )
diff --git a/os400/xmllintcl.c b/os400/xmllintcl.c
new file mode 100644
index 0000000..1226385
--- /dev/null
+++ b/os400/xmllintcl.c
@@ -0,0 +1,216 @@
+/**
+***     XMLLINT command response program.
+***
+***     See Copyright for the status of this software.
+***
+***     Author: Patrick Monnerat <pm@datasphere.ch>, DATASPHERE S.A.
+**/
+
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#include <qshell.h>
+
+
+/* Variable-length string, with 16-bit length. */
+typedef struct {
+        short           len;
+        char            string[5000];
+}               vary2;
+
+
+/* Variable-length string, with 32-bit length. */
+typedef struct {
+        int             len;
+        char            string[5000];
+}               vary4;
+
+
+/* Multiple occurrence parameter list. */
+#define paramlist(itemsize, itemtype)                                   \
+        _Packed struct {                                                \
+                short           len;                                    \
+                union {                                                 \
+                         char           _pad[itemsize];                 \
+                        itemtype        param;                          \
+                }               item[1];                                \
+        }
+
+
+/* Arguments from CL command. */
+typedef struct {
+        char *          pgm;            /* Program name. */
+        vary2 *         stmf;           /* XML file name or URL. */
+        vary2 *         dtd;            /* DTD location or public identifier. */
+        char *          dtdvalid;       /* *DTDURL or *DTDFPI. */
+        vary2 *         schema;         /* Schema file name or URL. */
+        vary2 *         schemakind;     /* --schema/--relaxng/--schematron. */
+        vary2 *         outstmf;        /* Output stream file name. */
+        vary2 *         xpath;          /* XPath filter. */
+        vary2 *         pattern;        /* Reader filter pattern. */
+        paramlist(5000 + 2, vary2) * path; /* Path for resources. */
+        vary2 *         pretty;         /* Pretty-print style. */
+        unsigned long * maxmem;         /* Maximum dynamic memory. */
+        vary2 *         encoding;       /* Output encoding. */
+        paramlist(20 + 2, vary2) * options; /* Other options. */
+}               arguments;
+
+
+/* Definition of QSHELL program. */
+extern void     qshell(vary4 * cmd);
+#pragma linkage(qshell, OS)
+#pragma map(qshell, "QSHELL/QZSHQSHC")
+
+
+static void
+vary4nappend(vary4 * dst, const char * src, size_t len)
+
+{
+        if (len > sizeof(dst->string) - dst->len)
+                len = sizeof(dst->string) - dst->len;
+
+        if (len) {
+                memcpy(dst->string + dst->len, src, len);
+                dst->len += len;
+                }
+}
+
+
+static void
+vary4append(vary4 * dst, const char * src)
+
+{
+        vary4nappend(dst, src, strlen(src));
+}
+
+
+static void
+vary4arg(vary4 * dst, const char * arg)
+
+{
+        vary4nappend(dst, " ", 1);
+        vary4append(dst, arg);
+}
+
+
+static void
+vary4varg(vary4 * dst, vary2 * arg)
+
+{
+        vary4nappend(dst, " ", 1);
+        vary4nappend(dst, arg->string, arg->len);
+}
+
+
+static void
+vary4vescape(vary4 * dst, vary2 * arg)
+
+{
+        int i;
+
+        for (i = 0; i < arg->len; i++)
+                if (arg->string[i] == '\'')
+                        vary4nappend(dst, "'\"'\"'", 5);
+                else
+                        vary4nappend(dst, arg->string + i, 1);
+}
+
+
+static void
+vary4vargquote(vary4 * dst, vary2 * arg)
+
+{
+        vary4nappend(dst, " '", 2);
+        vary4vescape(dst, arg);
+        vary4nappend(dst, "'", 1);
+}
+
+
+int
+main(int argsc, arguments * args)
+
+{
+        vary4 cmd;
+        int i;
+        char textbuf[20];
+        char * lang;
+
+        /* find length of library name. */
+        for (i = 0; i < 10 && args->pgm[i] && args->pgm[i] != '/'; i++)
+                ;
+
+        /* Store program name in command buffer. */
+        cmd.len = 0;
+        vary4append(&cmd, "/QSYS.LIB/");
+        vary4nappend(&cmd, args->pgm, i);
+        vary4append(&cmd, ".LIB/XMLLINT.PGM");
+
+        /* Map command arguments to standard xmllint argument vector. */
+
+        if (args->dtd && args->dtd->len) {
+                if (args->dtdvalid && args->dtdvalid[4] == 'F')
+                        vary4arg(&cmd, "--dtdvalidfpi");
+                else
+                        vary4arg(&cmd, "--dtdvalid");
+
+                vary4vargquote(&cmd, args->dtd);
+                }
+
+        if (args->schema && args->schema->len) {
+                vary4varg(&cmd, args->schemakind);
+                vary4vargquote(&cmd, args->schema);
+                }
+
+        if (args->outstmf && args->outstmf->len) {
+                vary4arg(&cmd, "--output");
+                vary4vargquote(&cmd, args->outstmf);
+
+                if (args->encoding && args->encoding->len) {
+                        vary4arg(&cmd, "--encoding");
+                        vary4vargquote(&cmd, args->encoding);
+                        }
+                }
+
+        if (args->xpath && args->xpath->len) {
+                vary4arg(&cmd, "--xpath");
+                vary4vargquote(&cmd, args->xpath);
+                }
+
+        if (args->pattern && args->pattern->len) {
+                vary4arg(&cmd, "--pattern");
+                vary4vargquote(&cmd, args->pattern);
+                }
+
+        if (args->path && args->path->len) {
+                vary4arg(&cmd, "--path '");
+                vary4vescape(&cmd, &args->path->item[0].param);
+                for (i = 1; i < args->path->len; i++) {
+                        vary4nappend(&cmd, ":", 1);
+                        vary4vescape(&cmd, &args->path->item[i].param);
+                        }
+                vary4nappend(&cmd, "'", 1);
+                }
+
+        if (args->pretty && args->pretty->len &&
+            args->pretty->string[0] != '0') {
+                vary4arg(&cmd, "--pretty");
+                vary4varg(&cmd, args->pretty);
+                }
+
+        if (args->maxmem && *args->maxmem) {
+                snprintf(textbuf, sizeof textbuf, "%lu", *args->maxmem);
+                vary4arg(&cmd, "--maxmem");
+                vary4arg(&cmd, textbuf);
+                }
+
+        for (i = 0; i < args->options->len; i++)
+                vary4varg(&cmd, &args->options->item[i].param);
+
+        vary4vargquote(&cmd, args->stmf);
+
+        /* Execute the shell command. */
+        qshell(&cmd);
+
+        /* Terminate. */
+        exit(0);
+}
diff --git a/parser.c b/parser.c
index c5741e3..53a6b7f 100644
--- a/parser.c
+++ b/parser.c
@@ -138,14 +138,20 @@
      * entities problems
      */
     if ((ent != NULL) && (ent->etype != XML_INTERNAL_PREDEFINED_ENTITY) &&
-	(ent->content != NULL) && (ent->checked == 0)) {
+	(ent->content != NULL) && (ent->checked == 0) &&
+	(ctxt->errNo != XML_ERR_ENTITY_LOOP)) {
 	unsigned long oldnbent = ctxt->nbentities;
 	xmlChar *rep;
 
 	ent->checked = 1;
 
+        ++ctxt->depth;
 	rep = xmlStringDecodeEntities(ctxt, ent->content,
 				  XML_SUBSTITUTE_REF, 0, 0, 0);
+        --ctxt->depth;
+	if (ctxt->errNo == XML_ERR_ENTITY_LOOP) {
+	    ent->content[0] = 0;
+	}
 
 	ent->checked = (ctxt->nbentities - oldnbent + 1) * 2;
 	if (rep != NULL) {
@@ -344,7 +350,6 @@
 xmlFatalErr(xmlParserCtxtPtr ctxt, xmlParserErrors error, const char *info)
 {
     const char *errmsg;
-    char errstr[129] = "";
 
     if ((ctxt != NULL) && (ctxt->disableSAX != 0) &&
         (ctxt->instate == XML_PARSER_EOF))
@@ -531,15 +536,17 @@
         default:
             errmsg = "Unregistered error message";
     }
-    if (info == NULL)
-        snprintf(errstr, 128, "%s\n", errmsg);
-    else
-        snprintf(errstr, 128, "%s: %%s\n", errmsg);
     if (ctxt != NULL)
 	ctxt->errNo = error;
-    __xmlRaiseError(NULL, NULL, NULL, ctxt, NULL, XML_FROM_PARSER, error,
-                    XML_ERR_FATAL, NULL, 0, info, NULL, NULL, 0, 0, &errstr[0],
-                    info);
+    if (info == NULL) {
+        __xmlRaiseError(NULL, NULL, NULL, ctxt, NULL, XML_FROM_PARSER, error,
+                        XML_ERR_FATAL, NULL, 0, info, NULL, NULL, 0, 0, "%s\n",
+                        errmsg);
+    } else {
+        __xmlRaiseError(NULL, NULL, NULL, ctxt, NULL, XML_FROM_PARSER, error,
+                        XML_ERR_FATAL, NULL, 0, info, NULL, NULL, 0, 0, "%s: %s\n",
+                        errmsg, info);
+    }
     if (ctxt != NULL) {
 	ctxt->wellFormed = 0;
 	if (ctxt->recovery == 0)
@@ -555,7 +562,7 @@
  *
  * Handle a fatal parser error, i.e. violating Well-Formedness constraints
  */
-static void
+static void LIBXML_ATTR_FORMAT(3,0)
 xmlFatalErrMsg(xmlParserCtxtPtr ctxt, xmlParserErrors error,
                const char *msg)
 {
@@ -583,7 +590,7 @@
  *
  * Handle a warning.
  */
-static void
+static void LIBXML_ATTR_FORMAT(3,0)
 xmlWarningMsg(xmlParserCtxtPtr ctxt, xmlParserErrors error,
               const char *msg, const xmlChar *str1, const xmlChar *str2)
 {
@@ -621,7 +628,7 @@
  *
  * Handle a validity error.
  */
-static void
+static void LIBXML_ATTR_FORMAT(3,0)
 xmlValidityError(xmlParserCtxtPtr ctxt, xmlParserErrors error,
               const char *msg, const xmlChar *str1, const xmlChar *str2)
 {
@@ -661,7 +668,7 @@
  *
  * Handle a fatal parser error, i.e. violating Well-Formedness constraints
  */
-static void
+static void LIBXML_ATTR_FORMAT(3,0)
 xmlFatalErrMsgInt(xmlParserCtxtPtr ctxt, xmlParserErrors error,
                   const char *msg, int val)
 {
@@ -691,7 +698,7 @@
  *
  * Handle a fatal parser error, i.e. violating Well-Formedness constraints
  */
-static void
+static void LIBXML_ATTR_FORMAT(3,0)
 xmlFatalErrMsgStrIntStr(xmlParserCtxtPtr ctxt, xmlParserErrors error,
                   const char *msg, const xmlChar *str1, int val,
 		  const xmlChar *str2)
@@ -721,7 +728,7 @@
  *
  * Handle a fatal parser error, i.e. violating Well-Formedness constraints
  */
-static void
+static void LIBXML_ATTR_FORMAT(3,0)
 xmlFatalErrMsgStr(xmlParserCtxtPtr ctxt, xmlParserErrors error,
                   const char *msg, const xmlChar * val)
 {
@@ -750,7 +757,7 @@
  *
  * Handle a non fatal parser error
  */
-static void
+static void LIBXML_ATTR_FORMAT(3,0)
 xmlErrMsgStr(xmlParserCtxtPtr ctxt, xmlParserErrors error,
                   const char *msg, const xmlChar * val)
 {
@@ -775,7 +782,7 @@
  *
  * Handle a fatal parser error, i.e. violating Well-Formedness constraints
  */
-static void
+static void LIBXML_ATTR_FORMAT(3,0)
 xmlNsErr(xmlParserCtxtPtr ctxt, xmlParserErrors error,
          const char *msg,
          const xmlChar * info1, const xmlChar * info2,
@@ -804,7 +811,7 @@
  *
  * Handle a namespace warning error
  */
-static void
+static void LIBXML_ATTR_FORMAT(3,0)
 xmlNsWarn(xmlParserCtxtPtr ctxt, xmlParserErrors error,
          const char *msg,
          const xmlChar * info1, const xmlChar * info2,
@@ -2008,6 +2015,7 @@
 #define CUR (*ctxt->input->cur)
 #define NXT(val) ctxt->input->cur[(val)]
 #define CUR_PTR ctxt->input->cur
+#define BASE_PTR ctxt->input->base
 
 #define CMP4( s, c1, c2, c3, c4 ) \
   ( ((unsigned char *) s)[ 0 ] == c1 && ((unsigned char *) s)[ 1 ] == c2 && \
@@ -2858,7 +2866,21 @@
 	        ctxt->nbentities += ent->checked / 2;
 	    if (ent != NULL) {
                 if (ent->content == NULL) {
-		    xmlLoadEntityContent(ctxt, ent);
+		    /*
+		     * Note: external parsed entities will not be loaded,
+		     * it is not required for a non-validating parser to
+		     * complete external PEreferences coming from the
+		     * internal subset
+		     */
+		    if (((ctxt->options & XML_PARSE_NOENT) != 0) ||
+			((ctxt->options & XML_PARSE_DTDVALID) != 0) ||
+			(ctxt->validate != 0)) {
+			xmlLoadEntityContent(ctxt, ent);
+		    } else {
+			xmlWarningMsg(ctxt, XML_ERR_ENTITY_PROCESSING,
+		  "not validating will not read content for PE entity %s\n",
+		                      ent->name, NULL);
+		    }
 		}
 		ctxt->depth++;
 		rep = xmlStringDecodeEntities(ctxt, ent->content, what,
@@ -3470,7 +3492,7 @@
     int len = 0, l;
     int c;
     int count = 0;
-    const xmlChar *end; /* needed because CUR_CHAR() can move cur on \r\n */
+    size_t startPosition = 0;
 
 #ifdef DEBUG
     nbParseNCNameComplex++;
@@ -3480,7 +3502,7 @@
      * Handler for more complex cases
      */
     GROW;
-    end = ctxt->input->cur;
+    startPosition = CUR_PTR - BASE_PTR;
     c = CUR_CHAR(l);
     if ((c == ' ') || (c == '>') || (c == '/') || /* accelerators */
 	(!xmlIsNameStartChar(ctxt, c) || (c == ':'))) {
@@ -3502,7 +3524,6 @@
 	}
 	len += l;
 	NEXTL(l);
-	end = ctxt->input->cur;
 	c = CUR_CHAR(l);
 	if (c == 0) {
 	    count = 0;
@@ -3516,7 +3537,6 @@
 	    ctxt->input->cur += l;
             if (ctxt->instate == XML_PARSER_EOF)
                 return(NULL);
-	    end = ctxt->input->cur;
 	    c = CUR_CHAR(l);
 	}
     }
@@ -3525,7 +3545,7 @@
         xmlFatalErr(ctxt, XML_ERR_NAME_TOO_LONG, "NCName");
         return(NULL);
     }
-    return(xmlDictLookup(ctxt->dict, end - len, len));
+    return(xmlDictLookup(ctxt->dict, (BASE_PTR + startPosition), len));
 }
 
 /**
@@ -3625,7 +3645,7 @@
     }
     /* failure (or end of input buffer), check with full function */
     ret = xmlParseName (ctxt);
-    /* strings coming from the dictionnary direct compare possible */
+    /* strings coming from the dictionary direct compare possible */
     if (ret == other) {
 	return (const xmlChar*) 1;
     }
@@ -3966,8 +3986,10 @@
 	 * an entity declaration, it is bypassed and left as is.
 	 * so XML_SUBSTITUTE_REF is not set here.
 	 */
+        ++ctxt->depth;
 	ret = xmlStringDecodeEntities(ctxt, buf, XML_SUBSTITUTE_PEREF,
 				      0, 0, 0);
+        --ctxt->depth;
 	if (orig != NULL)
 	    *orig = buf;
 	else
@@ -4092,9 +4114,11 @@
 		} else if ((ent != NULL) &&
 		           (ctxt->replaceEntities != 0)) {
 		    if (ent->etype != XML_INTERNAL_PREDEFINED_ENTITY) {
+			++ctxt->depth;
 			rep = xmlStringDecodeEntities(ctxt, ent->content,
 						      XML_SUBSTITUTE_REF,
 						      0, 0, 0);
+			--ctxt->depth;
 			if (rep != NULL) {
 			    current = rep;
 			    while (*current != 0) { /* non input consuming */
@@ -4130,8 +4154,10 @@
 			(ent->content != NULL) && (ent->checked == 0)) {
 			unsigned long oldnbent = ctxt->nbentities;
 
+			++ctxt->depth;
 			rep = xmlStringDecodeEntities(ctxt, ent->content,
 						  XML_SUBSTITUTE_REF, 0, 0, 0);
+			--ctxt->depth;
 
 			ent->checked = (ctxt->nbentities - oldnbent + 1) * 2;
 			if (rep != NULL) {
@@ -5501,7 +5527,7 @@
 	    skipped = SKIP_BLANKS;
 	    if (skipped == 0) {
 		xmlFatalErrMsg(ctxt, XML_ERR_SPACE_REQUIRED,
-			       "Space required after '%'\n");
+			       "Space required after '%%'\n");
 	    }
 	    isParameter = 1;
 	}
@@ -6686,6 +6712,7 @@
 	if (!IS_BLANK_CH(CUR)) {
 	    xmlFatalErrMsg(ctxt, XML_ERR_SPACE_REQUIRED,
 		           "Space required after 'ELEMENT'\n");
+	    return(-1);
 	}
         SKIP_BLANKS;
         name = xmlParseName(ctxt);
@@ -6837,6 +6864,7 @@
 
 	    if ((CUR_PTR == check) && (cons == ctxt->input->consumed)) {
 		xmlFatalErr(ctxt, XML_ERR_EXT_SUBSET_NOT_FINISHED, NULL);
+		xmlHaltParser(ctxt);
 		break;
 	    }
 	}
@@ -8468,6 +8496,7 @@
      */
     if (RAW != '>') {
 	xmlFatalErr(ctxt, XML_ERR_DOCTYPE_NOT_FINISHED, NULL);
+	return;
     }
     NEXT;
 }
@@ -8818,7 +8847,7 @@
  * @prefix:  the prefix to lookup
  *
  * Lookup the namespace name for the @prefix (which ca be NULL)
- * The prefix must come from the @ctxt->dict dictionnary
+ * The prefix must come from the @ctxt->dict dictionary
  *
  * Returns the namespace name or NULL if not bound
  */
@@ -9465,7 +9494,10 @@
 		else
 		    if (nsPush(ctxt, NULL, URL) > 0) nbNs++;
 skip_default_ns:
-		if (alloc != 0) xmlFree(attvalue);
+		if ((attvalue != NULL) && (alloc != 0)) {
+		    xmlFree(attvalue);
+		    attvalue = NULL;
+		}
 		if ((RAW == '>') || (((RAW == '/') && (NXT(1) == '>'))))
 		    break;
 		if (!IS_BLANK_CH(RAW)) {
@@ -9474,6 +9506,8 @@
 		    break;
 		}
 		SKIP_BLANKS;
+		if ((ctxt->input->base != base) || (inputNr != ctxt->inputNr))
+		    goto base_changed;
 		continue;
 	    }
             if (aprefix == ctxt->str_xmlns) {
@@ -9545,7 +9579,10 @@
 		else
 		    if (nsPush(ctxt, attname, URL) > 0) nbNs++;
 skip_ns:
-		if (alloc != 0) xmlFree(attvalue);
+		if ((attvalue != NULL) && (alloc != 0)) {
+		    xmlFree(attvalue);
+		    attvalue = NULL;
+		}
 		if ((RAW == '>') || (((RAW == '/') && (NXT(1) == '>'))))
 		    break;
 		if (!IS_BLANK_CH(RAW)) {
@@ -9816,6 +9853,7 @@
 xmlParseEndTag2(xmlParserCtxtPtr ctxt, const xmlChar *prefix,
                 const xmlChar *URI, int line, int nsNr, int tlen) {
     const xmlChar *name;
+    size_t curLength;
 
     GROW;
     if ((RAW != '<') || (NXT(1) != '/')) {
@@ -9824,8 +9862,11 @@
     }
     SKIP(2);
 
-    if ((tlen > 0) && (xmlStrncmp(ctxt->input->cur, ctxt->name, tlen) == 0)) {
-        if (ctxt->input->cur[tlen] == '>') {
+    curLength = ctxt->input->end - ctxt->input->cur;
+    if ((tlen > 0) && (curLength >= (size_t)tlen) &&
+        (xmlStrncmp(ctxt->input->cur, ctxt->name, tlen) == 0)) {
+        if ((curLength >= (size_t)(tlen + 1)) &&
+	    (ctxt->input->cur[tlen] == '>')) {
 	    ctxt->input->cur += tlen + 1;
 	    ctxt->input->col += tlen + 1;
 	    goto done;
@@ -11209,8 +11250,9 @@
 }
 /**
  * xmlCheckCdataPush:
- * @cur: pointer to the bock of characters
+ * @cur: pointer to the block of characters
  * @len: length of the block in bytes
+ * @complete: 1 if complete CDATA block is passed in, 0 if partial block
  *
  * Check that the block of characters is okay as SCdata content [20]
  *
@@ -11218,7 +11260,7 @@
  *         UTF-8 error occured otherwise
  */
 static int
-xmlCheckCdataPush(const xmlChar *utf, int len) {
+xmlCheckCdataPush(const xmlChar *utf, int len, int complete) {
     int ix;
     unsigned char c;
     int codepoint;
@@ -11236,7 +11278,7 @@
 	    else
 	        return(-ix);
 	} else if ((c & 0xe0) == 0xc0) {/* 2-byte code, starts with 110 */
-	    if (ix + 2 > len) return(-ix);
+	    if (ix + 2 > len) return(complete ? -ix : ix);
 	    if ((utf[ix+1] & 0xc0 ) != 0x80)
 	        return(-ix);
 	    codepoint = (utf[ix] & 0x1f) << 6;
@@ -11245,7 +11287,7 @@
 	        return(-ix);
 	    ix += 2;
 	} else if ((c & 0xf0) == 0xe0) {/* 3-byte code, starts with 1110 */
-	    if (ix + 3 > len) return(-ix);
+	    if (ix + 3 > len) return(complete ? -ix : ix);
 	    if (((utf[ix+1] & 0xc0) != 0x80) ||
 	        ((utf[ix+2] & 0xc0) != 0x80))
 		    return(-ix);
@@ -11256,7 +11298,7 @@
 	        return(-ix);
 	    ix += 3;
 	} else if ((c & 0xf8) == 0xf0) {/* 4-byte code, starts with 11110 */
-	    if (ix + 4 > len) return(-ix);
+	    if (ix + 4 > len) return(complete ? -ix : ix);
 	    if (((utf[ix+1] & 0xc0) != 0x80) ||
 	        ((utf[ix+2] & 0xc0) != 0x80) ||
 		((utf[ix+3] & 0xc0) != 0x80))
@@ -11771,7 +11813,7 @@
 		        int tmp;
 
 			tmp = xmlCheckCdataPush(ctxt->input->cur,
-			                        XML_PARSER_BIG_BUFFER_SIZE);
+			                        XML_PARSER_BIG_BUFFER_SIZE, 0);
 			if (tmp < 0) {
 			    tmp = -tmp;
 			    ctxt->input->cur += tmp;
@@ -11794,7 +11836,7 @@
 		} else {
 		    int tmp;
 
-		    tmp = xmlCheckCdataPush(ctxt->input->cur, base);
+		    tmp = xmlCheckCdataPush(ctxt->input->cur, base, 1);
 		    if ((tmp < 0) || (tmp != base)) {
 			tmp = -tmp;
 			ctxt->input->cur += tmp;
@@ -14989,7 +15031,7 @@
  * DICT_FREE:
  * @str:  a string
  *
- * Free a string if it is not owned by the "dict" dictionnary in the
+ * Free a string if it is not owned by the "dict" dictionary in the
  * current scope
  */
 #define DICT_FREE(str)						\
diff --git a/parserInternals.c b/parserInternals.c
index 2b8646c..bfc778a 100644
--- a/parserInternals.c
+++ b/parserInternals.c
@@ -55,6 +55,10 @@
 #include <libxml/globals.h>
 #include <libxml/chvalid.h>
 
+#define CUR(ctxt) ctxt->input->cur
+#define END(ctxt) ctxt->input->end
+#define VALID_CTXT(ctxt) (CUR(ctxt) <= END(ctxt))
+
 #include "buf.h"
 #include "enc.h"
 
@@ -165,7 +169,7 @@
  *
  * Handle an internal error
  */
-static void
+static void LIBXML_ATTR_FORMAT(2,0)
 xmlErrInternal(xmlParserCtxtPtr ctxt, const char *msg, const xmlChar * str)
 {
     if ((ctxt != NULL) && (ctxt->disableSAX != 0) &&
@@ -193,7 +197,7 @@
  *
  * n encoding error
  */
-static void
+static void LIBXML_ATTR_FORMAT(3,0)
 xmlErrEncodingInt(xmlParserCtxtPtr ctxt, xmlParserErrors error,
                   const char *msg, int val)
 {
@@ -294,7 +298,7 @@
  */
 int
 xmlParserInputGrow(xmlParserInputPtr in, int len) {
-    size_t ret;
+    int ret;
     size_t indx;
     const xmlChar *content;
 
@@ -422,103 +426,105 @@
         (ctxt->input == NULL))
         return;
 
-    if (ctxt->charset == XML_CHAR_ENCODING_UTF8) {
-        if ((*ctxt->input->cur == 0) &&
-            (xmlParserInputGrow(ctxt->input, INPUT_CHUNK) <= 0) &&
-            (ctxt->instate != XML_PARSER_COMMENT)) {
-            /*
-             * If we are at the end of the current entity and
-             * the context allows it, we pop consumed entities
-             * automatically.
-             * the auto closing should be blocked in other cases
-             */
+    if (!(VALID_CTXT(ctxt))) {
+        xmlErrInternal(ctxt, "Parser input data memory error\n", NULL);
+	ctxt->errNo = XML_ERR_INTERNAL_ERROR;
+        xmlStopParser(ctxt);
+	return;
+    }
+
+    if ((*ctxt->input->cur == 0) &&
+        (xmlParserInputGrow(ctxt->input, INPUT_CHUNK) <= 0)) {
+        if ((ctxt->instate != XML_PARSER_COMMENT))
             xmlPopInput(ctxt);
-        } else {
-            const unsigned char *cur;
-            unsigned char c;
+        return;
+    }
 
-            /*
-             *   2.11 End-of-Line Handling
-             *   the literal two-character sequence "#xD#xA" or a standalone
-             *   literal #xD, an XML processor must pass to the application
-             *   the single character #xA.
-             */
-            if (*(ctxt->input->cur) == '\n') {
-                ctxt->input->line++; ctxt->input->col = 1;
-            } else
-                ctxt->input->col++;
+    if (ctxt->charset == XML_CHAR_ENCODING_UTF8) {
+        const unsigned char *cur;
+        unsigned char c;
 
-            /*
-             * 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
-             */
-            cur = ctxt->input->cur;
+        /*
+         *   2.11 End-of-Line Handling
+         *   the literal two-character sequence "#xD#xA" or a standalone
+         *   literal #xD, an XML processor must pass to the application
+         *   the single character #xA.
+         */
+        if (*(ctxt->input->cur) == '\n') {
+            ctxt->input->line++; ctxt->input->col = 1;
+        } else
+            ctxt->input->col++;
 
-            c = *cur;
-            if (c & 0x80) {
-	        if (c == 0xC0)
-		    goto encoding_error;
-                if (cur[1] == 0) {
+        /*
+         * 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
+         */
+        cur = ctxt->input->cur;
+
+        c = *cur;
+        if (c & 0x80) {
+        if (c == 0xC0)
+	    goto encoding_error;
+            if (cur[1] == 0) {
+                xmlParserInputGrow(ctxt->input, INPUT_CHUNK);
+                cur = ctxt->input->cur;
+            }
+            if ((cur[1] & 0xc0) != 0x80)
+                goto encoding_error;
+            if ((c & 0xe0) == 0xe0) {
+                unsigned int val;
+
+                if (cur[2] == 0) {
                     xmlParserInputGrow(ctxt->input, INPUT_CHUNK);
                     cur = ctxt->input->cur;
                 }
-                if ((cur[1] & 0xc0) != 0x80)
+                if ((cur[2] & 0xc0) != 0x80)
                     goto encoding_error;
-                if ((c & 0xe0) == 0xe0) {
-                    unsigned int val;
-
-                    if (cur[2] == 0) {
+                if ((c & 0xf0) == 0xf0) {
+                    if (cur[3] == 0) {
                         xmlParserInputGrow(ctxt->input, INPUT_CHUNK);
                         cur = ctxt->input->cur;
                     }
-                    if ((cur[2] & 0xc0) != 0x80)
+                    if (((c & 0xf8) != 0xf0) ||
+                        ((cur[3] & 0xc0) != 0x80))
                         goto encoding_error;
-                    if ((c & 0xf0) == 0xf0) {
-                        if (cur[3] == 0) {
-                            xmlParserInputGrow(ctxt->input, INPUT_CHUNK);
-                            cur = ctxt->input->cur;
-                        }
-                        if (((c & 0xf8) != 0xf0) ||
-                            ((cur[3] & 0xc0) != 0x80))
-                            goto encoding_error;
-                        /* 4-byte code */
-                        ctxt->input->cur += 4;
-                        val = (cur[0] & 0x7) << 18;
-                        val |= (cur[1] & 0x3f) << 12;
-                        val |= (cur[2] & 0x3f) << 6;
-                        val |= cur[3] & 0x3f;
-                    } else {
-                        /* 3-byte code */
-                        ctxt->input->cur += 3;
-                        val = (cur[0] & 0xf) << 12;
-                        val |= (cur[1] & 0x3f) << 6;
-                        val |= cur[2] & 0x3f;
-                    }
-                    if (((val > 0xd7ff) && (val < 0xe000)) ||
-                        ((val > 0xfffd) && (val < 0x10000)) ||
-                        (val >= 0x110000)) {
-			xmlErrEncodingInt(ctxt, XML_ERR_INVALID_CHAR,
-					  "Char 0x%X out of allowed range\n",
-					  val);
-                    }
-                } else
-                    /* 2-byte code */
-                    ctxt->input->cur += 2;
+                    /* 4-byte code */
+                    ctxt->input->cur += 4;
+                    val = (cur[0] & 0x7) << 18;
+                    val |= (cur[1] & 0x3f) << 12;
+                    val |= (cur[2] & 0x3f) << 6;
+                    val |= cur[3] & 0x3f;
+                } else {
+                    /* 3-byte code */
+                    ctxt->input->cur += 3;
+                    val = (cur[0] & 0xf) << 12;
+                    val |= (cur[1] & 0x3f) << 6;
+                    val |= cur[2] & 0x3f;
+                }
+                if (((val > 0xd7ff) && (val < 0xe000)) ||
+                    ((val > 0xfffd) && (val < 0x10000)) ||
+                    (val >= 0x110000)) {
+		xmlErrEncodingInt(ctxt, XML_ERR_INVALID_CHAR,
+				  "Char 0x%X out of allowed range\n",
+				  val);
+                }
             } else
-                /* 1-byte code */
-                ctxt->input->cur++;
+                /* 2-byte code */
+                ctxt->input->cur += 2;
+        } else
+            /* 1-byte code */
+            ctxt->input->cur++;
 
-            ctxt->nbChars++;
-            if (*ctxt->input->cur == 0)
-                xmlParserInputGrow(ctxt->input, INPUT_CHUNK);
-        }
+        ctxt->nbChars++;
+        if (*ctxt->input->cur == 0)
+            xmlParserInputGrow(ctxt->input, INPUT_CHUNK);
     } else {
         /*
          * Assume it's a fixed length encoding (1) with
diff --git a/python/drv_libxml2.py b/python/drv_libxml2.py
index c2ec3e2..71b1c67 100644
--- a/python/drv_libxml2.py
+++ b/python/drv_libxml2.py
@@ -44,8 +44,18 @@
     __author__  = codecs.unicode_escape_decode(__author__)[0]
 
     StringTypes = (str, unicode)
+    # libxml2 returns strings as UTF8
+    _decoder = codecs.lookup("utf8")[1]
+    def _d(s):
+        if s is None:
+            return s
+        else:
+            return _decoder(s)[0]
 else:
     StringTypes = str
+    # s is Unicode `str` already
+    def _d(s):
+        return s
 
 from xml.sax._exceptions import *
 from xml.sax import xmlreader, saxutils
@@ -61,14 +71,6 @@
      property_dom_node, \
      property_xml_string
 
-# libxml2 returns strings as UTF8
-_decoder = codecs.lookup("utf8")[1]
-def _d(s):
-    if s is None:
-        return s
-    else:
-        return _decoder(s)[0]
-
 try:
     import libxml2
 except ImportError:
diff --git a/python/libxml.c b/python/libxml.c
index 30b71f3..5b1ff6e 100644
--- a/python/libxml.c
+++ b/python/libxml.c
@@ -906,7 +906,7 @@
         type = 2;
     if (type != 0) {
         /*
-         * the xmllib interface always generate a dictionnary,
+         * the xmllib interface always generates a dictionary,
          * possibly empty
          */
         if ((attrs == NULL) && (type == 1)) {
diff --git a/python/setup.py b/python/setup.py
index f10b9c1..1ac4eac 100755
--- a/python/setup.py
+++ b/python/setup.py
@@ -226,7 +226,7 @@
 setup (name = "libxml2-python",
        # On *nix, the version number is created from setup.py.in
        # On windows, it is set by configure.js
-       version = "2.9.3",
+       version = "2.9.4",
        description = descr,
        author = "Daniel Veillard",
        author_email = "veillard@redhat.com",
diff --git a/relaxng.c b/relaxng.c
index 5779e7f..3d3e69c 100644
--- a/relaxng.c
+++ b/relaxng.c
@@ -507,7 +507,7 @@
  *
  * Handle a Relax NG Parsing error
  */
-static void
+static void LIBXML_ATTR_FORMAT(4,0)
 xmlRngPErr(xmlRelaxNGParserCtxtPtr ctxt, xmlNodePtr node, int error,
            const char *msg, const xmlChar * str1, const xmlChar * str2)
 {
@@ -541,7 +541,7 @@
  *
  * Handle a Relax NG Validation error
  */
-static void
+static void LIBXML_ATTR_FORMAT(4,0)
 xmlRngVErr(xmlRelaxNGValidCtxtPtr ctxt, xmlNodePtr node, int error,
            const char *msg, const xmlChar * str1, const xmlChar * str2)
 {
@@ -2088,6 +2088,7 @@
                          const xmlChar * arg2)
 {
     char msg[1000];
+    xmlChar *result;
 
     if (arg1 == NULL)
         arg1 = BAD_CAST "";
@@ -2215,7 +2216,8 @@
         snprintf(msg, 1000, "Unknown error code %d\n", err);
     }
     msg[1000 - 1] = 0;
-    return (xmlStrdup((xmlChar *) msg));
+    result = xmlCharStrdup(msg);
+    return (xmlEscapeFormatString(&result));
 }
 
 /**
diff --git a/result/HTML/758605.html b/result/HTML/758605.html
new file mode 100644
index 0000000..60b01d3
--- /dev/null
+++ b/result/HTML/758605.html
@@ -0,0 +1,3 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" "http://www.w3.org/TR/REC-html40/loose.dtd">
+<html><body><p>&amp;&ecirc;
+</p></body></html>
diff --git a/result/HTML/758605.html.err b/result/HTML/758605.html.err
new file mode 100644
index 0000000..2086f96
--- /dev/null
+++ b/result/HTML/758605.html.err
@@ -0,0 +1,3 @@
+./test/HTML/758605.html:1: HTML parser error : htmlParseEntityRef: expecting ';'

+  ^
diff --git a/result/HTML/758605.html.sax b/result/HTML/758605.html.sax
new file mode 100644
index 0000000..c6e0986
--- /dev/null
+++ b/result/HTML/758605.html.sax
@@ -0,0 +1,14 @@
+SAX.setDocumentLocator()
+SAX.startDocument()
+SAX.error: htmlParseEntityRef: expecting ';'
+SAX.startElement(html)
+SAX.startElement(body)
+SAX.startElement(p)
+SAX.characters(&amp;, 1)
+SAX.characters(&ecirc;, 2)
+SAX.ignorableWhitespace(
+, 1)
+SAX.endElement(p)
+SAX.endElement(body)
+SAX.endElement(html)
+SAX.endDocument()
diff --git a/result/HTML/758606.html b/result/HTML/758606.html
new file mode 100644
index 0000000..4f21f62
--- /dev/null
+++ b/result/HTML/758606.html
@@ -0,0 +1,2 @@
+<!DOCTYPE >
+
diff --git a/result/HTML/758606.html.err b/result/HTML/758606.html.err
new file mode 100644
index 0000000..060433a
--- /dev/null
+++ b/result/HTML/758606.html.err
@@ -0,0 +1,16 @@
+./test/HTML/758606.html:1: HTML parser error : Comment not terminated 
+<!--
+<!--<!doctype
+    ^
+./test/HTML/758606.html:1: HTML parser error : Invalid char in CDATA 0xC
+<!--<!doctype
+    ^
+./test/HTML/758606.html:1: HTML parser error : Misplaced DOCTYPE declaration
+<!--<!doctype
+     ^
+./test/HTML/758606.html:2: HTML parser error : htmlParseDocTypeDecl : no DOCTYPE name !
+
+^
+./test/HTML/758606.html:2: HTML parser error : DOCTYPE improperly terminated
+
+^
diff --git a/result/HTML/758606.html.sax b/result/HTML/758606.html.sax
new file mode 100644
index 0000000..d44a5cf
--- /dev/null
+++ b/result/HTML/758606.html.sax
@@ -0,0 +1,10 @@
+SAX.setDocumentLocator()
+SAX.startDocument()
+SAX.error: Comment not terminated 
+<!--
+SAX.error: Invalid char in CDATA 0xC
+SAX.error: Misplaced DOCTYPE declaration
+SAX.error: htmlParseDocTypeDecl : no DOCTYPE name !
+SAX.error: DOCTYPE improperly terminated
+SAX.internalSubset((null), , )
+SAX.endDocument()
diff --git a/result/HTML/758606_2.html b/result/HTML/758606_2.html
new file mode 100644
index 0000000..273816a
--- /dev/null
+++ b/result/HTML/758606_2.html
@@ -0,0 +1,2 @@
+<!DOCTYPE >
+<html><body><p>&#145;</p></body></html>
diff --git a/result/HTML/758606_2.html.err b/result/HTML/758606_2.html.err
new file mode 100644
index 0000000..4be039f
--- /dev/null
+++ b/result/HTML/758606_2.html.err
@@ -0,0 +1,16 @@
+./test/HTML/758606_2.html:1: HTML parser error : Comment not terminated 
+<!--
+<!--‘<!dOctYPE
+    ^
+./test/HTML/758606_2.html:1: HTML parser error : Invalid char in CDATA 0xC
+<!--‘<!dOctYPE
+    ^
+./test/HTML/758606_2.html:1: HTML parser error : Misplaced DOCTYPE declaration
+‘<!dOctYPE
+  ^
+./test/HTML/758606_2.html:2: HTML parser error : htmlParseDocTypeDecl : no DOCTYPE name !
+
+^
+./test/HTML/758606_2.html:2: HTML parser error : DOCTYPE improperly terminated
+
+^
diff --git a/result/HTML/758606_2.html.sax b/result/HTML/758606_2.html.sax
new file mode 100644
index 0000000..80ff3d7
--- /dev/null
+++ b/result/HTML/758606_2.html.sax
@@ -0,0 +1,17 @@
+SAX.setDocumentLocator()
+SAX.startDocument()
+SAX.error: Comment not terminated 
+<!--
+SAX.error: Invalid char in CDATA 0xC
+SAX.startElement(html)
+SAX.startElement(body)
+SAX.startElement(p)
+SAX.characters(&#145;, 2)
+SAX.error: Misplaced DOCTYPE declaration
+SAX.error: htmlParseDocTypeDecl : no DOCTYPE name !
+SAX.error: DOCTYPE improperly terminated
+SAX.internalSubset((null), , )
+SAX.endElement(p)
+SAX.endElement(body)
+SAX.endElement(html)
+SAX.endDocument()
diff --git a/result/XPath/expr/base b/result/XPath/expr/base
index 3552866..e04346f 100644
--- a/result/XPath/expr/base
+++ b/result/XPath/expr/base
@@ -18,3 +18,11 @@
 ========================
 Expression: (1+2)*(3+4)
 Object is a number : 21
+
+========================
+Expression: 1*1+1*1+1*1+1*1+1*1+1*1+1*1+1*1+1*1+1*1+1*1+1*1+1*1+1*1+1*1+1*1+1*1+1*1+1*1+1*1+1*1
+Object is a number : 21
+
+========================
+Expression: self::-name
+Object is empty (NULL)
diff --git a/result/XPath/tests/nssimple b/result/XPath/tests/nssimple
new file mode 100644
index 0000000..8f0dd0e
--- /dev/null
+++ b/result/XPath/tests/nssimple
@@ -0,0 +1,24 @@
+
+========================
+Expression: /doc/elem/namespace::node()/..
+Object is a Node Set :
+Set contains 1 nodes:
+1  ELEMENT elem
+    namespace ns2 href=nsuri2
+
+========================
+Expression: /doc/elem/namespace::*/self::node()[true()]
+Object is a Node Set :
+Set contains 3 nodes:
+1  namespace xml href=http://www.w3.org/XML/1998/namespace
+2  namespace ns1 href=nsuri1
+3  namespace ns2 href=nsuri2
+
+========================
+Expression: //*[namespace::ns1]
+Object is a Node Set :
+Set contains 2 nodes:
+1  ELEMENT doc
+    namespace ns1 href=nsuri1
+2  ELEMENT elem
+    namespace ns2 href=nsuri2
diff --git a/result/XPath/xptr/viderror b/result/XPath/xptr/viderror
new file mode 100644
index 0000000..d589882
--- /dev/null
+++ b/result/XPath/xptr/viderror
@@ -0,0 +1,4 @@
+
+========================
+Expression: xpointer(non-existing-fn()/range-to(id('chapter2')))
+Object is empty (NULL)
diff --git a/result/cdata-2-byte-UTF-8.xml b/result/cdata-2-byte-UTF-8.xml
new file mode 100644
index 0000000..8552efc
--- /dev/null
+++ b/result/cdata-2-byte-UTF-8.xml
@@ -0,0 +1,6 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- This tests that two-byte UTF-8 characters are parsed properly when split across a buffer boundary of length XML_PARSER_BIG_BUFFER_SIZE (300 bytes). -->
+<doc>
+<p><![CDATA[ČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČ]]></p>
+<p><![CDATA[ ČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČ]]></p>
+</doc>
diff --git a/result/cdata-2-byte-UTF-8.xml.rde b/result/cdata-2-byte-UTF-8.xml.rde
new file mode 100644
index 0000000..2eb2940
--- /dev/null
+++ b/result/cdata-2-byte-UTF-8.xml.rde
@@ -0,0 +1,15 @@
+0 8 #comment 0 1  This tests that two-byte UTF-8 characters are parsed properly when split across a buffer boundary of length XML_PARSER_BIG_BUFFER_SIZE (300 bytes). 
+0 1 doc 0 0
+1 14 #text 0 1 
+
+1 1 p 0 0
+2 4 #cdata-section 0 1 ČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČ
+1 15 p 0 0
+1 14 #text 0 1 
+
+1 1 p 0 0
+2 4 #cdata-section 0 1  ČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČ
+1 15 p 0 0
+1 14 #text 0 1 
+
+0 15 doc 0 0
diff --git a/result/cdata-2-byte-UTF-8.xml.rdr b/result/cdata-2-byte-UTF-8.xml.rdr
new file mode 100644
index 0000000..2eb2940
--- /dev/null
+++ b/result/cdata-2-byte-UTF-8.xml.rdr
@@ -0,0 +1,15 @@
+0 8 #comment 0 1  This tests that two-byte UTF-8 characters are parsed properly when split across a buffer boundary of length XML_PARSER_BIG_BUFFER_SIZE (300 bytes). 
+0 1 doc 0 0
+1 14 #text 0 1 
+
+1 1 p 0 0
+2 4 #cdata-section 0 1 ČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČ
+1 15 p 0 0
+1 14 #text 0 1 
+
+1 1 p 0 0
+2 4 #cdata-section 0 1  ČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČ
+1 15 p 0 0
+1 14 #text 0 1 
+
+0 15 doc 0 0
diff --git a/result/cdata-2-byte-UTF-8.xml.sax b/result/cdata-2-byte-UTF-8.xml.sax
new file mode 100644
index 0000000..f397f6a
--- /dev/null
+++ b/result/cdata-2-byte-UTF-8.xml.sax
@@ -0,0 +1,18 @@
+SAX.setDocumentLocator()
+SAX.startDocument()
+SAX.comment( This tests that two-byte UTF-8 characters are parsed properly when split across a buffer boundary of length XML_PARSER_BIG_BUFFER_SIZE (300 bytes). )
+SAX.startElement(doc)
+SAX.characters(
+, 1)
+SAX.startElement(p)
+SAX.pcdata(ČČČČČČČČČČ, 1200)
+SAX.endElement(p)
+SAX.characters(
+, 1)
+SAX.startElement(p)
+SAX.pcdata( ČČČČČČČČČÄ, 1201)
+SAX.endElement(p)
+SAX.characters(
+, 1)
+SAX.endElement(doc)
+SAX.endDocument()
diff --git a/result/cdata-2-byte-UTF-8.xml.sax2 b/result/cdata-2-byte-UTF-8.xml.sax2
new file mode 100644
index 0000000..2da2d50
--- /dev/null
+++ b/result/cdata-2-byte-UTF-8.xml.sax2
@@ -0,0 +1,18 @@
+SAX.setDocumentLocator()
+SAX.startDocument()
+SAX.comment( This tests that two-byte UTF-8 characters are parsed properly when split across a buffer boundary of length XML_PARSER_BIG_BUFFER_SIZE (300 bytes). )
+SAX.startElementNs(doc, NULL, NULL, 0, 0, 0)
+SAX.characters(
+, 1)
+SAX.startElementNs(p, NULL, NULL, 0, 0, 0)
+SAX.pcdata(ČČČČČČČČČČ, 1200)
+SAX.endElementNs(p, NULL, NULL)
+SAX.characters(
+, 1)
+SAX.startElementNs(p, NULL, NULL, 0, 0, 0)
+SAX.pcdata( ČČČČČČČČČÄ, 1201)
+SAX.endElementNs(p, NULL, NULL)
+SAX.characters(
+, 1)
+SAX.endElementNs(doc, NULL, NULL)
+SAX.endDocument()
diff --git a/result/cdata-3-byte-UTF-8.xml b/result/cdata-3-byte-UTF-8.xml
new file mode 100644
index 0000000..b959a12
--- /dev/null
+++ b/result/cdata-3-byte-UTF-8.xml
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- This tests that three-byte UTF-8 characters are parsed properly when split across a buffer boundary of length XML_PARSER_BIG_BUFFER_SIZE (300 bytes). -->
+<doc>
+<p><![CDATA[牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛]]></p>
+<p><![CDATA[ 牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛]]></p>
+<p><![CDATA[  牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛]]></p>
+</doc>
diff --git a/result/cdata-3-byte-UTF-8.xml.rde b/result/cdata-3-byte-UTF-8.xml.rde
new file mode 100644
index 0000000..3f4d1c5
--- /dev/null
+++ b/result/cdata-3-byte-UTF-8.xml.rde
@@ -0,0 +1,20 @@
+0 8 #comment 0 1  This tests that three-byte UTF-8 characters are parsed properly when split across a buffer boundary of length XML_PARSER_BIG_BUFFER_SIZE (300 bytes). 
+0 1 doc 0 0
+1 14 #text 0 1 
+
+1 1 p 0 0
+2 4 #cdata-section 0 1 牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛
+1 15 p 0 0
+1 14 #text 0 1 
+
+1 1 p 0 0
+2 4 #cdata-section 0 1  牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛
+1 15 p 0 0
+1 14 #text 0 1 
+
+1 1 p 0 0
+2 4 #cdata-section 0 1   牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛
+1 15 p 0 0
+1 14 #text 0 1 
+
+0 15 doc 0 0
diff --git a/result/cdata-3-byte-UTF-8.xml.rdr b/result/cdata-3-byte-UTF-8.xml.rdr
new file mode 100644
index 0000000..3f4d1c5
--- /dev/null
+++ b/result/cdata-3-byte-UTF-8.xml.rdr
@@ -0,0 +1,20 @@
+0 8 #comment 0 1  This tests that three-byte UTF-8 characters are parsed properly when split across a buffer boundary of length XML_PARSER_BIG_BUFFER_SIZE (300 bytes). 
+0 1 doc 0 0
+1 14 #text 0 1 
+
+1 1 p 0 0
+2 4 #cdata-section 0 1 牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛
+1 15 p 0 0
+1 14 #text 0 1 
+
+1 1 p 0 0
+2 4 #cdata-section 0 1  牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛
+1 15 p 0 0
+1 14 #text 0 1 
+
+1 1 p 0 0
+2 4 #cdata-section 0 1   牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛
+1 15 p 0 0
+1 14 #text 0 1 
+
+0 15 doc 0 0
diff --git a/result/cdata-3-byte-UTF-8.xml.sax b/result/cdata-3-byte-UTF-8.xml.sax
new file mode 100644
index 0000000..2f73e7c
--- /dev/null
+++ b/result/cdata-3-byte-UTF-8.xml.sax
@@ -0,0 +1,23 @@
+SAX.setDocumentLocator()
+SAX.startDocument()
+SAX.comment( This tests that three-byte UTF-8 characters are parsed properly when split across a buffer boundary of length XML_PARSER_BIG_BUFFER_SIZE (300 bytes). )
+SAX.startElement(doc)
+SAX.characters(
+, 1)
+SAX.startElement(p)
+SAX.pcdata(牛牛牛牛牛牛ç‰, 1200)
+SAX.endElement(p)
+SAX.characters(
+, 1)
+SAX.startElement(p)
+SAX.pcdata( 牛牛牛牛牛牛ç, 1201)
+SAX.endElement(p)
+SAX.characters(
+, 1)
+SAX.startElement(p)
+SAX.pcdata(  牛牛牛牛牛牛, 1202)
+SAX.endElement(p)
+SAX.characters(
+, 1)
+SAX.endElement(doc)
+SAX.endDocument()
diff --git a/result/cdata-3-byte-UTF-8.xml.sax2 b/result/cdata-3-byte-UTF-8.xml.sax2
new file mode 100644
index 0000000..3969579
--- /dev/null
+++ b/result/cdata-3-byte-UTF-8.xml.sax2
@@ -0,0 +1,23 @@
+SAX.setDocumentLocator()
+SAX.startDocument()
+SAX.comment( This tests that three-byte UTF-8 characters are parsed properly when split across a buffer boundary of length XML_PARSER_BIG_BUFFER_SIZE (300 bytes). )
+SAX.startElementNs(doc, NULL, NULL, 0, 0, 0)
+SAX.characters(
+, 1)
+SAX.startElementNs(p, NULL, NULL, 0, 0, 0)
+SAX.pcdata(牛牛牛牛牛牛ç‰, 1200)
+SAX.endElementNs(p, NULL, NULL)
+SAX.characters(
+, 1)
+SAX.startElementNs(p, NULL, NULL, 0, 0, 0)
+SAX.pcdata( 牛牛牛牛牛牛ç, 1201)
+SAX.endElementNs(p, NULL, NULL)
+SAX.characters(
+, 1)
+SAX.startElementNs(p, NULL, NULL, 0, 0, 0)
+SAX.pcdata(  牛牛牛牛牛牛, 1202)
+SAX.endElementNs(p, NULL, NULL)
+SAX.characters(
+, 1)
+SAX.endElementNs(doc, NULL, NULL)
+SAX.endDocument()
diff --git a/result/cdata-4-byte-UTF-8.xml b/result/cdata-4-byte-UTF-8.xml
new file mode 100644
index 0000000..4d1d9a8
--- /dev/null
+++ b/result/cdata-4-byte-UTF-8.xml
@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- This tests that four-byte UTF-8 characters are parsed properly when split across a buffer boundary of length XML_PARSER_BIG_BUFFER_SIZE (300 bytes). -->
+<doc>
+<p><![CDATA[🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦]]></p>
+<p><![CDATA[ 🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦]]></p>
+<p><![CDATA[  🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦]]></p>
+<p><![CDATA[   🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦]]></p>
+</doc>
diff --git a/result/cdata-4-byte-UTF-8.xml.rde b/result/cdata-4-byte-UTF-8.xml.rde
new file mode 100644
index 0000000..437b79e
--- /dev/null
+++ b/result/cdata-4-byte-UTF-8.xml.rde
@@ -0,0 +1,25 @@
+0 8 #comment 0 1  This tests that four-byte UTF-8 characters are parsed properly when split across a buffer boundary of length XML_PARSER_BIG_BUFFER_SIZE (300 bytes). 
+0 1 doc 0 0
+1 14 #text 0 1 
+
+1 1 p 0 0
+2 4 #cdata-section 0 1 🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦
+1 15 p 0 0
+1 14 #text 0 1 
+
+1 1 p 0 0
+2 4 #cdata-section 0 1  🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦
+1 15 p 0 0
+1 14 #text 0 1 
+
+1 1 p 0 0
+2 4 #cdata-section 0 1   🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦
+1 15 p 0 0
+1 14 #text 0 1 
+
+1 1 p 0 0
+2 4 #cdata-section 0 1    🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦
+1 15 p 0 0
+1 14 #text 0 1 
+
+0 15 doc 0 0
diff --git a/result/cdata-4-byte-UTF-8.xml.rdr b/result/cdata-4-byte-UTF-8.xml.rdr
new file mode 100644
index 0000000..437b79e
--- /dev/null
+++ b/result/cdata-4-byte-UTF-8.xml.rdr
@@ -0,0 +1,25 @@
+0 8 #comment 0 1  This tests that four-byte UTF-8 characters are parsed properly when split across a buffer boundary of length XML_PARSER_BIG_BUFFER_SIZE (300 bytes). 
+0 1 doc 0 0
+1 14 #text 0 1 
+
+1 1 p 0 0
+2 4 #cdata-section 0 1 🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦
+1 15 p 0 0
+1 14 #text 0 1 
+
+1 1 p 0 0
+2 4 #cdata-section 0 1  🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦
+1 15 p 0 0
+1 14 #text 0 1 
+
+1 1 p 0 0
+2 4 #cdata-section 0 1   🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦
+1 15 p 0 0
+1 14 #text 0 1 
+
+1 1 p 0 0
+2 4 #cdata-section 0 1    🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦
+1 15 p 0 0
+1 14 #text 0 1 
+
+0 15 doc 0 0
diff --git a/result/cdata-4-byte-UTF-8.xml.sax b/result/cdata-4-byte-UTF-8.xml.sax
new file mode 100644
index 0000000..d8abcfb
--- /dev/null
+++ b/result/cdata-4-byte-UTF-8.xml.sax
@@ -0,0 +1,28 @@
+SAX.setDocumentLocator()
+SAX.startDocument()
+SAX.comment( This tests that four-byte UTF-8 characters are parsed properly when split across a buffer boundary of length XML_PARSER_BIG_BUFFER_SIZE (300 bytes). )
+SAX.startElement(doc)
+SAX.characters(
+, 1)
+SAX.startElement(p)
+SAX.pcdata(🍦🍦🍦🍦🍦, 1200)
+SAX.endElement(p)
+SAX.characters(
+, 1)
+SAX.startElement(p)
+SAX.pcdata( 🍦🍦🍦🍦ðŸ, 1201)
+SAX.endElement(p)
+SAX.characters(
+, 1)
+SAX.startElement(p)
+SAX.pcdata(  🍦🍦🍦🍦ðŸ, 1202)
+SAX.endElement(p)
+SAX.characters(
+, 1)
+SAX.startElement(p)
+SAX.pcdata(   🍦🍦🍦🍦ð, 1203)
+SAX.endElement(p)
+SAX.characters(
+, 1)
+SAX.endElement(doc)
+SAX.endDocument()
diff --git a/result/cdata-4-byte-UTF-8.xml.sax2 b/result/cdata-4-byte-UTF-8.xml.sax2
new file mode 100644
index 0000000..5e07d83
--- /dev/null
+++ b/result/cdata-4-byte-UTF-8.xml.sax2
@@ -0,0 +1,28 @@
+SAX.setDocumentLocator()
+SAX.startDocument()
+SAX.comment( This tests that four-byte UTF-8 characters are parsed properly when split across a buffer boundary of length XML_PARSER_BIG_BUFFER_SIZE (300 bytes). )
+SAX.startElementNs(doc, NULL, NULL, 0, 0, 0)
+SAX.characters(
+, 1)
+SAX.startElementNs(p, NULL, NULL, 0, 0, 0)
+SAX.pcdata(🍦🍦🍦🍦🍦, 1200)
+SAX.endElementNs(p, NULL, NULL)
+SAX.characters(
+, 1)
+SAX.startElementNs(p, NULL, NULL, 0, 0, 0)
+SAX.pcdata( 🍦🍦🍦🍦ðŸ, 1201)
+SAX.endElementNs(p, NULL, NULL)
+SAX.characters(
+, 1)
+SAX.startElementNs(p, NULL, NULL, 0, 0, 0)
+SAX.pcdata(  🍦🍦🍦🍦ðŸ, 1202)
+SAX.endElementNs(p, NULL, NULL)
+SAX.characters(
+, 1)
+SAX.startElementNs(p, NULL, NULL, 0, 0, 0)
+SAX.pcdata(   🍦🍦🍦🍦ð, 1203)
+SAX.endElementNs(p, NULL, NULL)
+SAX.characters(
+, 1)
+SAX.endElementNs(doc, NULL, NULL)
+SAX.endDocument()
diff --git a/result/errors/754946.xml.err b/result/errors/754946.xml.err
index a75088b..c03e35b 100644
--- a/result/errors/754946.xml.err
+++ b/result/errors/754946.xml.err
@@ -11,9 +11,9 @@
 Entity: line 1: 
 A<lbbbbbbbbbbbbbbbbbbb_
 ^
-./test/errors/754946.xml:1: parser error : Start tag doesn't start and stop in the same entity
->%SYSTEM;<![
+Entity: line 1: parser error : Start tag expected, '<' not found
+ %SYSTEM; 
          ^
-./test/errors/754946.xml:1: parser error : Extra content at the end of the document
->%SYSTEM;<![
-         ^
+Entity: line 1: 
+A<lbbbbbbbbbbbbbbbbbbb_
+^
diff --git a/result/errors/758588.xml b/result/errors/758588.xml
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/result/errors/758588.xml
diff --git a/result/errors/758588.xml.err b/result/errors/758588.xml.err
new file mode 100644
index 0000000..dfa59bc
--- /dev/null
+++ b/result/errors/758588.xml.err
@@ -0,0 +1,9 @@
+./test/errors/758588.xml:1: namespace error : Namespace prefix a-340282366920938463472597946867209384634725979468672093846347259794686720938463472597946867209384634725979468672093846347259794686720938463472597946867209384634725979468672093846347259794686720938463472597946867209384634725979468672093846347259794686720938463472597946867209384634725979468672093846347259794686720938463472597946867209384634725979468672093846347259794686720938463472597946867209384634725979468672093846347259794686720938463472597946867209384634725979468672093846347259794686720938463472597946867209384634725979468672093846347259794686720938463472597946867209384634725979468672093846347259794686720938463472597946867209384634725979468672093846347259794686720938463472597946867209384634725979468672093846347259794686720938463472597946867209384634725979468672093846347259794686720938463472597946867209384634725979468672093846347259794686720938463472597946867209384634725979468672093846347259794686720938463472597946867209384634725979468672093846347259794686720938463472597946867209384634725979468672093846347259794686720938463472597946867209384634725979468672093846347259794686720938463472597946867209384634725979468672093846347259794686720938463472597946867209384634725979468672093846347259794686720938463472597946867209384634725979468672093846347259794686720938463472597946867209384634725979468672093846347259794686720938463472597946867209384634725979468672093846347259794686720938463472597946867209384634725979468672093846347259794686720938463472597946867209384634725979468672093846347259794686720938463472597946867209384634725979468672093846347259794686720938463472597946867209384634725979468672093846347259794686720938463472597946867209384634725979468672093846347259794686720938463472597946867209384634725979468672093846347259794686720938463472597946867209384634725979468672093846347259794686720938463472597946867209384634725979468672093846347259794686720938463472597946867209384634725979468672093846347259794686720938463472597946867209384634725979468672093846347259794686720938463472597946867209384634725979468672093846347259794686720938463472597946867209384634725979468672093846347259794686720938463472597946867209384634725979468672093846347259794686720938463472597946867209384634725979468672093846347259794686720938463472597946867209384634725979468672093846347259794686720938463472597946867209384634725979468672093846347259794686720938463472597946867209384634725979468672093846347259794686720938463472597946867209384634725979468672093846347259794686720938463472597946867209384634725979468672093846347259794686720938463472597946867209384634725979468672093846347259794686720938463472597946867209384634725979468672093846347259794686720938463472597946867209384634725979468672093846347259794686720938463472597946867209384634725979468672093846347259794686720938463472597946867209384634725979468672093846347259794686720938463472597946867209384634725979468672093846347259794686720938463472597946867209384634725979468672093846347259794686720938463472597946867209384634725979468672093846347259794686720938463472597946867209384634725979468672093846347259794686720938463472597946867209384634725979468672093846347259794686720938463472597946867209384634725979468672093846347259794686720938463472597946867209384634725979468672093846347259794686720938463472597946867209384634725979468672093846347259794686720938463472597946867209384634725979468672093846347259794686720938463472597946867209384634725979468672093846347259794686720938463472597946867209384634725979468672093846347259794686720938463472597946867209384634725979468672093846347259794686720938463472597946867209384634725979468672093846347259794686720938463472597946867209384634725979468672093846347259794686720938463472597946867209384634725979468672093846347259794686720938463472597946867209384634725979468672093846347259794686720938463472597946867209384634725979468672093846347259794686720938463472597946867209384634725979468672093846347259794686720938463472597946867209384634725979468672093846347259794686720938463472597946867209384634725979468672093846347259794686720938463472597946867209384634725979468672093846347259794686720938463472597946867209384634725979468672093846347259794686720938463472597946867209384634725979468672093846347259794686720938463472597946867209384634725979468672093846347259794686720938463472597946867209384634725979468672093846347259794686720938463472597946867209384634725979468672093846347259794686720938463472597946867209384634725979468672093846347259794686720938463472597946867209384634725979468672093846347259794686720938463472597946867209384634725979468672093846347259794686720938463472597946867209384634725979468672093846347259794686720938463472597946867209384634725979468672093846347259794686720938463472597946867209384634725979468672093846347259794686720938463472597946867209384634725979468672093846347259794686720938463472597946867209384634725979468672093846347259794686720938463472597946867209384634725979468672093846347259794686720938463472597946867209384634725979468672093846347259794686720938463472597946867209384634725979468672093846347259794686720938463472597946867209384634725979468672093846347259794686720938463472597946867209384634725979468672093846347259794686720938463472597946867209384634725979468672093846347259794686720938463472597946867209384634725979468672093846347259794686720938463472597946867209384634725979468672093846347259794686720938463472597946867209384634725979468672093846347259794686720938463472597946867209384634725979468672093846347259794686720938463472597946867209384634725979468672093846347259794686720938463472597946867209384634725979468672093846347259794686720938463472597946867209384634725979468672093846347259794686720938463472597946867209384634725979468672093846347259794686720938463472597946867209384634725979468672093846347259794686720938463472597946867209384634725979468672093846347259794686720938463472597946867209384634725979468672093846347259794686720938463472597946867209384634725979468672093846347259794686720938463472597946867209384634725979468672093846347259794686720938463472597946867209384634725979468672093846347259794686720938463472597946867209384634725979468672093846347259794686720938463472597946867209384634725979468672093846347259794686720938463472597946867209384634725979468672093846347259794686720938463472597946867209384634725979468672093846347259794686720938463472597946867209384634725979468672093846347259794686720938463472597946867209384634725979468672093846347259794686720938463472597946867209384634725979468672093846347259794686720938463472597946867209384634725979468672093846347259794686720938463472597946867209384634725979468672093846347259794686720938463472597946867209384634725979468672093846347259794686720938463472597946867209384634725979468672093846347259794686720938463472597946867209384634725979468672093846347259794686720938463472597946867209384634725979468672093846347259794686720938463472597946867209384634725979468672093846347259794686720938463472597946867209384634725979468672093846347259794686720938463472597946867209384634725979468672093846347259794686720938463472597946867209384634725979468672093846347259794686720938463472597946867209384634725979468672093846347259794686720938463472597946867209384634725979468672093846347259794686720938463472597946867209384634725979468672093846347259794686720938463472597946867209384634725979468672093846347259794686720938463472597946867209384634725979468672093846347259794686720938463472597946867209384634725979468672093846347259794686720938463472597946867209384634725979468672093846347259794686720938463472597946867209384634725979468672093846347259794686720938463472597946867209384634725979468672093846347259794686720938463472597946867209384634725979468672093846347259794686720938463472597946867209384634725979468672093846347259794686720938463472597946867209384634725979468672093846347259794686720938463472597946867209384634725979468672093846347259794686720938463472597946867209384634725979468672093846347259794686720938463472597946867209384634725979468672093846347259794686720938463472597946867209384634725979468672093846347259794686720938463472597946867209384634725979468672093846347259794686720938463472597946867209384634725979468672093846347259794686720938463472597946867209384634725979468672093846347259794686720938463472597946867209384634725979468672093846347259794686720938463472597946867209384634725979468672093846347259794686720938463472597946867209384634725979468672093846347259794686720938463472597946867209384634725979468672093846347259794686720938463472597946867209384634725979468672093846347259794686720938463472597946867209384634725979468672093846347259794686720938463472597946867209384634725979468672093846347259794686720938463472597946867209384634725979468672093846347259794686720938463472597946867209384634725979468672093846347259794686720938463472597946867209384634725979468672093846347259794686720938463472597946867209384634725979468672093846347259794686720938463472597946867209384634725979468672093846347259794686720938463472597946867209384634725979468672093846347259794686720938463472597946867209384634725979468672093846347259794686720938463472597946867209384634725979468672093846347259794686720938463472597946867209384634725979468672093846347259794686720938463472597946867209384634725979468672093846347259794686720938463472597946867209384634725979468672093846347259794686720938463472597946867209384634725979468672093846347259794686720938463472597946867209384634725979468672093846347259794686720938463472597946867209384634725979468672093846347259794686720938463472597946867209384634725979468672093846347259794686720938463472597946867209384634725979468672093846347259794686720938463472597946867209384634725979468672093846347259794686720938463472597946867209384634725979468672093846347259794686720938463472597946867209384634725979468672093846347259794686720938463472597946867209384634725979468672093846347259794686720938463472597946867209384634725979468672093846347259794686720938463472597946867209384634725979468672093846347259794686720938463472597946867209384634725979468672093846347259794686720938463472597946867209384634725979468672093846347259794686720938463472597946867209384634725979468672093846347259794686720938463472597946867209384634725979468672093846347259794686720938463472597946867261d on a is not defined
+63472597946867209384634725979468672093846347259794686720938463472597946867261d:a
+                                                                               ^
+./test/errors/758588.xml:1: parser error : expected '>'
+2597946867209384634725979468672093846347259794686720938463472597946867261d:a></a
+                                                                               ^
+./test/errors/758588.xml:1: parser error : Opening and ending tag mismatch: a line 1 and a
+2597946867209384634725979468672093846347259794686720938463472597946867261d:a></a
+                                                                               ^
diff --git a/result/errors/758588.xml.str b/result/errors/758588.xml.str
new file mode 100644
index 0000000..303ee0c
--- /dev/null
+++ b/result/errors/758588.xml.str
@@ -0,0 +1,10 @@
+./test/errors/758588.xml:1: namespace error : Namespace prefix a-340282366920938463472597946867209384634725979468672093846347259794686720938463472597946867209384634725979468672093846347259794686720938463472597946867209384634725979468672093846347259794686720938463472597946867209384634725979468672093846347259794686720938463472597946867209384634725979468672093846347259794686720938463472597946867209384634725979468672093846347259794686720938463472597946867209384634725979468672093846347259794686720938463472597946867209384634725979468672093846347259794686720938463472597946867209384634725979468672093846347259794686720938463472597946867209384634725979468672093846347259794686720938463472597946867209384634725979468672093846347259794686720938463472597946867209384634725979468672093846347259794686720938463472597946867209384634725979468672093846347259794686720938463472597946867209384634725979468672093846347259794686720938463472597946867209384634725979468672093846347259794686720938463472597946867209384634725979468672093846347259794686720938463472597946867209384634725979468672093846347259794686720938463472597946867209384634725979468672093846347259794686720938463472597946867209384634725979468672093846347259794686720938463472597946867209384634725979468672093846347259794686720938463472597946867209384634725979468672093846347259794686720938463472597946867209384634725979468672093846347259794686720938463472597946867209384634725979468672093846347259794686720938463472597946867209384634725979468672093846347259794686720938463472597946867209384634725979468672093846347259794686720938463472597946867209384634725979468672093846347259794686720938463472597946867209384634725979468672093846347259794686720938463472597946867209384634725979468672093846347259794686720938463472597946867209384634725979468672093846347259794686720938463472597946867209384634725979468672093846347259794686720938463472597946867209384634725979468672093846347259794686720938463472597946867209384634725979468672093846347259794686720938463472597946867209384634725979468672093846347259794686720938463472597946867209384634725979468672093846347259794686720938463472597946867209384634725979468672093846347259794686720938463472597946867209384634725979468672093846347259794686720938463472597946867209384634725979468672093846347259794686720938463472597946867209384634725979468672093846347259794686720938463472597946867209384634725979468672093846347259794686720938463472597946867209384634725979468672093846347259794686720938463472597946867209384634725979468672093846347259794686720938463472597946867209384634725979468672093846347259794686720938463472597946867209384634725979468672093846347259794686720938463472597946867209384634725979468672093846347259794686720938463472597946867209384634725979468672093846347259794686720938463472597946867209384634725979468672093846347259794686720938463472597946867209384634725979468672093846347259794686720938463472597946867209384634725979468672093846347259794686720938463472597946867209384634725979468672093846347259794686720938463472597946867209384634725979468672093846347259794686720938463472597946867209384634725979468672093846347259794686720938463472597946867209384634725979468672093846347259794686720938463472597946867209384634725979468672093846347259794686720938463472597946867209384634725979468672093846347259794686720938463472597946867209384634725979468672093846347259794686720938463472597946867209384634725979468672093846347259794686720938463472597946867209384634725979468672093846347259794686720938463472597946867209384634725979468672093846347259794686720938463472597946867209384634725979468672093846347259794686720938463472597946867209384634725979468672093846347259794686720938463472597946867209384634725979468672093846347259794686720938463472597946867209384634725979468672093846347259794686720938463472597946867209384634725979468672093846347259794686720938463472597946867209384634725979468672093846347259794686720938463472597946867209384634725979468672093846347259794686720938463472597946867209384634725979468672093846347259794686720938463472597946867209384634725979468672093846347259794686720938463472597946867209384634725979468672093846347259794686720938463472597946867209384634725979468672093846347259794686720938463472597946867209384634725979468672093846347259794686720938463472597946867209384634725979468672093846347259794686720938463472597946867209384634725979468672093846347259794686720938463472597946867209384634725979468672093846347259794686720938463472597946867209384634725979468672093846347259794686720938463472597946867209384634725979468672093846347259794686720938463472597946867209384634725979468672093846347259794686720938463472597946867209384634725979468672093846347259794686720938463472597946867209384634725979468672093846347259794686720938463472597946867209384634725979468672093846347259794686720938463472597946867209384634725979468672093846347259794686720938463472597946867209384634725979468672093846347259794686720938463472597946867209384634725979468672093846347259794686720938463472597946867209384634725979468672093846347259794686720938463472597946867209384634725979468672093846347259794686720938463472597946867209384634725979468672093846347259794686720938463472597946867209384634725979468672093846347259794686720938463472597946867209384634725979468672093846347259794686720938463472597946867209384634725979468672093846347259794686720938463472597946867209384634725979468672093846347259794686720938463472597946867209384634725979468672093846347259794686720938463472597946867209384634725979468672093846347259794686720938463472597946867209384634725979468672093846347259794686720938463472597946867209384634725979468672093846347259794686720938463472597946867209384634725979468672093846347259794686720938463472597946867209384634725979468672093846347259794686720938463472597946867209384634725979468672093846347259794686720938463472597946867209384634725979468672093846347259794686720938463472597946867209384634725979468672093846347259794686720938463472597946867209384634725979468672093846347259794686720938463472597946867209384634725979468672093846347259794686720938463472597946867209384634725979468672093846347259794686720938463472597946867209384634725979468672093846347259794686720938463472597946867209384634725979468672093846347259794686720938463472597946867209384634725979468672093846347259794686720938463472597946867209384634725979468672093846347259794686720938463472597946867209384634725979468672093846347259794686720938463472597946867209384634725979468672093846347259794686720938463472597946867209384634725979468672093846347259794686720938463472597946867209384634725979468672093846347259794686720938463472597946867209384634725979468672093846347259794686720938463472597946867209384634725979468672093846347259794686720938463472597946867209384634725979468672093846347259794686720938463472597946867209384634725979468672093846347259794686720938463472597946867209384634725979468672093846347259794686720938463472597946867209384634725979468672093846347259794686720938463472597946867209384634725979468672093846347259794686720938463472597946867209384634725979468672093846347259794686720938463472597946867209384634725979468672093846347259794686720938463472597946867209384634725979468672093846347259794686720938463472597946867209384634725979468672093846347259794686720938463472597946867209384634725979468672093846347259794686720938463472597946867209384634725979468672093846347259794686720938463472597946867209384634725979468672093846347259794686720938463472597946867209384634725979468672093846347259794686720938463472597946867209384634725979468672093846347259794686720938463472597946867209384634725979468672093846347259794686720938463472597946867209384634725979468672093846347259794686720938463472597946867209384634725979468672093846347259794686720938463472597946867209384634725979468672093846347259794686720938463472597946867209384634725979468672093846347259794686720938463472597946867209384634725979468672093846347259794686720938463472597946867209384634725979468672093846347259794686720938463472597946867209384634725979468672093846347259794686720938463472597946867209384634725979468672093846347259794686720938463472597946867209384634725979468672093846347259794686720938463472597946867209384634725979468672093846347259794686720938463472597946867209384634725979468672093846347259794686720938463472597946867209384634725979468672093846347259794686720938463472597946867209384634725979468672093846347259794686720938463472597946867209384634725979468672093846347259794686720938463472597946867209384634725979468672093846347259794686720938463472597946867209384634725979468672093846347259794686720938463472597946867209384634725979468672093846347259794686720938463472597946867209384634725979468672093846347259794686720938463472597946867209384634725979468672093846347259794686720938463472597946867209384634725979468672093846347259794686720938463472597946867209384634725979468672093846347259794686720938463472597946867209384634725979468672093846347259794686720938463472597946867209384634725979468672093846347259794686720938463472597946867209384634725979468672093846347259794686720938463472597946867209384634725979468672093846347259794686720938463472597946867209384634725979468672093846347259794686720938463472597946867209384634725979468672093846347259794686720938463472597946867209384634725979468672093846347259794686720938463472597946867209384634725979468672093846347259794686720938463472597946867209384634725979468672093846347259794686720938463472597946867209384634725979468672093846347259794686720938463472597946867209384634725979468672093846347259794686720938463472597946867209384634725979468672093846347259794686720938463472597946867209384634725979468672093846347259794686720938463472597946867209384634725979468672093846347259794686720938463472597946867209384634725979468672093846347259794686720938463472597946867209384634725979468672093846347259794686720938463472597946867209384634725979468672093846347259794686720938463472597946867209384634725979468672093846347259794686720938463472597946867209384634725979468672093846347259794686720938463472597946867209384634725979468672093846347259794686720938463472597946867209384634725979468672093846347259794686720938463472597946867209384634725979468672093846347259794686720938463472597946867209384634725979468672093846347259794686720938463472597946867261d on a is not defined
+63472597946867209384634725979468672093846347259794686720938463472597946867261d:a
+                                                                               ^
+./test/errors/758588.xml:1: parser error : expected '>'
+2597946867209384634725979468672093846347259794686720938463472597946867261d:a></a
+                                                                               ^
+./test/errors/758588.xml:1: parser error : Opening and ending tag mismatch: a line 1 and a
+2597946867209384634725979468672093846347259794686720938463472597946867261d:a></a
+                                                                               ^
+./test/errors/758588.xml : failed to parse
diff --git a/result/errors/759020.xml b/result/errors/759020.xml
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/result/errors/759020.xml
diff --git a/result/errors/759020.xml.err b/result/errors/759020.xml.err
new file mode 100644
index 0000000..a0d3051
--- /dev/null
+++ b/result/errors/759020.xml.err
@@ -0,0 +1,6 @@
+./test/errors/759020.xml:3: namespace warning : xmlns: URI 00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 is not absolute
+0000000000000000000000000000000000000000000000000000000000000000000000000000000'
+                                                                               ^
+./test/errors/759020.xml:46: parser error : Couldn't find end of Start Tag s00 line 2
+                                                                   
+                                                                   ^
diff --git a/result/errors/759020.xml.str b/result/errors/759020.xml.str
new file mode 100644
index 0000000..998d6d2
--- /dev/null
+++ b/result/errors/759020.xml.str
@@ -0,0 +1,7 @@
+./test/errors/759020.xml:3: namespace warning : xmlns: URI 00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 is not absolute
+0000000000000000000000000000000000000000000000000000000000000000000000000000000'
+                                                                               ^
+./test/errors/759020.xml:46: parser error : Couldn't find end of Start Tag s00
+                                                                   
+                                                                   ^
+./test/errors/759020.xml : failed to parse
diff --git a/result/errors/759398.xml b/result/errors/759398.xml
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/result/errors/759398.xml
diff --git a/result/errors/759398.xml.err b/result/errors/759398.xml.err
new file mode 100644
index 0000000..e08d9bf
--- /dev/null
+++ b/result/errors/759398.xml.err
@@ -0,0 +1,9 @@
+./test/errors/759398.xml:210: parser error : StartTag: invalid element name
+need to worry about parsers whi<! don't expand PErefs finding
+                                ^
+./test/errors/759398.xml:309: parser error : Opening and ending tag mismatch: spec line 50 and termdef
+and provide access to their content and structure.</termdef> <termdef
+                                                            ^
+./test/errors/759398.xml:309: parser error : Extra content at the end of the document
+and provide access to their content and structure.</termdef> <termdef
+                                                             ^
diff --git a/result/errors/759398.xml.str b/result/errors/759398.xml.str
new file mode 100644
index 0000000..de9a28c
--- /dev/null
+++ b/result/errors/759398.xml.str
@@ -0,0 +1,5 @@
+./test/errors/759398.xml:210: parser error : internal error: detected an error in element content
+
+need to worry about parsers whi<! don't expand 
+                               ^
+./test/errors/759398.xml : failed to parse
diff --git a/result/errors/759573-2.xml b/result/errors/759573-2.xml
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/result/errors/759573-2.xml
diff --git a/result/errors/759573-2.xml.err b/result/errors/759573-2.xml.err
new file mode 100644
index 0000000..d8773d8
--- /dev/null
+++ b/result/errors/759573-2.xml.err
@@ -0,0 +1,58 @@
+Entity: line 1: parser error : Space required after '<!ENTITY'
+ %zz; 
+     ^
+Entity: line 1: 
+<!ENTITY<?xDOCTYPEm~?>
+        ^
+Entity: line 1: parser error : xmlParseEntityDecl: no name
+ %zz; 
+     ^
+Entity: line 1: 
+<!ENTITY<?xDOCTYPEm~?>
+        ^
+Entity: line 1: parser error : ParsePI: PI xDOCTYPEm space expected
+ %zz; 
+     ^
+Entity: line 1: 
+<!ENTITY<?xDOCTYPEm~?>
+                   ^
+Entity: line 1: parser error : Space required after '<!ENTITY'
+ %zz; 
+     ^
+Entity: line 1: 
+<!ENTITY<?xDOCTYPEm~?>
+        ^
+Entity: line 1: parser error : xmlParseEntityDecl: no name
+ %zz; 
+     ^
+Entity: line 1: 
+<!ENTITY<?xDOCTYPEm~?>
+        ^
+Entity: line 1: parser error : ParsePI: PI xDOCTYPEm space expected
+ %zz; 
+     ^
+Entity: line 1: 
+<!ENTITY<?xDOCTYPEm~?>
+                   ^
+Entity: line 1: parser error : Space required after 'ELEMENT'
+ %xx; 
+     ^
+Entity: line 3: 
+%zz;<!ELEMENTD(%MENT%MENTDŹMENTD%zNMT9KENSMYSYSTEM;MENT9%zz;
+             ^
+Entity: line 1: parser error : Content error in the external subset
+ %xx; 
+     ^
+Entity: line 3: 
+%zz;<!ELEMENTD(%MENT%MENTDŹMENTD%zNMT9KENSMYSYSTEM;MENT9%zz;
+             ^
+./test/errors/759573-2.xml:6: parser error : internal error: xmlParseInternalSubset: error detected in Markup declaration
+
+%xx;ÿggKENSMYNT&#35;MENTD&#372zz;'>
+    ^
+./test/errors/759573-2.xml:6: parser error : DOCTYPE improperly terminated
+%xx;ÿggKENSMYNT&#35;MENTD&#372zz;'>
+    ^
+./test/errors/759573-2.xml:6: parser error : Start tag expected, '<' not found
+%xx;ÿggKENSMYNT&#35;MENTD&#372zz;'>
+    ^
diff --git a/result/errors/759573-2.xml.str b/result/errors/759573-2.xml.str
new file mode 100644
index 0000000..baac164
--- /dev/null
+++ b/result/errors/759573-2.xml.str
@@ -0,0 +1,4 @@
+./test/errors/759573-2.xml:2: parser error : Extra content at the end of the document
+<!DOCTYPE test [
+               ^
+./test/errors/759573-2.xml : failed to parse
diff --git a/result/errors/759573.xml b/result/errors/759573.xml
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/result/errors/759573.xml
diff --git a/result/errors/759573.xml.err b/result/errors/759573.xml.err
new file mode 100644
index 0000000..2c21e9a
--- /dev/null
+++ b/result/errors/759573.xml.err
@@ -0,0 +1,31 @@
+./test/errors/759573.xml:1: parser error : Space required after '<!ENTITY'
+ELEMENT t (A)><!ENTITY % xx '&#37;<![INCLUDE[000&#37;&#3000;000&#37;z;'><!ENTITY
+                                                                               ^
+./test/errors/759573.xml:1: parser error : Space required after the entity name
+LEMENT t (A)><!ENTITY % xx '&#37;<![INCLUDE[000&#37;&#3000;000&#37;z;'><!ENTITYz
+                                                                               ^
+./test/errors/759573.xml:1: parser error : Entity value required
+LEMENT t (A)><!ENTITY % xx '&#37;<![INCLUDE[000&#37;&#3000;000&#37;z;'><!ENTITYz
+                                                                               ^
+Entity: line 1: parser error : PEReference: no name
+ %xx; 
+     ^
+Entity: line 1: 
+%<![INCLUDE[000%ஸ000%z;
+ ^
+Entity: line 1: parser error : Content error in the external subset
+ %xx; 
+     ^
+Entity: line 1: 
+%<![INCLUDE[000%ஸ000%z;
+            ^
+./test/errors/759573.xml:1: parser error : internal error: xmlParseInternalSubset: error detected in Markup declaration
+
+T t (A)><!ENTITY % xx '&#37;<![INCLUDE[000&#37;&#3000;000&#37;z;'><!ENTITYz>%xx;
+                                                                               ^
+./test/errors/759573.xml:1: parser error : DOCTYPE improperly terminated
+T t (A)><!ENTITY % xx '&#37;<![INCLUDE[000&#37;&#3000;000&#37;z;'><!ENTITYz>%xx;
+                                                                               ^
+./test/errors/759573.xml:1: parser error : Start tag expected, '<' not found
+T t (A)><!ENTITY % xx '&#37;<![INCLUDE[000&#37;&#3000;000&#37;z;'><!ENTITYz>%xx;
+                                                                               ^
diff --git a/result/errors/759573.xml.str b/result/errors/759573.xml.str
new file mode 100644
index 0000000..1b6addb
--- /dev/null
+++ b/result/errors/759573.xml.str
@@ -0,0 +1,4 @@
+./test/errors/759573.xml:1: parser error : Extra content at the end of the document
+<?h?><!DOCTYPEt[<!ELEMENT t (A)><!ENTITY % xx '&#37;<![INCLUDE[000&#37;&#3000;00
+               ^
+./test/errors/759573.xml : failed to parse
diff --git a/result/errors/content1.xml.err b/result/errors/content1.xml.err
index 425be39..9fcd603 100644
--- a/result/errors/content1.xml.err
+++ b/result/errors/content1.xml.err
@@ -13,4 +13,4 @@
                          ^
 ./test/errors/content1.xml:7: parser error : Start tag expected, '<' not found
 <!ELEMENT aElement (a |b * >
-                           ^
+                         ^
diff --git a/result/noent/cdata-2-byte-UTF-8.xml b/result/noent/cdata-2-byte-UTF-8.xml
new file mode 100644
index 0000000..8552efc
--- /dev/null
+++ b/result/noent/cdata-2-byte-UTF-8.xml
@@ -0,0 +1,6 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- This tests that two-byte UTF-8 characters are parsed properly when split across a buffer boundary of length XML_PARSER_BIG_BUFFER_SIZE (300 bytes). -->
+<doc>
+<p><![CDATA[ČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČ]]></p>
+<p><![CDATA[ ČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČ]]></p>
+</doc>
diff --git a/result/noent/cdata-3-byte-UTF-8.xml b/result/noent/cdata-3-byte-UTF-8.xml
new file mode 100644
index 0000000..b959a12
--- /dev/null
+++ b/result/noent/cdata-3-byte-UTF-8.xml
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- This tests that three-byte UTF-8 characters are parsed properly when split across a buffer boundary of length XML_PARSER_BIG_BUFFER_SIZE (300 bytes). -->
+<doc>
+<p><![CDATA[牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛]]></p>
+<p><![CDATA[ 牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛]]></p>
+<p><![CDATA[  牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛]]></p>
+</doc>
diff --git a/result/noent/cdata-4-byte-UTF-8.xml b/result/noent/cdata-4-byte-UTF-8.xml
new file mode 100644
index 0000000..4d1d9a8
--- /dev/null
+++ b/result/noent/cdata-4-byte-UTF-8.xml
@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- This tests that four-byte UTF-8 characters are parsed properly when split across a buffer boundary of length XML_PARSER_BIG_BUFFER_SIZE (300 bytes). -->
+<doc>
+<p><![CDATA[🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦]]></p>
+<p><![CDATA[ 🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦]]></p>
+<p><![CDATA[  🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦]]></p>
+<p><![CDATA[   🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦]]></p>
+</doc>
diff --git a/result/relaxng/710744_err b/result/relaxng/710744_err
new file mode 100644
index 0000000..54f0226
--- /dev/null
+++ b/result/relaxng/710744_err
@@ -0,0 +1 @@
+./test/relaxng/710744.rng validates
diff --git a/result/relaxng/710744_valid b/result/relaxng/710744_valid
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/result/relaxng/710744_valid
diff --git a/result/relaxng/pattern3_1 b/result/relaxng/pattern3_1
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/result/relaxng/pattern3_1
diff --git a/result/relaxng/pattern3_1.err b/result/relaxng/pattern3_1.err
new file mode 100644
index 0000000..b1a9803
--- /dev/null
+++ b/result/relaxng/pattern3_1.err
@@ -0,0 +1 @@
+./test/relaxng/pattern3_1.xml validates
diff --git a/result/schemas/regexp-char-ref_0_0.err b/result/schemas/regexp-char-ref_0_0.err
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/result/schemas/regexp-char-ref_0_0.err
diff --git a/result/schemas/regexp-char-ref_1_0.err b/result/schemas/regexp-char-ref_1_0.err
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/result/schemas/regexp-char-ref_1_0.err
diff --git a/result/valid/t8.xml.err b/result/valid/t8.xml.err
index d795788..1a3c006 100644
--- a/result/valid/t8.xml.err
+++ b/result/valid/t8.xml.err
@@ -16,4 +16,4 @@
           ^
 Entity: line 1: 
 &lt;!ELEMENT root (middle) >
- ^
+^
diff --git a/result/valid/t8a.xml.err b/result/valid/t8a.xml.err
index d795788..1a3c006 100644
--- a/result/valid/t8a.xml.err
+++ b/result/valid/t8a.xml.err
@@ -16,4 +16,4 @@
           ^
 Entity: line 1: 
 &lt;!ELEMENT root (middle) >
- ^
+^
diff --git a/rngparser.c b/rngparser.c
index e681e0c..7731d4d 100644
--- a/rngparser.c
+++ b/rngparser.c
@@ -95,7 +95,7 @@
     xmlHashTablePtr datatypes;
 
     /*
-     * dictionnary and keywords
+     * dictionary and keywords
      */
     xmlDictPtr     dict;
     const xmlChar *key_attribute;
diff --git a/runtest.c b/runtest.c
index 02fe09a..1861577 100644
--- a/runtest.c
+++ b/runtest.c
@@ -81,8 +81,10 @@
  */
 #ifdef	O_BINARY
 #define RD_FLAGS	O_RDONLY | O_BINARY
+#define WR_FLAGS	O_WRONLY | O_CREAT | O_TRUNC | O_BINARY
 #else
-#define	RD_FLAGS	O_RDONLY
+#define RD_FLAGS	O_RDONLY
+#define WR_FLAGS	O_WRONLY | O_CREAT | O_TRUNC
 #endif
 
 typedef int (*functest) (const char *filename, const char *result,
@@ -100,6 +102,7 @@
     int     options;  /* parser options for the test */
 };
 
+static int update_results = 0;
 static int checkTestFile(const char *filename);
 
 #if defined(_WIN32) && !defined(__CYGWIN__)
@@ -604,12 +607,34 @@
     return(1);
 }
 
-static int compareFiles(const char *r1, const char *r2) {
+static int compareFiles(const char *r1 /* temp */, const char *r2 /* result */) {
     int res1, res2;
     int fd1, fd2;
     char bytes1[4096];
     char bytes2[4096];
 
+    if (update_results) {
+        fd1 = open(r1, RD_FLAGS);
+        if (fd1 < 0)
+            return(-1);
+        fd2 = open(r2, WR_FLAGS, 0644);
+        if (fd2 < 0) {
+            close(fd1);
+            return(-1);
+        }
+        do {
+            res1 = read(fd1, bytes1, 4096);
+            if (res1 <= 0)
+                break;
+            res2 = write(fd2, bytes1, res1);
+            if (res2 <= 0 || res2 != res1)
+                break;
+        } while (1);
+        close(fd2);
+        close(fd1);
+        return(res1 != 0);
+    }
+
     fd1 = open(r1, RD_FLAGS);
     if (fd1 < 0)
         return(-1);
@@ -646,13 +671,31 @@
     int idx = 0;
     struct stat info;
 
-    if (stat(filename, &info) < 0)
+    if (update_results) {
+        fd = open(filename, WR_FLAGS, 0644);
+        if (fd < 0) {
+	    fprintf(stderr, "failed to open %s for writing", filename);
+            return(-1);
+	}
+        res = write(fd, mem, size);
+        close(fd);
+        return(res != size);
+    }
+
+    if (stat(filename, &info) < 0) {
+        fprintf(stderr, "failed to stat %s\n", filename);
 	return(-1);
-    if (info.st_size != size)
+    }
+    if (info.st_size != size) {
+        fprintf(stderr, "file %s is %ld bytes, result is %d bytes\n",
+	        filename, info.st_size, size);
         return(-1);
+    }
     fd = open(filename, RD_FLAGS);
-    if (fd < 0)
+    if (fd < 0) {
+	fprintf(stderr, "failed to open %s for reading", filename);
         return(-1);
+    }
     while (idx < size) {
         res = read(fd, bytes, 4096);
 	if (res <= 0)
@@ -671,6 +714,9 @@
 	idx += res;
     }
     close(fd);
+    if (idx != size) {
+	fprintf(stderr,"Compare error index %d, size %d\n", idx, size);
+    }
     return(idx != size);
 }
 
@@ -1827,7 +1873,7 @@
     ctxt = xmlCreatePushParserCtxt(NULL, NULL, base + cur, 4, filename);
     xmlCtxtUseOptions(ctxt, options);
     cur += 4;
-    while (cur < size) {
+    do {
         if (cur + 1024 >= size) {
 #ifdef LIBXML_HTML_ENABLED
 	    if (options & XML_PARSE_HTML)
@@ -1845,7 +1891,7 @@
 	    xmlParseChunk(ctxt, base + cur, 1024, 0);
 	    cur += 1024;
 	}
-    }
+    } while (cur < size);
     doc = ctxt->myDoc;
 #ifdef LIBXML_HTML_ENABLED
     if (options & XML_PARSE_HTML)
@@ -1871,7 +1917,7 @@
     if ((base == NULL) || (res != 0)) {
 	if (base != NULL)
 	    xmlFree((char *)base);
-        fprintf(stderr, "Result for %s failed\n", filename);
+        fprintf(stderr, "Result for %s failed in %s\n", filename, result);
 	return(-1);
     }
     xmlFree((char *)base);
@@ -1926,7 +1972,7 @@
     if ((base == NULL) || (res != 0)) {
 	if (base != NULL)
 	    xmlFree((char *)base);
-        fprintf(stderr, "Result for %s failed\n", filename);
+        fprintf(stderr, "Result for %s failed in %s\n", filename, result);
 	return(-1);
     }
     xmlFree((char *)base);
@@ -2037,16 +2083,16 @@
 	    xmlDocDumpMemory(doc, (xmlChar **) &base, &size);
 	}
 	res = compareFileMem(result, base, size);
+	if (res != 0) {
+	    fprintf(stderr, "Result for %s failed in %s\n", filename, result);
+	    return(-1);
+	}
     }
     if (doc != NULL) {
 	if (base != NULL)
 	    xmlFree((char *)base);
 	xmlFreeDoc(doc);
     }
-    if (res != 0) {
-        fprintf(stderr, "Result for %s failed\n", filename);
-	return(-1);
-    }
     if (err != NULL) {
 	res = compareFileMem(err, testErrors, testErrorsSize);
 	if (res != 0) {
@@ -2159,7 +2205,7 @@
             free(temp);
         }
 	if (ret) {
-	    fprintf(stderr, "Result for %s failed\n", filename);
+	    fprintf(stderr, "Result for %s failed in %s\n", filename, result);
 	    return(-1);
 	}
     }
@@ -2271,10 +2317,19 @@
 static xmlDocPtr xpathDocument;
 
 static void
+ignoreGenericError(void *ctx ATTRIBUTE_UNUSED,
+        const char *msg ATTRIBUTE_UNUSED, ...) {
+}
+
+static void
 testXPath(const char *str, int xptr, int expr) {
+    xmlGenericErrorFunc handler = ignoreGenericError;
     xmlXPathObjectPtr res;
     xmlXPathContextPtr ctxt;
 
+    /* Don't print generic errors to stderr. */
+    initGenericErrorDefaultFunc(&handler);
+
     nb_tests++;
 #if defined(LIBXML_XPTR_ENABLED)
     if (xptr) {
@@ -2303,6 +2358,9 @@
     xmlXPathDebugDumpObject(xpathOutput, res, 0);
     xmlXPathFreeObject(res);
     xmlXPathFreeContext(ctxt);
+
+    /* Reset generic error handler. */
+    initGenericErrorDefaultFunc(NULL);
 }
 
 /**
@@ -2362,7 +2420,7 @@
     if (result != NULL) {
 	ret = compareFiles(temp, result);
 	if (ret) {
-	    fprintf(stderr, "Result for %s failed\n", filename);
+	    fprintf(stderr, "Result for %s failed in %s\n", filename, result);
 	}
     }
 
@@ -2533,7 +2591,7 @@
     if (result != NULL) {
 	ret = compareFiles(temp, result);
 	if (ret) {
-	    fprintf(stderr, "Result for %s failed\n", filename);
+	    fprintf(stderr, "Result for %s failed in %s\n", filename, result);
 	    res = 1;
 	}
     }
@@ -2661,7 +2719,7 @@
     if (result != NULL) {
 	ret = compareFiles(temp, result);
 	if (ret) {
-	    fprintf(stderr, "Result for %s failed\n", filename);
+	    fprintf(stderr, "Result for %s failed in %s\n", filename, result);
 	    res = 1;
 	}
     }
@@ -3430,11 +3488,11 @@
     result[499] = 0;
     memcpy(xml + len, ".xml", 5);
 
-    if (!checkTestFile(xml)) {
+    if (!checkTestFile(xml) && !update_results) {
 	fprintf(stderr, "Missing xml file %s\n", xml);
 	return(-1);
     }
-    if (!checkTestFile(result)) {
+    if (!checkTestFile(result) && !update_results) {
 	fprintf(stderr, "Missing result file %s\n", result);
 	return(-1);
     }
@@ -3533,7 +3591,7 @@
 
     ret = compareFiles(temp, result);
     if (ret) {
-	fprintf(stderr, "Result for %s failed\n", filename);
+	fprintf(stderr, "Result for %s failed in %s\n", filename, result);
 	ret = 1;
     }
     if (temp != NULL) {
@@ -3805,7 +3863,7 @@
     prefix[len] = 0;
 
     snprintf(buf, 499, "result/c14n/%s/%s", subdir,prefix);
-    if (!checkTestFile(buf)) {
+    if (!checkTestFile(buf) && !update_results) {
         fprintf(stderr, "Missing result file %s", buf);
 	return(-1);
     }
@@ -4354,9 +4412,9 @@
 	    } else {
 	        error = NULL;
 	    }
-	    if ((result) &&(!checkTestFile(result))) {
+	    if ((result) &&(!checkTestFile(result)) && !update_results) {
 	        fprintf(stderr, "Missing result file %s\n", result);
-	    } else if ((error) &&(!checkTestFile(error))) {
+	    } else if ((error) &&(!checkTestFile(error)) && !update_results) {
 	        fprintf(stderr, "Missing error file %s\n", error);
 	    } else {
 		mem = xmlMemUsed();
@@ -4440,6 +4498,8 @@
     for (a = 1; a < argc;a++) {
         if (!strcmp(argv[a], "-v"))
 	    verbose = 1;
+        else if (!strcmp(argv[a], "-u"))
+	    update_results = 1;
         else if (!strcmp(argv[a], "-quiet"))
 	    tests_quiet = 1;
 	else {
diff --git a/schematron.c b/schematron.c
index eb4befe..6200f2d 100644
--- a/schematron.c
+++ b/schematron.c
@@ -133,7 +133,7 @@
     int flags;			/* specific to this schematron */
 
     void *_private;		/* unused by the library */
-    xmlDictPtr dict;		/* the dictionnary used internally */
+    xmlDictPtr dict;		/* the dictionary used internally */
 
     const xmlChar *title;	/* the title if any */
 
@@ -186,7 +186,7 @@
     const char *buffer;
     int size;
 
-    xmlDictPtr dict;            /* dictionnary for interned string names */
+    xmlDictPtr dict;            /* dictionary for interned string names */
 
     int nberrors;
     int err;
@@ -245,7 +245,7 @@
  *
  * Handle a parser error
  */
-static void
+static void LIBXML_ATTR_FORMAT(4,0)
 xmlSchematronPErr(xmlSchematronParserCtxtPtr ctxt, xmlNodePtr node, int error,
               const char *msg, const xmlChar * str1, const xmlChar * str2)
 {
diff --git a/test/HTML/758605.html b/test/HTML/758605.html
new file mode 100644
index 0000000..9b1b3c2
--- /dev/null
+++ b/test/HTML/758605.html
@@ -0,0 +1 @@
+&:ê
diff --git a/test/HTML/758606.html b/test/HTML/758606.html
new file mode 100644
index 0000000..01a013c
--- /dev/null
+++ b/test/HTML/758606.html
@@ -0,0 +1 @@
+<!--<!doctype
diff --git a/test/HTML/758606_2.html b/test/HTML/758606_2.html
new file mode 100644
index 0000000..daa185b
--- /dev/null
+++ b/test/HTML/758606_2.html
@@ -0,0 +1 @@
+<!--‘<!dOctYPE
diff --git a/test/XPath/docs/ns b/test/XPath/docs/ns
new file mode 100644
index 0000000..88f4575
--- /dev/null
+++ b/test/XPath/docs/ns
@@ -0,0 +1,3 @@
+<doc xmlns:ns1="nsuri1">
+  <elem xmlns:ns2="nsuri2"/>
+</doc>
diff --git a/test/XPath/expr/base b/test/XPath/expr/base
index 9aaed4f..f57e4d0 100644
--- a/test/XPath/expr/base
+++ b/test/XPath/expr/base
@@ -3,3 +3,5 @@
 2*3
 1+2*3+4
 (1+2)*(3+4)
+1*1+1*1+1*1+1*1+1*1+1*1+1*1+1*1+1*1+1*1+1*1+1*1+1*1+1*1+1*1+1*1+1*1+1*1+1*1+1*1+1*1
+self::-name
diff --git a/test/XPath/tests/nssimple b/test/XPath/tests/nssimple
new file mode 100644
index 0000000..d2a9528
--- /dev/null
+++ b/test/XPath/tests/nssimple
@@ -0,0 +1,3 @@
+/doc/elem/namespace::node()/..
+/doc/elem/namespace::*/self::node()[true()]
+//*[namespace::ns1]
diff --git a/test/XPath/xptr/viderror b/test/XPath/xptr/viderror
new file mode 100644
index 0000000..da8c53b
--- /dev/null
+++ b/test/XPath/xptr/viderror
@@ -0,0 +1 @@
+xpointer(non-existing-fn()/range-to(id('chapter2')))
diff --git a/test/cdata-2-byte-UTF-8.xml b/test/cdata-2-byte-UTF-8.xml
new file mode 100644
index 0000000..8552efc
--- /dev/null
+++ b/test/cdata-2-byte-UTF-8.xml
@@ -0,0 +1,6 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- This tests that two-byte UTF-8 characters are parsed properly when split across a buffer boundary of length XML_PARSER_BIG_BUFFER_SIZE (300 bytes). -->
+<doc>
+<p><![CDATA[ČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČ]]></p>
+<p><![CDATA[ ČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČČ]]></p>
+</doc>
diff --git a/test/cdata-3-byte-UTF-8.xml b/test/cdata-3-byte-UTF-8.xml
new file mode 100644
index 0000000..b959a12
--- /dev/null
+++ b/test/cdata-3-byte-UTF-8.xml
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- This tests that three-byte UTF-8 characters are parsed properly when split across a buffer boundary of length XML_PARSER_BIG_BUFFER_SIZE (300 bytes). -->
+<doc>
+<p><![CDATA[牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛]]></p>
+<p><![CDATA[ 牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛]]></p>
+<p><![CDATA[  牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛]]></p>
+</doc>
diff --git a/test/cdata-4-byte-UTF-8.xml b/test/cdata-4-byte-UTF-8.xml
new file mode 100644
index 0000000..4d1d9a8
--- /dev/null
+++ b/test/cdata-4-byte-UTF-8.xml
@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- This tests that four-byte UTF-8 characters are parsed properly when split across a buffer boundary of length XML_PARSER_BIG_BUFFER_SIZE (300 bytes). -->
+<doc>
+<p><![CDATA[🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦]]></p>
+<p><![CDATA[ 🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦]]></p>
+<p><![CDATA[  🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦]]></p>
+<p><![CDATA[   🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦🍦]]></p>
+</doc>
diff --git a/test/errors/758588.xml b/test/errors/758588.xml
new file mode 100644
index 0000000..bec7e93
--- /dev/null
+++ b/test/errors/758588.xml
@@ -0,0 +1 @@
+<a-340282366920938463472597946867209384634725979468672093846347259794686720938463472597946867209384634725979468672093846347259794686720938463472597946867209384634725979468672093846347259794686720938463472597946867209384634725979468672093846347259794686720938463472597946867209384634725979468672093846347259794686720938463472597946867209384634725979468672093846347259794686720938463472597946867209384634725979468672093846347259794686720938463472597946867209384634725979468672093846347259794686720938463472597946867209384634725979468672093846347259794686720938463472597946867209384634725979468672093846347259794686720938463472597946867209384634725979468672093846347259794686720938463472597946867209384634725979468672093846347259794686720938463472597946867209384634725979468672093846347259794686720938463472597946867209384634725979468672093846347259794686720938463472597946867209384634725979468672093846347259794686720938463472597946867209384634725979468672093846347259794686720938463472597946867209384634725979468672093846347259794686720938463472597946867209384634725979468672093846347259794686720938463472597946867209384634725979468672093846347259794686720938463472597946867209384634725979468672093846347259794686720938463472597946867209384634725979468672093846347259794686720938463472597946867209384634725979468672093846347259794686720938463472597946867209384634725979468672093846347259794686720938463472597946867209384634725979468672093846347259794686720938463472597946867209384634725979468672093846347259794686720938463472597946867209384634725979468672093846347259794686720938463472597946867209384634725979468672093846347259794686720938463472597946867209384634725979468672093846347259794686720938463472597946867209384634725979468672093846347259794686720938463472597946867209384634725979468672093846347259794686720938463472597946867209384634725979468672093846347259794686720938463472597946867209384634725979468672093846347259794686720938463472597946867209384634725979468672093846347259794686720938463472597946867209384634725979468672093846347259794686720938463472597946867209384634725979468672093846347259794686720938463472597946867209384634725979468672093846347259794686720938463472597946867209384634725979468672093846347259794686720938463472597946867209384634725979468672093846347259794686720938463472597946867209384634725979468672093846347259794686720938463472597946867209384634725979468672093846347259794686720938463472597946867209384634725979468672093846347259794686720938463472597946867209384634725979468672093846347259794686720938463472597946867209384634725979468672093846347259794686720938463472597946867209384634725979468672093846347259794686720938463472597946867209384634725979468672093846347259794686720938463472597946867209384634725979468672093846347259794686720938463472597946867209384634725979468672093846347259794686720938463472597946867209384634725979468672093846347259794686720938463472597946867209384634725979468672093846347259794686720938463472597946867209384634725979468672093846347259794686720938463472597946867209384634725979468672093846347259794686720938463472597946867209384634725979468672093846347259794686720938463472597946867209384634725979468672093846347259794686720938463472597946867209384634725979468672093846347259794686720938463472597946867209384634725979468672093846347259794686720938463472597946867209384634725979468672093846347259794686720938463472597946867209384634725979468672093846347259794686720938463472597946867209384634725979468672093846347259794686720938463472597946867209384634725979468672093846347259794686720938463472597946867209384634725979468672093846347259794686720938463472597946867209384634725979468672093846347259794686720938463472597946867209384634725979468672093846347259794686720938463472597946867209384634725979468672093846347259794686720938463472597946867209384634725979468672093846347259794686720938463472597946867209384634725979468672093846347259794686720938463472597946867209384634725979468672093846347259794686720938463472597946867209384634725979468672093846347259794686720938463472597946867209384634725979468672093846347259794686720938463472597946867209384634725979468672093846347259794686720938463472597946867209384634725979468672093846347259794686720938463472597946867209384634725979468672093846347259794686720938463472597946867209384634725979468672093846347259794686720938463472597946867209384634725979468672093846347259794686720938463472597946867209384634725979468672093846347259794686720938463472597946867209384634725979468672093846347259794686720938463472597946867209384634725979468672093846347259794686720938463472597946867209384634725979468672093846347259794686720938463472597946867209384634725979468672093846347259794686720938463472597946867209384634725979468672093846347259794686720938463472597946867209384634725979468672093846347259794686720938463472597946867209384634725979468672093846347259794686720938463472597946867209384634725979468672093846347259794686720938463472597946867209384634725979468672093846347259794686720938463472597946867209384634725979468672093846347259794686720938463472597946867209384634725979468672093846347259794686720938463472597946867209384634725979468672093846347259794686720938463472597946867209384634725979468672093846347259794686720938463472597946867209384634725979468672093846347259794686720938463472597946867209384634725979468672093846347259794686720938463472597946867209384634725979468672093846347259794686720938463472597946867209384634725979468672093846347259794686720938463472597946867209384634725979468672093846347259794686720938463472597946867209384634725979468672093846347259794686720938463472597946867209384634725979468672093846347259794686720938463472597946867209384634725979468672093846347259794686720938463472597946867209384634725979468672093846347259794686720938463472597946867209384634725979468672093846347259794686720938463472597946867209384634725979468672093846347259794686720938463472597946867209384634725979468672093846347259794686720938463472597946867209384634725979468672093846347259794686720938463472597946867209384634725979468672093846347259794686720938463472597946867209384634725979468672093846347259794686720938463472597946867209384634725979468672093846347259794686720938463472597946867209384634725979468672093846347259794686720938463472597946867209384634725979468672093846347259794686720938463472597946867209384634725979468672093846347259794686720938463472597946867209384634725979468672093846347259794686720938463472597946867209384634725979468672093846347259794686720938463472597946867209384634725979468672093846347259794686720938463472597946867209384634725979468672093846347259794686720938463472597946867209384634725979468672093846347259794686720938463472597946867209384634725979468672093846347259794686720938463472597946867209384634725979468672093846347259794686720938463472597946867209384634725979468672093846347259794686720938463472597946867209384634725979468672093846347259794686720938463472597946867209384634725979468672093846347259794686720938463472597946867209384634725979468672093846347259794686720938463472597946867209384634725979468672093846347259794686720938463472597946867209384634725979468672093846347259794686720938463472597946867209384634725979468672093846347259794686720938463472597946867209384634725979468672093846347259794686720938463472597946867209384634725979468672093846347259794686720938463472597946867209384634725979468672093846347259794686720938463472597946867209384634725979468672093846347259794686720938463472597946867209384634725979468672093846347259794686720938463472597946867209384634725979468672093846347259794686720938463472597946867209384634725979468672093846347259794686720938463472597946867209384634725979468672093846347259794686720938463472597946867209384634725979468672093846347259794686720938463472597946867209384634725979468672093846347259794686720938463472597946867209384634725979468672093846347259794686720938463472597946867209384634725979468672093846347259794686720938463472597946867209384634725979468672093846347259794686720938463472597946867209384634725979468672093846347259794686720938463472597946867209384634725979468672093846347259794686720938463472597946867209384634725979468672093846347259794686720938463472597946867209384634725979468672093846347259794686720938463472597946867209384634725979468672093846347259794686720938463472597946867209384634725979468672093846347259794686720938463472597946867209384634725979468672093846347259794686720938463472597946867209384634725979468672093846347259794686720938463472597946867209384634725979468672093846347259794686720938463472597946867209384634725979468672093846347259794686720938463472597946867209384634725979468672093846347259794686720938463472597946867209384634725979468672093846347259794686720938463472597946867209384634725979468672093846347259794686720938463472597946867209384634725979468672093846347259794686720938463472597946867209384634725979468672093846347259794686720938463472597946867209384634725979468672093846347259794686720938463472597946867209384634725979468672093846347259794686720938463472597946867209384634725979468672093846347259794686720938463472597946867209384634725979468672093846347259794686720938463472597946867209384634725979468672093846347259794686720938463472597946867209384634725979468672093846347259794686720938463472597946867209384634725979468672093846347259794686720938463472597946867209384634725979468672093846347259794686720938463472597946867209384634725979468672093846347259794686720938463472597946867209384634725979468672093846347259794686720938463472597946867209384634725979468672093846347259794686720938463472597946867209384634725979468672093846347259794686720938463472597946867209384634725979468672093846347259794686720938463472597946867209384634725979468672093846347259794686720938463472597946867209384634725979468672093846347259794686720938463472597946867209384634725979468672093846347259794686720938463472597946867209384634725979468672093846347259794686720938463472597946867209384634725979468672093846347259794686720938463472597946867209384634725979468672093846347259794686720938463472597946867209384634725979468672093846347259794686720938463472597946867209384634725979468672093846347259794686720938463472597946867209384634725979468672093846347259794686720938463472597946867261d:a></a
\ No newline at end of file
diff --git a/test/errors/759020.xml b/test/errors/759020.xml
new file mode 100644
index 0000000..db23275
--- /dev/null
+++ b/test/errors/759020.xml
@@ -0,0 +1,46 @@
+<?l 00000000000000000000000000000?>
+<s00 w0000="000" h00000="000"
+ xmlns = '00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000'       
+                                                                              
+                                                                              
+                                                                              
+           
+                                                                              
+                                                                              
+                                                                              
+                                                                              
+                                                                              
+                                                                              
+                                                                              
+                                                                              
+                                                                              
+                                                                              
+                                                                              
+                                                                              
+                                                                              
+                                                                              
+                                                                              
+                                                                              
+                                                                              
+                                                                              
+                                                                              
+                                                                              
+                                                                              
+                                                                              
+                                                                              
+                                                                              
+                                                                              
+                                                                              
+                                                                              
+                                                                              
+                                                                              
+                                                                              
+                                                                              
+                                                                              
+                                                                              
+                                                                              
+                                                                              
+                                                                              
+                                                                              
+                                                                              
+                                                                   
\ No newline at end of file
diff --git a/test/errors/759398.xml b/test/errors/759398.xml
new file mode 100755
index 0000000..132e029
--- /dev/null
+++ b/test/errors/759398.xml
@@ -0,0 +1,326 @@
+<?xml version='1.0' encoding='ISO-8859-5' standalone='no'?>
+<!DOCTYPE spec SYSTEM "dtds/spec.dtd" [
+
+<!-- LAST TOUCHED BY: Tim Bray, 8 February 1997 -->
+
+<!-- The words 'FINAL EDIT' in comments mark places where changes
+need to be made after approval of the document by the ERB, before
+publication.  -->
+
+<!ENTITY XML.version "1.0">
+<!ENTITY doc.date "10 February 1998">
+<!ENTITY iso6.doc.date "19980210">
+<!ENTITY w3c.doc.date "02-Feb-1998">
+<!ENTITY draft.day '10'>
+<!ENTITY draft.month 'February'>
+<!ENTITY draft.year '1998'>
+
+<!ENTITY WebSGML 
+ 'WebSGML Adaptations Annex to ISO 8879'>
+
+<!ENTITY lt     "<"> 
+<!ENTITY gt     ">"> 
+<!ENTITY xmlpio "'&lt;?xml'">
+<!ENTITY pic    "'?>'">
+<!ENTITY br     "\n">
+<!ENTITY cellback '#c0d9c0'>
+<!ENTITY mdash  "--"> <!-- &#x2014, but nsgmls doesn't grok hex -->
+<!ENTITY com    "--">
+<!ENTITY como   "--">
+<!ENTITY comc   "--">
+<!ENTITY hcro   "&amp;#x">
+<!-- <!ENTITY nbsp " "> -->
+<!ENTITY nbsp   "&#160;">
+<!ENTITY magicents "<code>amp</code>,
+<code>lt</code>,
+<code>gt</code>,
+<code>apos</code>,
+<code>quot</code>">
+ 
+<!-- audience and distribution status:  for use at publication time -->
+<!ENTITY doc.audience "public review and discussion">
+<!ENTITY doc.distribution "may be dislributed freely, as long as
+all text and legal notices remain intact">
+
+]>
+
+<!-- for Panorama *-->
+<?VERBATIM "eg" ?>
+
+<spec>
+<header>
+<title>Extensible Markup Language (XML) 1.0</title>
+<version></version>
+<w3c-designation>REC-xml-&iso6.doc.date;</w3c-designation>
+<w3c-doctype>W3C Recommendation</w3c-doctype>
+<pubdate><day>&draft.day;</day><month>&draft.month;</month><year>&draft.year;</year></pubdate>
+
+<publoc>
+<loc  href="http://www.w3.org/TR/1998/REC-xml-&iso6.doc.date;">
+http://www.w3.org/TR/1998/REC-xml-&iso6.doc.date;</loc>
+<loc  href="http://www.w3.org/TR/1998/REC-xml-&iso6.doc.date;.xml">
+http://www.w3.org/TR/1998/REC-xml-&iso6.doc.date;.xml</loc>
+<loc  href="http://www.w3.org/TR/1998/REC-xml-&iso6.doc.date;.html">
+http://www.w3.org/TR/1998/REC-xml-&iso6.doc.date;.html</loc>
+<loc  href="http://www.w3.org/TR/1998/REC-xml-&iso6.doc.date;.pdf">
+http://www.w3.org/TR/1998/REC-xml-&iso6.doc.date;.pdf</loc>
+<loc  href="http://www.w3.org/TR/1998/REC-xml-&iso6.doc.date;.ps">
+http://www.w3.org/TR/1998/REC-xml-&iso6.doc.date;.ps</loc>
+</publoc>
+<latestloc>
+<loc  href="http://www.w3.org/TR/REC-xml">
+httÿÿÿ€www.w3.org/TR/REC-xml</loc>
+</latestloc>
+<prevlocs>
+<loc  href="http://www.w3.org/TR/PR-xml-971208">
+http://www.w3.org/TR/PR-xml-971208</loc>
+<!--
+<loc  href='http://www.w3.org/TR/WD-xml-961114'>
+http://www.w3.org/TR/WD-xml-961114</loc>
+<loc  href='http://www.w3.org/TR/WD-xml-lang-970331'>
+http://www.w3.org/TR/WD-xml-lang-970331</loc>
+<loc  href='http://www.w3.org/TR/WD-xml-lang-970630'>
+http://www.w3.org/TR/WD-xml-lang-970630</loc>
+<loc  href='http://www.w3.org/TR/WD-xml-970807'>
+http://www.w3.org/TR/WD-xml-970807</loc>
+<loc  href='http://www.w3.org/TR/WD-xml-971117'>
+http://www.w3.org/TR/WD-xml-971117</loc>-->
+</prevlocs>
+<authlist>
+<author><name>Tim Bray</name>
+<affiliation>Textuality and Netscape</affiliation>
+<email 
+href="mailto:tbray@textuality.com">tbray@textuality.com</email></author>
+<author><name>Jean Paoli</name>
+<affiliation>Microsoft</affiliation>
+<email href="mailto:jeanpa@microsoft.com">jeanpa@microsoft.com</email></author>
+<author><name>C. M. Sperberg-McQueen</name>
+<affiliation>University of Illinois at Chicago</affiliation>
+<email href="mailto:cmsmcq@uic.edu">cmsmcq@uic.edu</email></author>
+</authlist>
+<abstract>
+<p>The Extensible Markup Language (XML) is a subset of
+SGML that is completely described in this document. Its goal is to
+enable generic SGML to be served, received, and processed on the Web
+in the way that is now possible with HTML. XML has been designed for
+ease of implementation and for interoperability with both SGML and
+HTML.</p>
+</abstract>
+<status>
+<p>This document has been reviewed by W3C Members and
+other interested parties and has been endorsed by the
+Director as a W3C Recommendation. It is a stable
+document and may be used as reference material or cited
+as a normative reference from another document. W3C's
+role in making the Recommendation is to draw attention
+to the spPcification and to promote its widespread
+deployment. This enhances the functionality and
+interoperability of the Web.</p>
+<p>
+This document specifies a syntax created by subsetting an existing,
+widely used international text processing standard (Standard
+Generalized Markup Language, ISO 8879:1986(E) as amended and
+corrected) for use on the World Wide Web.  It is a product of the W3C
+XML Activity, details of which can be found at <loc
+href='http://www.w3.org/XML'>http://www.w3.org/XML</loc>.  A list of
+current W3C Recommendations and other technical documents can be found
+at <loc href='http://www.w3.org/TR'>http://www.w3.org/TR</loc>.
+</p>
+<p>This specification uses the term URI, which is defined by <bibref
+ref="Berners-Lee"/>, a work in progress expected to update <bibref
+ref="RFC1738"/> and <bibref ref="RFC1808"/>. 
+</p>
+<p>The list of known errors in this specification is 
+available at 
+<loc href='http://www.w3.org/XML/xml-19980210-errata'>http://www.w3.org/XML/xml-19980210-errata</loc>.</p>
+<p>Please report errors in this document to 
+<loc href='mailto:xml-editor@w3.org'>xml-editor@w3.org</loc>.
+</p>
+</status>
+
+
+<pubstmt>
+<p>Chicago, Vancouver, Mountain View, et al.:
+World-Wide Web Consortium, XML Working Group, 1996, 1997.</p>
+</pubstmt>
+<sourcedesc>
+<p>Created in electronic form.</p>
+</sourcedesc>
+<langusage>
+<language id='EN'>English</language>
+<language id='ebnf'>Extended Backus-Naur Form (formal grammar)</language>
+</langusage>
+<revisiondesc>
+<slist>
+<sitem>1997-12-03 : CMSMcQ : yet further changes</sitem>
+<sitem>1997-12-02 : TB : further changes (see TB to XML WG,
+2 December 1997)</sitem>
+<sitem>1997-12-02 : CMSMcQ : deal with as many corrections and
+comments from the proofreaders as possible:
+entify hard-coded document date in pubdate element,
+change expansion of entity WebSGML,
+update status description as per Dan Connolly (am not sure
+about refernece to Berners-Lee et al.),
+add 'The' to abstract as per WG decision,
+move Relationship to Existing Standards to back matter and
+combine with References,
+re-order back matter so normative appendices come first,
+re-tag back matter so informative appendices are tagged informdiv1,
+remove XXX XXX from list of 'normative' specs in prose,
+move some references from Other References to Normative References,
+add RFC 1738, 1808, and 2141 to Other References (they are not
+normative since we do not require the processor to enforce any 
+rules based on them),
+add reference to 'Fielding draft' (Berners-Lee et al.),
+move notation section to end of body,
+drop URIchar non-terminal and use SkipLit instead,
+lose stray reference to defunct nonterminal 'markupdecls',
+move reference to Aho et al. into appendix (Tim's right),
+add prose note saying that hash marks and fragment identifiers are
+NOT part of the URI formally speaking, and are NOT legal in 
+system identifiers (processor 'may' signal an error).
+Work through:
+Tim Bray reacting to James Clark,
+Tim Bray on his own,
+Eve Maler,
+
+NOT DONE YET:
+change binary / text to unparsed / parsed.
+handle James's suggestion about &lt; in attriubte values
+uppercase hex characters,
+namechar list,
+</sitem>
+<sitem>1997-12-01 : JB : add some column-width parameters</sitem>
+<sitem>1997-12-01 : CMSMcQ : begin round of changes to incorporate
+recent WG decisions and other corrections:
+binding sources of character encoding info (27 Aug / 3 Sept),
+correct wording of Faust quotation (restore dropped line),
+drop SDD from EncodingDecl,
+change text at version number 1.0,
+drop misleading (wrong!) sentence about ignorables and extenders,
+modify definÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙxamples with Byte Order Mark.
+Add content model as a term and clarify that it applies to both
+mixed and element content.
+</sitem>
+<sitem>1997-06-30 : CMSMcQ : change date, some cosmetic changes,
+changes to productions for choice, seq, Mixed, NotationType,
+Enumeration.  Follow James Clark's suggestion and prohibit 
+conditional sections in internal subset.  TO DO:  simplify
+production for ignored sections as a result, since we don't 
+need to worry about parsers whi<! don't expand PErefs finding
+a conditional section.</sitem>
+<sitem>1997-06-29 : TB : various edits</sitem>
+<sitem>1997-06-29 : CMSMcQ : further changes:
+Suppress old FINAL EDIT comments and some dead material.
+Revise occurrences of % in grammar to exploit Henry Thompson's pun,
+especially markupdecl and attdef.
+Remove RMD requirement relating to element content (?).
+</sitem>
+<sitem>1997-06-28 : CMSMcQ : Various changes for 1 July draft:
+Add text for draconian error handling (introduce
+the term Fatal Error).
+RE deleta est (changing wording from 
+original announcement to restrict the requirement to validating
+parsers).
+Tag definition of validawwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwww it meant 'may or may not'.</sitem>
+<sitem>1997-03-21 : TB : massive changes on plane flight from Chicago
+to Vancouver</sitem>
+<sitem>1997-03-21 : CMSMcQ : correct as many reported errors as possible.
+</sitem>
+<sitem>1997-03-20 : CMSMcQ : correct typos listed in CMSMcQ hand copy of spec.</sitem>
+<sitem>1997 James Clark:
+Define the set of characters from which [^abc] subtracts.
+Charref should use just [0-9] not Digit.
+Location info needs cleaner treatment:  remove?  (ERB
+question).
+One example of a PI has wrong pic.
+Clarify discussion of encoding names.
+Encoding failure should lead to unspecified results; don't
+prescribe error recovery.
+Don't require exposure of entity boundaries.
+Ignore white space in element content.
+Reserve entity names of the form u-NNNN.
+Clarify relative URLs.
+And some of my own:
+Correct productions for content model:  model cannot
+consist of a name, so "elements ::= cp" is no good.
+</sitem>
+<sitem>1996-11-11 : CMSMcQ : revise for style.
+Add new rhs to entity declaration, for parameter entities.</sitem>
+<sitem>1996-11-10 : CMSMcQ : revise for style.
+Fix / complete section on names, characters.
+Add sections on parameter entities, conditional sections.
+Still to do:  Add compatibility note on deterministic content models.
+Finish stylistic revision.</sitem>
+<sitem>1996-10-31 : TB : Add Entity Handling section</sitem>
+<sitem>1996-10-30 : TB : Clean up term &amp; termdef.  Slip in
+ERB decision re EMPTY.</sitem>
+<sitem>1996-10-28 : TB : Change DTD.  Implement some of Michael's
+suggestions.  Change comments back to //.  Introduce language for
+XML namespace reservation.  Add section on white-space handling.
+Lots more cleanup.</sitem>
+<sitem>1996-10-24 : CMSMcQ : quick tweaks, implement some ERB
+decisions.  Characters are not integers.  Comments are /* */ not //.
+Add bibliographic refs to 10646, HyTime, Unicode.
+Rename old Cdata as MsData since it's <emph>only</emph> seen
+in marked sections.  Call them attribute-value pairs not
+name-value pairs, except once.  Internal subset is optional, needs
+'?'.  Implied attributes should be signaled to the app, not
+have values supplied by processor.</sitem>
+<sitem>1996-10-16 : TB : track down &amp; excise all DSD references;
+introduce some EBNF for entity declarations.</sitem>
+<sitem>1996-10-?? nsistency check, fix up scraps so
+they all parse, get formatter working, correct a few productions.</sitem>
+<sitem>1996-10-10/11 : CMSMcQ : various maintenance, stylistic, and
+organizational changes:
+Replace a few literals with xmlpio and
+pi""entities, to make them consistent and ensure we can change pic
+reliably when the ERB votes.
+Drop paragraph on recognizers from notation section.
+Add match, exact match to terminology.
+Move old 2.2 XML Processors and Apps into intro.
+Mention comments, PIs, and marked sections in discussion of
+delimiter escaping.
+Streamline discussion of doctype decl syntax.
+Drop old section of 'PI syntax' for doctype decl, and add
+section on partial-DTD summary PIs to end of Logical Structures
+section.
+Revise DSD syntax section to use Tim's subset-in-a-PI
+mechanism.</sitem>
+<sitem>1996-10-10 : TB : eliminate name recognizers (and more?)</sitem>
+<sitem>1996-10-09 : CMSMcQ : revise for style, consistency through 2.3
+(Characters)</sitem>
+<sitem>1996-10-09 : CMSMcQ : re-unite everything for convenience,
+at least temporarily, and revise quickly</sitem>
+<sitem>1996-10-08 : TB : first major homogenization pass</sitem>
+<sitem>1996-10-08 : TB : turn "current" attribute on div type into 
+CDATA</sitem>
+<sitem>1996-10-02 : TB : remould into skeleton + entities</sitem>
+<sitem>1996-09-30 : CMSMcQ : add a few more sections prior to exchange
+                            with Tim.</sitem>
+<sitem>1996-09-20 : CMSMcQ : finish transcribing notes.</sitem>
+<sitem>1996-09-19 : CMSMcQ : begin transcribing notes for draft.</sitem>
+<sitem>1996-09-13 : CMSMcQ : made outline from notes of 09-06,
+do some housekeeping</sitem>
+</slist>
+</revisiondesc>
+</header>
+<ðððððððððððððððððððððððððððððððððððððððððððððððððððððððððððððððððððððððððððððððððððððððððððððððððððððððððððððððððððððððððððððððððððððððððððððððððððððððððððððððððððððððððððððððððððððððððððððððððððððððððððððððððððððððððððððððððððððððððððððððððððððððððððððððððððððððððððððððððððððððððððððððððððððððððððððððððððððððððððððððððððððððððððððððððððððððððððððððððððððððððððððððððððððððððððððððððððððððððððððððððððððððððððððððððððððððððððððððððððððððððððððððððððððððððððððððððððððððððððððððððððððððððððððððððððððððððððððððððððððððððððððððððððððððððððððððððððððððððððððððððððððððððððððððððððððððððððððððððððððððððððððððððððððððððððððððððððððððððððððððððððððððððððððððððððððððððððððððððððððððððððððððððððððððððððððððððððððððððððððððððððððððððððððððððððððððððððððððððððððððððððððððððððððððððððððððððððððððððððððððððððððððððððððððððððððððððððððððððððððððððððððððððððððððððððððððððððððððððððððððððððððððððððððððððððððððððððððððððððððððððððððððððððððððððððððððððððððððððððððððððððððððððððððððððððððððððððððððððððððððððððððððððððððððððððððððððððððððððððððððððððððððððððððððððððððððððððððððððððððððððððððððððððððððððððððððððððððm> is used to read XML documents
+and provide access to their content and structure.</termdef> <termdef
+id="dt-app" term="Application">It is @ssumed that an XML processor is
+doing its work on behalf of another module, called the
+<term>application</term>.</termdef> This specification describes the
+required beh\vior of an XML processor in terms of how it must read XML
+data and the information it must provide to the application.</p>
+ 
+<div2 id='sec-origin-goals'>
+<head>Origin and Goals</head>
+<p>XML was developed by an XML Working Group (orisable over the
+Internet.</p></item>
+<item><p>XML shall support a wide variey of applications.</p></item>
+<item><p>XML shall be compatible with SGML.</p></item>
+<item><p>It shall be easy to write programs which process XML
+documents.</p></item>
+<item><p>The number of optional features in XML is to be kept to the
+absolute minimum, ideally zero.</p></item>
+<item><p>XML documents shou
\ No newline at end of file
diff --git a/test/errors/759573-2.xml b/test/errors/759573-2.xml
new file mode 100644
index 0000000..5ad655f
--- /dev/null
+++ b/test/errors/759573-2.xml
Binary files differ
diff --git a/test/errors/759573.xml b/test/errors/759573.xml
new file mode 100644
index 0000000..69ebb57
--- /dev/null
+++ b/test/errors/759573.xml
@@ -0,0 +1 @@
+<?h?><!DOCTYPEt[<!ELEMENT t (A)><!ENTITY % xx '&#37;<![INCLUDE[000&#37;&#3000;000&#37;z;'><!ENTITYz>%xx;
\ No newline at end of file
diff --git a/test/relaxng/pattern3.rng b/test/relaxng/pattern3.rng
new file mode 100644
index 0000000..fa4434f
--- /dev/null
+++ b/test/relaxng/pattern3.rng
@@ -0,0 +1,11 @@
+<?xml version="1.0"?>
+<grammar xmlns="http://relaxng.org/ns/structure/1.0"
+datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">
+  <start>
+    <element name="test">
+    <data type="token">
+    <param name="pattern">[a-z]+</param>
+    </data>
+    </element>
+  </start>
+</grammar>
diff --git a/test/relaxng/pattern3_1.xml b/test/relaxng/pattern3_1.xml
new file mode 100644
index 0000000..f559cd3
--- /dev/null
+++ b/test/relaxng/pattern3_1.xml
@@ -0,0 +1 @@
+<test> ooo </test>
diff --git a/testModule.c b/testModule.c
index e399f5c..77b7ba1 100644
--- a/testModule.c
+++ b/testModule.c
@@ -47,7 +47,7 @@
 
     /* build the module filename, and confirm the module exists */
     xmlStrPrintf(filename, sizeof(filename),
-                 (const xmlChar*) "%s/testdso%s",
+                 "%s/testdso%s",
                  (const xmlChar*)MODULE_PATH,
 		 (const xmlChar*)LIBXML_MODULE_EXTENSION);
 
diff --git a/testapi.c b/testapi.c
index 9205e64..60f4bdd 100644
--- a/testapi.c
+++ b/testapi.c
@@ -8175,7 +8175,7 @@
 
     int mem_base;
     xmlDictPtr ret_val;
-    xmlDictPtr sub; /* an existing dictionnary */
+    xmlDictPtr sub; /* an existing dictionary */
     int n_sub;
 
     for (n_sub = 0;n_sub < gen_nb_xmlDictPtr;n_sub++) {
@@ -8207,7 +8207,7 @@
 
     int mem_base;
     const xmlChar * ret_val;
-    xmlDictPtr dict; /* the dictionnary */
+    xmlDictPtr dict; /* the dictionary */
     int n_dict;
     xmlChar * name; /* the name of the userdata */
     int n_name;
@@ -8263,7 +8263,7 @@
 
     int mem_base;
     const xmlChar * ret_val;
-    xmlDictPtr dict; /* the dictionnary */
+    xmlDictPtr dict; /* the dictionary */
     int n_dict;
     xmlChar * name; /* the name of the userdata */
     int n_name;
@@ -8309,7 +8309,7 @@
 
     int mem_base;
     int ret_val;
-    xmlDictPtr dict; /* the dictionnary */
+    xmlDictPtr dict; /* the dictionary */
     int n_dict;
     xmlChar * str; /* the string */
     int n_str;
@@ -8348,7 +8348,7 @@
 
     int mem_base;
     const xmlChar * ret_val;
-    xmlDictPtr dict; /* the dictionnary */
+    xmlDictPtr dict; /* the dictionary */
     int n_dict;
     xmlChar * prefix; /* the prefix */
     int n_prefix;
@@ -8394,7 +8394,7 @@
 
     int mem_base;
     int ret_val;
-    xmlDictPtr dict; /* the dictionnary */
+    xmlDictPtr dict; /* the dictionary */
     int n_dict;
 
     for (n_dict = 0;n_dict < gen_nb_xmlDictPtr;n_dict++) {
@@ -8437,7 +8437,7 @@
 
     int mem_base;
     int ret_val;
-    xmlDictPtr dict; /* the dictionnary */
+    xmlDictPtr dict; /* the dictionary */
     int n_dict;
 
     for (n_dict = 0;n_dict < gen_nb_xmlDictPtr;n_dict++) {
diff --git a/tree.c b/tree.c
index 6a158ce..9d330b8 100644
--- a/tree.c
+++ b/tree.c
@@ -1044,7 +1044,7 @@
  * DICT_FREE:
  * @str:  a string
  *
- * Free a string if it is not owned by the "dict" dictionnary in the
+ * Free a string if it is not owned by the "dict" dictionary in the
  * current scope
  */
 #define DICT_FREE(str)						\
@@ -1057,7 +1057,7 @@
  * DICT_COPY:
  * @str:  a string
  *
- * Copy a string using a "dict" dictionnary in the current scope,
+ * Copy a string using a "dict" dictionary in the current scope,
  * if availabe.
  */
 #define DICT_COPY(str, cpy) \
@@ -1074,7 +1074,7 @@
  * DICT_CONST_COPY:
  * @str:  a string
  *
- * Copy a string using a "dict" dictionnary in the current scope,
+ * Copy a string using a "dict" dictionary in the current scope,
  * if availabe.
  */
 #define DICT_CONST_COPY(str, cpy) \
@@ -1593,6 +1593,7 @@
 			else if ((ent != NULL) && (ent->children == NULL)) {
 			    xmlNodePtr temp;
 
+			    ent->children = (xmlNodePtr) -1;
 			    ent->children = xmlStringGetNodeList(doc,
 				    (const xmlChar*)node->content);
 			    ent->owner = 1;
@@ -2270,7 +2271,7 @@
     cur = (xmlNodePtr) xmlMalloc(sizeof(xmlNode));
     if (cur == NULL) {
 	xmlTreeErrMemory("building node");
-	/* we can't check here that name comes from the doc dictionnary */
+	/* we can't check here that name comes from the doc dictionary */
 	return(NULL);
     }
     memset(cur, 0, sizeof(xmlNode));
@@ -2350,7 +2351,7 @@
 	    UPDATE_LAST_CHILD_AND_PARENT(cur)
 	}
     } else {
-        /* if name don't come from the doc dictionnary free it here */
+        /* if name don't come from the doc dictionary free it here */
         if ((name != NULL) && (doc != NULL) &&
 	    (!(xmlDictOwns(doc->dict, name))))
 	    xmlFree(name);
@@ -3701,7 +3702,7 @@
 	     * When a node is a text node or a comment, it uses a global static
 	     * variable for the name of the node.
 	     * Otherwise the node name might come from the document's
-	     * dictionnary
+	     * dictionary
 	     */
 	    if ((cur->name != NULL) &&
 		(cur->type != XML_TEXT_NODE) &&
@@ -3770,7 +3771,7 @@
     /*
      * When a node is a text node or a comment, it uses a global static
      * variable for the name of the node.
-     * Otherwise the node name might come from the document's dictionnary
+     * Otherwise the node name might come from the document's dictionary
      */
     if ((cur->name != NULL) &&
         (cur->type != XML_TEXT_NODE) &&
diff --git a/uri.c b/uri.c
index ff47abb..2bd5720 100644
--- a/uri.c
+++ b/uri.c
@@ -314,7 +314,7 @@
  * @uri:  pointer to an URI structure
  * @str:  the string to analyze
  *
- * Parse a port  part and fills in the appropriate fields
+ * Parse a port part and fills in the appropriate fields
  * of the @uri structure
  *
  * port          = *DIGIT
@@ -325,15 +325,16 @@
 xmlParse3986Port(xmlURIPtr uri, const char **str)
 {
     const char *cur = *str;
+    unsigned port = 0; /* unsigned for defined overflow behavior */
 
     if (ISA_DIGIT(cur)) {
-	if (uri != NULL)
-	    uri->port = 0;
 	while (ISA_DIGIT(cur)) {
-	    if (uri != NULL)
-		uri->port = uri->port * 10 + (*cur - '0');
+	    port = port * 10 + (*cur - '0');
+
 	    cur++;
 	}
+	if (uri != NULL)
+	    uri->port = port & INT_MAX; /* port value modulo INT_MAX+1 */
 	*str = cur;
 	return(0);
     }
diff --git a/valid.c b/valid.c
index 45a3f70..19f84b8 100644
--- a/valid.c
+++ b/valid.c
@@ -93,7 +93,7 @@
  *
  * Handle a validation error
  */
-static void
+static void LIBXML_ATTR_FORMAT(3,0)
 xmlErrValid(xmlValidCtxtPtr ctxt, xmlParserErrors error,
             const char *msg, const char *extra)
 {
@@ -137,7 +137,7 @@
  *
  * Handle a validation error, provide contextual informations
  */
-static void
+static void LIBXML_ATTR_FORMAT(4,0)
 xmlErrValidNode(xmlValidCtxtPtr ctxt,
                 xmlNodePtr node, xmlParserErrors error,
                 const char *msg, const xmlChar * str1,
@@ -180,7 +180,7 @@
  *
  * Handle a validation error, provide contextual informations
  */
-static void
+static void LIBXML_ATTR_FORMAT(4,0)
 xmlErrValidNodeNr(xmlValidCtxtPtr ctxt,
                 xmlNodePtr node, xmlParserErrors error,
                 const char *msg, const xmlChar * str1,
@@ -221,7 +221,7 @@
  *
  * Handle a validation error, provide contextual information
  */
-static void
+static void LIBXML_ATTR_FORMAT(4,0)
 xmlErrValidWarning(xmlValidCtxtPtr ctxt,
                 xmlNodePtr node, xmlParserErrors error,
                 const char *msg, const xmlChar * str1,
@@ -2532,7 +2532,7 @@
  * DICT_FREE:
  * @str:  a string
  *
- * Free a string if it is not owned by the "dict" dictionnary in the
+ * Free a string if it is not owned by the "dict" dictionary in the
  * current scope
  */
 #define DICT_FREE(str)						\
diff --git a/win32/VC10/config.h b/win32/VC10/config.h
index 8629944..891b57e 100644
--- a/win32/VC10/config.h
+++ b/win32/VC10/config.h
@@ -96,7 +96,9 @@
 
 #if defined(_MSC_VER)
 #define mkdir(p,m) _mkdir(p)
+#if _MSC_VER < 1900 // Cannot define this in VS 2015 and above!
 #define snprintf _snprintf
+#endif
 #if _MSC_VER < 1500
 #define vsnprintf(b,c,f,a) _vsnprintf(b,c,f,a)
 #endif
diff --git a/xinclude.c b/xinclude.c
index ff3dafb..e3bb43e 100644
--- a/xinclude.c
+++ b/xinclude.c
@@ -125,7 +125,7 @@
  *
  * Handle an XInclude error
  */
-static void
+static void LIBXML_ATTR_FORMAT(4,0)
 xmlXIncludeErr(xmlXIncludeCtxtPtr ctxt, xmlNodePtr node, int error,
                const char *msg, const xmlChar *extra)
 {
@@ -147,7 +147,7 @@
  *
  * Emit an XInclude warning.
  */
-static void
+static void LIBXML_ATTR_FORMAT(4,0)
 xmlXIncludeWarn(xmlXIncludeCtxtPtr ctxt, xmlNodePtr node, int error,
                const char *msg, const xmlChar *extra)
 {
diff --git a/xmlIO.c b/xmlIO.c
index 8b13184..1a79c09 100644
--- a/xmlIO.c
+++ b/xmlIO.c
@@ -1604,7 +1604,7 @@
 	xmlFreeZMemBuff( buff );
 	buff = NULL;
 	xmlStrPrintf(msg, 500,
-		    (const xmlChar *) "xmlCreateZMemBuff:  %s %d\n",
+		    "xmlCreateZMemBuff:  %s %d\n",
 		    "Error initializing compression context.  ZLIB error:",
 		    z_err );
 	xmlIOErr(XML_IO_WRITE, (const char *) msg);
@@ -1672,7 +1672,7 @@
     else {
 	xmlChar msg[500];
 	xmlStrPrintf(msg, 500,
-		    (const xmlChar *) "xmlZMemBuffExtend:  %s %lu bytes.\n",
+		    "xmlZMemBuffExtend:  %s %lu bytes.\n",
 		    "Allocation failure extending output buffer to",
 		    new_size );
 	xmlIOErr(XML_IO_WRITE, (const char *) msg);
@@ -1718,7 +1718,7 @@
 	if ( z_err != Z_OK ) {
 	    xmlChar msg[500];
 	    xmlStrPrintf(msg, 500,
-			(const xmlChar *) "xmlZMemBuffAppend:  %s %d %s - %d",
+			"xmlZMemBuffAppend:  %s %d %s - %d",
 			"Compression error while appending",
 			len, "bytes to buffer.  ZLIB error", z_err );
 	    xmlIOErr(XML_IO_WRITE, (const char *) msg);
@@ -1791,7 +1791,7 @@
     else {
 	xmlChar msg[500];
 	xmlStrPrintf(msg, 500,
-		    (const xmlChar *) "xmlZMemBuffGetContent:  %s - %d\n",
+		    "xmlZMemBuffGetContent:  %s - %d\n",
 		    "Error flushing zlib buffers.  Error code", z_err );
 	xmlIOErr(XML_IO_WRITE, (const char *) msg);
     }
@@ -1996,7 +1996,7 @@
 	if ( len < 0 ) {
 	    xmlChar msg[500];
 	    xmlStrPrintf(msg, 500,
-			(const xmlChar *) "xmlIOHTTPWrite:  %s\n%s '%s'.\n",
+			"xmlIOHTTPWrite:  %s\n%s '%s'.\n",
 			"Error appending to internal buffer.",
 			"Error sending document to URI",
 			ctxt->uri );
@@ -2068,7 +2068,7 @@
     if ( http_content == NULL ) {
 	xmlChar msg[500];
 	xmlStrPrintf(msg, 500,
-		     (const xmlChar *) "xmlIOHTTPCloseWrite:  %s '%s' %s '%s'.\n",
+		     "xmlIOHTTPCloseWrite:  %s '%s' %s '%s'.\n",
 		     "Error retrieving content.\nUnable to",
 		     http_mthd, "data to URI", ctxt->uri );
 	xmlIOErr(XML_IO_WRITE, (const char *) msg);
@@ -2140,7 +2140,7 @@
 	    else {
                 xmlChar msg[500];
                 xmlStrPrintf(msg, 500,
-    (const xmlChar *) "xmlIOHTTPCloseWrite: HTTP '%s' of %d %s\n'%s' %s %d\n",
+                      "xmlIOHTTPCloseWrite: HTTP '%s' of %d %s\n'%s' %s %d\n",
 			    http_mthd, content_lgth,
 			    "bytes to URI", ctxt->uri,
 			    "failed.  HTTP return code:", http_rtn );
diff --git a/xmlcatalog.c b/xmlcatalog.c
index b9ed6a4..006f0cc 100644
--- a/xmlcatalog.c
+++ b/xmlcatalog.c
@@ -80,6 +80,7 @@
 
     if (prompt != NULL)
 	fprintf(stdout, "%s", prompt);
+    fflush(stdout);
     if (!fgets(line_read, 500, stdin))
         return(NULL);
     line_read[500] = 0;
diff --git a/xmllint.c b/xmllint.c
index 1e2eb4a..67f7adb 100644
--- a/xmllint.c
+++ b/xmllint.c
@@ -449,7 +449,7 @@
  *           message about the timing performed; format is a printf
  *           type argument
  */
-static void XMLCDECL
+static void XMLCDECL LIBXML_ATTR_FORMAT(1,2)
 endTimer(const char *fmt, ...)
 {
     long msec;
@@ -485,7 +485,7 @@
 {
     begin = clock();
 }
-static void XMLCDECL
+static void XMLCDECL LIBXML_ATTR_FORMAT(1,2)
 endTimer(const char *fmt, ...)
 {
     long msec;
@@ -514,7 +514,7 @@
      * Do nothing
      */
 }
-static void XMLCDECL
+static void XMLCDECL LIBXML_ATTR_FORMAT(1,2)
 endTimer(char *format, ...)
 {
     /*
@@ -634,7 +634,7 @@
  * Display and format an error messages, gives file, line, position and
  * extra parameters.
  */
-static void XMLCDECL
+static void XMLCDECL LIBXML_ATTR_FORMAT(2,3)
 xmlHTMLError(void *ctx, const char *msg, ...)
 {
     xmlParserCtxtPtr ctxt = (xmlParserCtxtPtr) ctx;
@@ -671,7 +671,7 @@
  * Display and format a warning messages, gives file, line, position and
  * extra parameters.
  */
-static void XMLCDECL
+static void XMLCDECL LIBXML_ATTR_FORMAT(2,3)
 xmlHTMLWarning(void *ctx, const char *msg, ...)
 {
     xmlParserCtxtPtr ctxt = (xmlParserCtxtPtr) ctx;
@@ -709,7 +709,7 @@
  * Display and format an validity error messages, gives file,
  * line, position and extra parameters.
  */
-static void XMLCDECL
+static void XMLCDECL LIBXML_ATTR_FORMAT(2,3)
 xmlHTMLValidityError(void *ctx, const char *msg, ...)
 {
     xmlParserCtxtPtr ctxt = (xmlParserCtxtPtr) ctx;
@@ -746,7 +746,7 @@
  * Display and format a validity warning messages, gives file, line,
  * position and extra parameters.
  */
-static void XMLCDECL
+static void XMLCDECL LIBXML_ATTR_FORMAT(2,3)
 xmlHTMLValidityWarning(void *ctx, const char *msg, ...)
 {
     xmlParserCtxtPtr ctxt = (xmlParserCtxtPtr) ctx;
@@ -809,6 +809,7 @@
 
     if (prompt != NULL)
 	fprintf(stdout, "%s", prompt);
+    fflush(stdout);
     if (!fgets(line_read, 500, stdin))
         return(NULL);
     line_read[500] = 0;
@@ -1410,7 +1411,7 @@
  * Display and format a warning messages, gives file, line, position and
  * extra parameters.
  */
-static void XMLCDECL
+static void XMLCDECL LIBXML_ATTR_FORMAT(2,3)
 warningDebug(void *ctx ATTRIBUTE_UNUSED, const char *msg, ...)
 {
     va_list args;
@@ -1433,7 +1434,7 @@
  * Display and format a error messages, gives file, line, position and
  * extra parameters.
  */
-static void XMLCDECL
+static void XMLCDECL LIBXML_ATTR_FORMAT(2,3)
 errorDebug(void *ctx ATTRIBUTE_UNUSED, const char *msg, ...)
 {
     va_list args;
@@ -1456,7 +1457,7 @@
  * Display and format a fatalError messages, gives file, line, position and
  * extra parameters.
  */
-static void XMLCDECL
+static void XMLCDECL LIBXML_ATTR_FORMAT(2,3)
 fatalErrorDebug(void *ctx ATTRIBUTE_UNUSED, const char *msg, ...)
 {
     va_list args;
@@ -2001,6 +2002,12 @@
     xmlNsPtr ns;
 
     root = xmlDocGetRootElement(doc);
+    if (root == NULL ) {
+        xmlGenericError(xmlGenericErrorContext,
+                "Document does not have a root element");
+        progresult = XMLLINT_ERR_UNCLASS;
+        return;
+    }
     for (ns = root->nsDef, i = 0;ns != NULL && i < 20;ns=ns->next) {
         namespaces[i++] = ns->href;
         namespaces[i++] = ns->prefix;
@@ -2967,6 +2974,7 @@
     if (xmlHasFeature(XML_WITH_XPTR)) fprintf(stderr, "XPointer ");
     if (xmlHasFeature(XML_WITH_XINCLUDE)) fprintf(stderr, "XInclude ");
     if (xmlHasFeature(XML_WITH_ICONV)) fprintf(stderr, "Iconv ");
+    if (xmlHasFeature(XML_WITH_ICU)) fprintf(stderr, "ICU ");
     if (xmlHasFeature(XML_WITH_ISO8859X)) fprintf(stderr, "ISO8859X ");
     if (xmlHasFeature(XML_WITH_UNICODE)) fprintf(stderr, "Unicode ");
     if (xmlHasFeature(XML_WITH_REGEXP)) fprintf(stderr, "Regexps ");
diff --git a/xmlmemory.c b/xmlmemory.c
index f24fd6d..f08c8c3 100644
--- a/xmlmemory.c
+++ b/xmlmemory.c
@@ -109,6 +109,7 @@
 #define RESERVE_SIZE (((HDR_SIZE + (ALIGN_SIZE-1)) \
 		      / ALIGN_SIZE ) * ALIGN_SIZE)
 
+#define MAX_SIZE_T ((size_t)-1)
 
 #define CLIENT_2_HDR(a) ((MEMHDR *) (((char *) (a)) - RESERVE_SIZE))
 #define HDR_2_CLIENT(a)    ((void *) (((char *) (a)) + RESERVE_SIZE))
@@ -217,7 +218,7 @@
 
 /**
  * xmlMallocAtomicLoc:
- * @size:  an int specifying the size in byte to allocate.
+ * @size:  an unsigned int specifying the size in byte to allocate.
  * @file:  the file name or NULL
  * @line:  the line number
  *
@@ -240,11 +241,18 @@
 
     TEST_POINT
 
+    if (size > (MAX_SIZE_T - RESERVE_SIZE)) {
+	xmlGenericError(xmlGenericErrorContext,
+		"xmlMallocAtomicLoc : Unsigned overflow prevented\n");
+	xmlMemoryDump();
+	return(NULL);
+    }
+
     p = (MEMHDR *) malloc(RESERVE_SIZE+size);
 
     if (!p) {
 	xmlGenericError(xmlGenericErrorContext,
-		"xmlMallocLoc : Out of free space\n");
+		"xmlMallocAtomicLoc : Out of free space\n");
 	xmlMemoryDump();
 	return(NULL);
     }
diff --git a/xmlreader.c b/xmlreader.c
index 471e7e2..f285790 100644
--- a/xmlreader.c
+++ b/xmlreader.c
@@ -142,7 +142,7 @@
     xmlNodePtr			faketext;/* fake xmlNs chld */
     int				preserve;/* preserve the resulting document */
     xmlBufPtr		        buffer; /* used to return const xmlChar * */
-    xmlDictPtr			dict;	/* the context dictionnary */
+    xmlDictPtr			dict;	/* the context dictionary */
 
     /* entity stack when traversing entities content */
     xmlNodePtr         ent;          /* Current Entity Ref Node */
@@ -210,7 +210,7 @@
  * DICT_FREE:
  * @str:  a string
  *
- * Free a string if it is not owned by the "dict" dictionnary in the
+ * Free a string if it is not owned by the "dict" dictionary in the
  * current scope
  */
 #define DICT_FREE(str)						\
@@ -2158,7 +2158,7 @@
     ret->ctxt->dictNames = 1;
     ret->allocs = XML_TEXTREADER_CTXT;
     /*
-     * use the parser dictionnary to allocate all elements and attributes names
+     * use the parser dictionary to allocate all elements and attributes names
      */
     ret->ctxt->docdict = 1;
     ret->dict = ret->ctxt->dict;
@@ -4050,13 +4050,19 @@
 }
 
 #ifdef LIBXML_SCHEMAS_ENABLED
-static char *xmlTextReaderBuildMessage(const char *msg, va_list ap);
+static char *xmlTextReaderBuildMessage(const char *msg, va_list ap) LIBXML_ATTR_FORMAT(1,0);
 
 static void XMLCDECL
-xmlTextReaderValidityError(void *ctxt, const char *msg, ...);
+xmlTextReaderValidityError(void *ctxt, const char *msg, ...) LIBXML_ATTR_FORMAT(2,3);
 
 static void XMLCDECL
-xmlTextReaderValidityWarning(void *ctxt, const char *msg, ...);
+xmlTextReaderValidityWarning(void *ctxt, const char *msg, ...) LIBXML_ATTR_FORMAT(2,3);
+
+static void XMLCDECL
+xmlTextReaderValidityErrorRelay(void *ctx, const char *msg, ...) LIBXML_ATTR_FORMAT(2,3);
+
+static void XMLCDECL
+xmlTextReaderValidityWarningRelay(void *ctx, const char *msg, ...) LIBXML_ATTR_FORMAT(2,3);
 
 static void XMLCDECL
 xmlTextReaderValidityErrorRelay(void *ctx, const char *msg, ...)
@@ -4850,7 +4856,7 @@
     }
 }
 
-static void XMLCDECL
+static void XMLCDECL LIBXML_ATTR_FORMAT(2,3)
 xmlTextReaderError(void *ctxt, const char *msg, ...)
 {
     va_list ap;
@@ -4863,7 +4869,7 @@
 
 }
 
-static void XMLCDECL
+static void XMLCDECL LIBXML_ATTR_FORMAT(2,3)
 xmlTextReaderWarning(void *ctxt, const char *msg, ...)
 {
     va_list ap;
@@ -5249,7 +5255,7 @@
     reader->ctxt->linenumbers = 1;
     reader->ctxt->dictNames = 1;
     /*
-     * use the parser dictionnary to allocate all elements and attributes names
+     * use the parser dictionary to allocate all elements and attributes names
      */
     reader->ctxt->docdict = 1;
     reader->ctxt->parseMode = XML_PARSE_READER;
diff --git a/xmlregexp.c b/xmlregexp.c
index 3e912ab..ca3b4f4 100644
--- a/xmlregexp.c
+++ b/xmlregexp.c
@@ -1544,6 +1544,7 @@
 xmlFAGenerateTransitions(xmlRegParserCtxtPtr ctxt, xmlRegStatePtr from,
 	                 xmlRegStatePtr to, xmlRegAtomPtr atom) {
     xmlRegStatePtr end;
+    int nullable = 0;
 
     if (atom == NULL) {
 	ERROR("genrate transition: atom == NULL");
@@ -1730,6 +1731,13 @@
     if (xmlRegAtomPush(ctxt, atom) < 0) {
 	return(-1);
     }
+    if ((atom->quant == XML_REGEXP_QUANT_RANGE) &&
+        (atom->min == 0) && (atom->max > 0)) {
+	nullable = 1;
+	atom->min = 1;
+        if (atom->max == 1)
+	    atom->quant = XML_REGEXP_QUANT_OPT;
+    }
     xmlRegStateAddTrans(ctxt, from, atom, to, -1, -1);
     ctxt->state = end;
     switch (atom->quant) {
@@ -1747,11 +1755,8 @@
 	    xmlRegStateAddTrans(ctxt, to, atom, to, -1, -1);
 	    break;
 	case XML_REGEXP_QUANT_RANGE:
-#if DV_test
-	    if (atom->min == 0) {
+	    if (nullable)
 		xmlFAGenerateEpsilonTransition(ctxt, from, to);
-	    }
-#endif
 	    break;
 	default:
 	    break;
@@ -5052,11 +5057,12 @@
 	ERROR("Expecting the end of a char range");
 	return;
     }
-    NEXTL(len);
+
     /* TODO check that the values are acceptable character ranges for XML */
     if (end < start) {
 	ERROR("End of range is before start of range");
     } else {
+        NEXTL(len);
         xmlRegAtomAddRange(ctxt, ctxt->atom, ctxt->neg,
 		           XML_REGEXP_CHARVAL, start, end, NULL);
     }
@@ -6345,7 +6351,7 @@
 /**
  * xmlExpNewCtxt:
  * @maxNodes:  the maximum number of nodes
- * @dict:  optional dictionnary to use internally
+ * @dict:  optional dictionary to use internally
  *
  * Creates a new context for manipulating expressions
  *
@@ -7204,7 +7210,7 @@
         return(NULL);
     }
     /*
-     * check the string is in the dictionnary, if yes use an interned
+     * 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);
diff --git a/xmlsave.c b/xmlsave.c
index 774404b..4a8e3f3 100644
--- a/xmlsave.c
+++ b/xmlsave.c
@@ -2097,8 +2097,8 @@
             xmlBufAdd(buf, BAD_CAST "&amp;", 5);
             cur++;
             base = cur;
-        } else if ((*cur >= 0x80) && ((doc == NULL) ||
-                                      (doc->encoding == NULL))) {
+        } else if ((*cur >= 0x80) && (cur[1] != 0) &&
+	           ((doc == NULL) || (doc->encoding == NULL))) {
             /*
              * We assume we have UTF-8 content.
              */
@@ -2121,14 +2121,14 @@
                 val <<= 6;
                 val |= (cur[1]) & 0x3F;
                 l = 2;
-            } else if (*cur < 0xF0) {
+            } else if ((*cur < 0xF0) && (cur [2] != 0)) {
                 val = (cur[0]) & 0x0F;
                 val <<= 6;
                 val |= (cur[1]) & 0x3F;
                 val <<= 6;
                 val |= (cur[2]) & 0x3F;
                 l = 3;
-            } else if (*cur < 0xF8) {
+            } else if ((*cur < 0xF8) && (cur [2] != 0) && (cur[3] != 0)) {
                 val = (cur[0]) & 0x07;
                 val <<= 6;
                 val |= (cur[1]) & 0x3F;
diff --git a/xmlschemas.c b/xmlschemas.c
index fe533e6..7afe2eb 100644
--- a/xmlschemas.c
+++ b/xmlschemas.c
@@ -617,7 +617,7 @@
     xmlAutomataStatePtr end;
     xmlAutomataStatePtr state;
 
-    xmlDictPtr dict;		/* dictionnary for interned string names */
+    xmlDictPtr dict;		/* dictionary for interned string names */
     xmlSchemaTypePtr ctxtType; /* The current context simple/complex type */
     int options;
     xmlSchemaValidCtxtPtr vctxt;
@@ -1085,7 +1085,7 @@
 static void
 xmlSchemaInternalErr(xmlSchemaAbstractCtxtPtr actxt,
 		     const char *funcName,
-		     const char *message);
+		     const char *message) LIBXML_ATTR_FORMAT(3,0);
 static int
 xmlSchemaCheckCOSSTDerivedOK(xmlSchemaAbstractCtxtPtr ctxt,
 			     xmlSchemaTypePtr type,
@@ -1769,7 +1769,7 @@
     }
     FREE_AND_NULL(str)
 
-    return (*buf);
+    return (xmlEscapeFormatString(buf));
 }
 
 /**
@@ -1889,7 +1889,7 @@
  *
  * Handle a parser error
  */
-static void
+static void LIBXML_ATTR_FORMAT(4,0)
 xmlSchemaPErr(xmlSchemaParserCtxtPtr ctxt, xmlNodePtr node, int error,
               const char *msg, const xmlChar * str1, const xmlChar * str2)
 {
@@ -1922,7 +1922,7 @@
  *
  * Handle a parser error
  */
-static void
+static void LIBXML_ATTR_FORMAT(5,0)
 xmlSchemaPErr2(xmlSchemaParserCtxtPtr ctxt, xmlNodePtr node,
                xmlNodePtr child, int error,
                const char *msg, const xmlChar * str1, const xmlChar * str2)
@@ -1951,7 +1951,7 @@
  *
  * Handle a parser error
  */
-static void
+static void LIBXML_ATTR_FORMAT(7,0)
 xmlSchemaPErrExt(xmlSchemaParserCtxtPtr ctxt, xmlNodePtr node, int error,
 		const xmlChar * strData1, const xmlChar * strData2,
 		const xmlChar * strData3, const char *msg, const xmlChar * str1,
@@ -2002,7 +2002,7 @@
                      extra);
 }
 
-static void
+static void LIBXML_ATTR_FORMAT(2,0)
 xmlSchemaPSimpleInternalErr(xmlNodePtr node,
 			    const char *msg, const xmlChar *str)
 {
@@ -2013,18 +2013,21 @@
 #define WXS_ERROR_TYPE_ERROR 1
 #define WXS_ERROR_TYPE_WARNING 2
 /**
- * xmlSchemaErr3:
+ * xmlSchemaErr4Line:
  * @ctxt: the validation context
- * @node: the context node
+ * @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
  */
-static void
+static void LIBXML_ATTR_FORMAT(6,0)
 xmlSchemaErr4Line(xmlSchemaAbstractCtxtPtr ctxt,
 		  xmlErrorLevel errorLevel,
 		  int error, xmlNodePtr node, int line, const char *msg,
@@ -2139,7 +2142,7 @@
  *
  * Handle a validation error
  */
-static void
+static void LIBXML_ATTR_FORMAT(4,0)
 xmlSchemaErr3(xmlSchemaAbstractCtxtPtr actxt,
 	      int error, xmlNodePtr node, const char *msg,
 	      const xmlChar *str1, const xmlChar *str2, const xmlChar *str3)
@@ -2148,7 +2151,7 @@
 	msg, str1, str2, str3, NULL);
 }
 
-static void
+static void LIBXML_ATTR_FORMAT(4,0)
 xmlSchemaErr4(xmlSchemaAbstractCtxtPtr actxt,
 	      int error, xmlNodePtr node, const char *msg,
 	      const xmlChar *str1, const xmlChar *str2,
@@ -2158,7 +2161,7 @@
 	msg, str1, str2, str3, str4);
 }
 
-static void
+static void LIBXML_ATTR_FORMAT(4,0)
 xmlSchemaErr(xmlSchemaAbstractCtxtPtr actxt,
 	     int error, xmlNodePtr node, const char *msg,
 	     const xmlChar *str1, const xmlChar *str2)
@@ -2181,7 +2184,7 @@
 	/*
 	* Don't try to format other nodes than element and
 	* attribute nodes.
-	* Play save and return an empty string.
+	* Play safe and return an empty string.
 	*/
 	*msg = xmlStrdup(BAD_CAST "");
 	return(*msg);
@@ -2246,6 +2249,13 @@
 	TODO
 	return (NULL);
     }
+
+    /*
+     * xmlSchemaFormatItemForReport() also returns an escaped format
+     * string, so do this before calling it below (in the future).
+     */
+    xmlEscapeFormatString(msg);
+
     /*
     * VAL TODO: The output of the given schema component is currently
     * disabled.
@@ -2262,7 +2272,7 @@
     return (*msg);
 }
 
-static void
+static void LIBXML_ATTR_FORMAT(3,0)
 xmlSchemaInternalErr2(xmlSchemaAbstractCtxtPtr actxt,
 		     const char *funcName,
 		     const char *message,
@@ -2273,24 +2283,21 @@
 
     if (actxt == NULL)
         return;
-    msg = xmlStrdup(BAD_CAST "Internal error: ");
-    msg = xmlStrcat(msg, BAD_CAST funcName);
-    msg = xmlStrcat(msg, BAD_CAST ", ");
+    msg = xmlStrdup(BAD_CAST "Internal error: %s, ");
     msg = xmlStrcat(msg, BAD_CAST message);
     msg = xmlStrcat(msg, BAD_CAST ".\n");
 
     if (actxt->type == XML_SCHEMA_CTXT_VALIDATOR)
-	xmlSchemaErr(actxt, XML_SCHEMAV_INTERNAL, NULL,
-	    (const char *) msg, str1, str2);
-
+	xmlSchemaErr3(actxt, XML_SCHEMAV_INTERNAL, NULL,
+	    (const char *) msg, (const xmlChar *) funcName, str1, str2);
     else if (actxt->type == XML_SCHEMA_CTXT_PARSER)
-	xmlSchemaErr(actxt, XML_SCHEMAP_INTERNAL, NULL,
-	    (const char *) msg, str1, str2);
+	xmlSchemaErr3(actxt, XML_SCHEMAP_INTERNAL, NULL,
+	    (const char *) msg, (const xmlChar *) funcName, str1, str2);
 
     FREE_AND_NULL(msg)
 }
 
-static void
+static void LIBXML_ATTR_FORMAT(3,0)
 xmlSchemaInternalErr(xmlSchemaAbstractCtxtPtr actxt,
 		     const char *funcName,
 		     const char *message)
@@ -2299,7 +2306,7 @@
 }
 
 #if 0
-static void
+static void LIBXML_ATTR_FORMAT(3,0)
 xmlSchemaPInternalErr(xmlSchemaParserCtxtPtr pctxt,
 		     const char *funcName,
 		     const char *message,
@@ -2311,7 +2318,7 @@
 }
 #endif
 
-static void
+static void LIBXML_ATTR_FORMAT(5,0)
 xmlSchemaCustomErr4(xmlSchemaAbstractCtxtPtr actxt,
 		   xmlParserErrors error,
 		   xmlNodePtr node,
@@ -2336,7 +2343,7 @@
     FREE_AND_NULL(msg)
 }
 
-static void
+static void LIBXML_ATTR_FORMAT(5,0)
 xmlSchemaCustomErr(xmlSchemaAbstractCtxtPtr actxt,
 		   xmlParserErrors error,
 		   xmlNodePtr node,
@@ -2351,7 +2358,7 @@
 
 
 
-static void
+static void LIBXML_ATTR_FORMAT(5,0)
 xmlSchemaCustomWarning(xmlSchemaAbstractCtxtPtr actxt,
 		   xmlParserErrors error,
 		   xmlNodePtr node,
@@ -2376,7 +2383,7 @@
 
 
 
-static void
+static void LIBXML_ATTR_FORMAT(5,0)
 xmlSchemaKeyrefErr(xmlSchemaValidCtxtPtr vctxt,
 		   xmlParserErrors error,
 		   xmlSchemaPSVIIDCNodePtr idcNode,
@@ -2476,11 +2483,13 @@
 	msg = xmlStrcat(msg, BAD_CAST " '");
 	if (type->builtInType != 0) {
 	    msg = xmlStrcat(msg, BAD_CAST "xs:");
-	    msg = xmlStrcat(msg, type->name);
-	} else
-	    msg = xmlStrcat(msg,
-		xmlSchemaFormatQName(&str,
-		    type->targetNamespace, type->name));
+	    str = xmlStrdup(type->name);
+	} else {
+	    const xmlChar *qName = xmlSchemaFormatQName(&str, type->targetNamespace, type->name);
+	    if (!str)
+		str = xmlStrdup(qName);
+	}
+	msg = xmlStrcat(msg, xmlEscapeFormatString(&str));
 	msg = xmlStrcat(msg, BAD_CAST "'");
 	FREE_AND_NULL(str);
     }
@@ -2525,7 +2534,7 @@
     FREE_AND_NULL(msg)
 }
 
-static void
+static void LIBXML_ATTR_FORMAT(5,0)
 xmlSchemaComplexTypeErr(xmlSchemaAbstractCtxtPtr actxt,
 		        xmlParserErrors error,
 		        xmlNodePtr node,
@@ -2617,7 +2626,7 @@
 		str = xmlStrcat(str, BAD_CAST ", ");
 	}
 	str = xmlStrcat(str, BAD_CAST " ).\n");
-	msg = xmlStrcat(msg, BAD_CAST str);
+	msg = xmlStrcat(msg, xmlEscapeFormatString(&str));
 	FREE_AND_NULL(str)
     } else
       msg = xmlStrcat(msg, BAD_CAST "\n");
@@ -2625,7 +2634,7 @@
     xmlFree(msg);
 }
 
-static void
+static void LIBXML_ATTR_FORMAT(8,0)
 xmlSchemaFacetErr(xmlSchemaAbstractCtxtPtr actxt,
 		  xmlParserErrors error,
 		  xmlNodePtr node,
@@ -2916,7 +2925,7 @@
  *
  * Reports an error during parsing.
  */
-static void
+static void LIBXML_ATTR_FORMAT(5,0)
 xmlSchemaPCustomErrExt(xmlSchemaParserCtxtPtr ctxt,
 		    xmlParserErrors error,
 		    xmlSchemaBasicItemPtr item,
@@ -2952,7 +2961,7 @@
  *
  * Reports an error during parsing.
  */
-static void
+static void LIBXML_ATTR_FORMAT(5,0)
 xmlSchemaPCustomErr(xmlSchemaParserCtxtPtr ctxt,
 		    xmlParserErrors error,
 		    xmlSchemaBasicItemPtr item,
@@ -2977,7 +2986,7 @@
  *
  * Reports an attribute use error during parsing.
  */
-static void
+static void LIBXML_ATTR_FORMAT(6,0)
 xmlSchemaPAttrUseErr4(xmlSchemaParserCtxtPtr ctxt,
 		    xmlParserErrors error,
 		    xmlNodePtr node,
@@ -3099,7 +3108,7 @@
  * Reports a simple type validation error.
  * TODO: Should this report the value of an element as well?
  */
-static void
+static void LIBXML_ATTR_FORMAT(8,0)
 xmlSchemaPSimpleTypeErr(xmlSchemaParserCtxtPtr ctxt,
 			xmlParserErrors error,
 			xmlSchemaBasicItemPtr ownerItem ATTRIBUTE_UNUSED,
@@ -3141,11 +3150,13 @@
 		msg = xmlStrcat(msg, BAD_CAST " '");
 		if (type->builtInType != 0) {
 		    msg = xmlStrcat(msg, BAD_CAST "xs:");
-		    msg = xmlStrcat(msg, type->name);
-		} else
-		    msg = xmlStrcat(msg,
-			xmlSchemaFormatQName(&str,
-			    type->targetNamespace, type->name));
+		    str = xmlStrdup(type->name);
+		} else {
+		    const xmlChar *qName = xmlSchemaFormatQName(&str, type->targetNamespace, type->name);
+		    if (!str)
+			str = xmlStrdup(qName);
+		}
+		msg = xmlStrcat(msg, xmlEscapeFormatString(&str));
 		msg = xmlStrcat(msg, BAD_CAST "'.");
 		FREE_AND_NULL(str);
 	    }
@@ -3157,8 +3168,10 @@
 		"valid.");
 	}
 	if (expected) {
+	    xmlChar *expectedEscaped = xmlCharStrdup(expected);
 	    msg = xmlStrcat(msg, BAD_CAST " Expected is '");
-	    msg = xmlStrcat(msg, BAD_CAST expected);
+	    msg = xmlStrcat(msg, xmlEscapeFormatString(&expectedEscaped));
+	    FREE_AND_NULL(expectedEscaped);
 	    msg = xmlStrcat(msg, BAD_CAST "'.\n");
 	} else
 	    msg = xmlStrcat(msg, BAD_CAST "\n");
@@ -27382,10 +27395,17 @@
 
         for (j = 0, i = 0; i < nb_attributes; i++, j += 5) {
 	    /*
-	    * Duplicate the value.
+	    * Duplicate the value, changing any &#38; to a literal ampersand.
+	    *
+	    * libxml2 differs from normal SAX here in that it escapes all ampersands
+	    * as &#38; instead of delivering the raw converted string. Changing the
+	    * behavior at this point would break applications that use this API, so
+	    * we are forced to work around it. There is no danger of accidentally
+	    * decoding some entity other than &#38; in this step because without
+	    * unescaped ampersands there can be no other entities in the string.
 	    */
-	    value = xmlStrndup(attributes[j+3],
-		attributes[j+4] - attributes[j+3]);
+	    value = xmlStringLenDecodeEntities(vctxt->parserCtxt, attributes[j+3],
+		attributes[j+4] - attributes[j+3], XML_SUBSTITUTE_REF, 0, 0, 0);
 	    /*
 	    * TODO: Set the node line.
 	    */
diff --git a/xmlschemastypes.c b/xmlschemastypes.c
index ff64f50..5f38599 100644
--- a/xmlschemastypes.c
+++ b/xmlschemastypes.c
@@ -62,7 +62,7 @@
     long		year;
     unsigned int	mon	:4;	/* 1 <=  mon    <= 12   */
     unsigned int	day	:5;	/* 1 <=  day    <= 31   */
-    unsigned int	hour	:5;	/* 0 <=  hour   <= 23   */
+    unsigned int	hour	:5;	/* 0 <=  hour   <= 24   */
     unsigned int	min	:6;	/* 0 <=  min    <= 59	*/
     double		sec;
     unsigned int	tz_flag	:1;	/* is tzo explicitely set? */
@@ -1139,9 +1139,13 @@
 #define VALID_DATE(dt)						\
 	(VALID_YEAR(dt->year) && VALID_MONTH(dt->mon) && VALID_MDAY(dt))
 
+#define VALID_END_OF_DAY(dt)					\
+	((dt)->hour == 24 && (dt)->min == 0 && (dt)->sec == 0)
+
 #define VALID_TIME(dt)						\
-	(VALID_HOUR(dt->hour) && VALID_MIN(dt->min) &&		\
-	 VALID_SEC(dt->sec) && VALID_TZO(dt->tzo))
+	(((VALID_HOUR(dt->hour) && VALID_MIN(dt->min) &&	\
+	  VALID_SEC(dt->sec)) || VALID_END_OF_DAY(dt)) &&	\
+	 VALID_TZO(dt->tzo))
 
 #define VALID_DATETIME(dt)					\
 	(VALID_DATE(dt) && VALID_TIME(dt))
@@ -1355,7 +1359,7 @@
 	return ret;
     if (*cur != ':')
 	return 1;
-    if (!VALID_HOUR(value))
+    if (!VALID_HOUR(value) && value != 24 /* Allow end-of-day hour */)
 	return 2;
     cur++;
 
@@ -1377,7 +1381,7 @@
     if (ret != 0)
 	return ret;
 
-    if ((!VALID_SEC(dt->sec)) || (!VALID_TZO(dt->tzo)))
+    if (!VALID_TIME(dt))
 	return 2;
 
     *str = cur;
@@ -5303,6 +5307,7 @@
 			       xmlSchemaWhitespaceValueType ws)
 {
     int ret;
+    int stringType;
 
     if (facet == NULL)
 	return(-1);
@@ -5315,7 +5320,15 @@
 	    */
 	    if (value == NULL)
 		return(-1);
-	    ret = xmlRegexpExec(facet->regexp, value);
+	    /*
+	    * If string-derived type, regexp must be tested on the value space of
+	    * the datatype.
+	    * See https://www.w3.org/TR/xmlschema-2/#rf-pattern
+	    */
+	    stringType = val && ((val->type >= XML_SCHEMAS_STRING && val->type <= XML_SCHEMAS_NORMSTRING)
+			      || (val->type >= XML_SCHEMAS_TOKEN && val->type <= XML_SCHEMAS_NCNAME));
+	    ret = xmlRegexpExec(facet->regexp,
+	                        (stringType && val->value.str) ? val->value.str : value);
 	    if (ret == 1)
 		return(0);
 	    if (ret == 0)
diff --git a/xmlstring.c b/xmlstring.c
index a37220d..cc85777 100644
--- a/xmlstring.c
+++ b/xmlstring.c
@@ -457,6 +457,8 @@
         return(xmlStrndup(add, len));
 
     size = xmlStrlen(cur);
+    if (size < 0)
+        return(NULL);
     ret = (xmlChar *) xmlRealloc(cur, (size + len + 1) * sizeof(xmlChar));
     if (ret == NULL) {
         xmlErrMemory(NULL, NULL);
@@ -484,14 +486,19 @@
     int size;
     xmlChar *ret;
 
-    if (len < 0)
+    if (len < 0) {
         len = xmlStrlen(str2);
+        if (len < 0)
+            return(NULL);
+    }
     if ((str2 == NULL) || (len == 0))
         return(xmlStrdup(str1));
     if (str1 == NULL)
         return(xmlStrndup(str2, len));
 
     size = xmlStrlen(str1);
+    if (size < 0)
+        return(NULL);
     ret = (xmlChar *) xmlMalloc((size + len + 1) * sizeof(xmlChar));
     if (ret == NULL) {
         xmlErrMemory(NULL, NULL);
@@ -538,7 +545,7 @@
  * Returns the number of characters written to @buf or -1 if an error occurs.
  */
 int XMLCDECL
-xmlStrPrintf(xmlChar *buf, int len, const xmlChar *msg, ...) {
+xmlStrPrintf(xmlChar *buf, int len, const char *msg, ...) {
     va_list args;
     int ret;
 
@@ -566,7 +573,7 @@
  * Returns the number of characters written to @buf or -1 if an error occurs.
  */
 int
-xmlStrVPrintf(xmlChar *buf, int len, const xmlChar *msg, va_list ap) {
+xmlStrVPrintf(xmlChar *buf, int len, const char *msg, va_list ap) {
     int ret;
 
     if((buf == NULL) || (msg == NULL)) {
@@ -837,8 +844,8 @@
             break;
         if ( (ch = *ptr++) & 0x80)
             while ((ch<<=1) & 0x80 ) {
-                ptr++;
 		if (*ptr == 0) break;
+                ptr++;
 	    }
     }
     return (ptr - utf);
@@ -980,5 +987,60 @@
     return(xmlUTF8Strndup(utf, len));
 }
 
+/**
+ * xmlEscapeFormatString:
+ * @msg:  a pointer to the string in which to escape '%' characters.
+ * 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.
+ */
+xmlChar *
+xmlEscapeFormatString(xmlChar **msg)
+{
+    xmlChar *msgPtr = NULL;
+    xmlChar *result = NULL;
+    xmlChar *resultPtr = NULL;
+    size_t count = 0;
+    size_t msgLen = 0;
+    size_t resultLen = 0;
+
+    if (!msg || !*msg)
+        return(NULL);
+
+    for (msgPtr = *msg; *msgPtr != '\0'; ++msgPtr) {
+        ++msgLen;
+        if (*msgPtr == '%')
+            ++count;
+    }
+
+    if (count == 0)
+        return(*msg);
+
+    resultLen = msgLen + count + 1;
+    result = (xmlChar *) xmlMallocAtomic(resultLen * sizeof(xmlChar));
+    if (result == NULL) {
+        /* Clear *msg to prevent format string vulnerabilities in
+           out-of-memory situations. */
+        xmlFree(*msg);
+        *msg = NULL;
+        xmlErrMemory(NULL, NULL);
+        return(NULL);
+    }
+
+    for (msgPtr = *msg, resultPtr = result; *msgPtr != '\0'; ++msgPtr, ++resultPtr) {
+        *resultPtr = *msgPtr;
+        if (*msgPtr == '%')
+            *(++resultPtr) = '%';
+    }
+    result[resultLen - 1] = '\0';
+
+    xmlFree(*msg);
+    *msg = result;
+
+    return *msg;
+}
+
 #define bottom_xmlstring
 #include "elfgcchack.h"
diff --git a/xmlwriter.c b/xmlwriter.c
index fac20ac..69541b8 100644
--- a/xmlwriter.c
+++ b/xmlwriter.c
@@ -113,7 +113,7 @@
                                          const xmlChar * str, int len);
 static int xmlTextWriterCloseDocCallback(void *context);
 
-static xmlChar *xmlTextWriterVSprintf(const char *format, va_list argptr);
+static xmlChar *xmlTextWriterVSprintf(const char *format, va_list argptr) LIBXML_ATTR_FORMAT(1,0);
 static int xmlOutputBufferWriteBase64(xmlOutputBufferPtr out, int len,
                                       const unsigned char *data);
 static void xmlTextWriterStartDocumentCallback(void *ctx);
@@ -153,7 +153,7 @@
  *
  * Handle a writer error
  */
-static void
+static void LIBXML_ATTR_FORMAT(3,0)
 xmlWriterErrMsgInt(xmlTextWriterPtr ctxt, xmlParserErrors error,
                const char *msg, int val)
 {
diff --git a/xpath.c b/xpath.c
index 935fcff..751665b 100644
--- a/xpath.c
+++ b/xpath.c
@@ -639,7 +639,7 @@
             xmlChar buf[200];
 
             xmlStrPrintf(buf, 200,
-                         BAD_CAST "Memory allocation failed : %s\n",
+                         "Memory allocation failed : %s\n",
                          extra);
             ctxt->lastError.message = (char *) xmlStrdup(buf);
         } else {
@@ -945,7 +945,7 @@
     xmlXPathStepOp *steps;	/* ops for computation of this expression */
     int last;			/* index of last step in expression */
     xmlChar *expr;		/* the expression being computed */
-    xmlDictPtr dict;		/* the dictionnary to use if any */
+    xmlDictPtr dict;		/* the dictionary to use if any */
 #ifdef DEBUG_EVAL_COUNTS
     int nb;
     xmlChar *string;
@@ -3706,7 +3706,7 @@
 
     /* @@ with_ns to check whether namespace nodes should be looked at @@ */
     /*
-     * prevent duplcates
+     * prevent duplicates
      */
     for (i = 0;i < cur->nodeNr;i++)
         if (cur->nodeTab[i] == val) return(0);
@@ -8390,7 +8390,7 @@
 xmlXPathNextNamespace(xmlXPathParserContextPtr ctxt, xmlNodePtr cur) {
     if ((ctxt == NULL) || (ctxt->context == NULL)) return(NULL);
     if (ctxt->context->node->type != XML_ELEMENT_NODE) return(NULL);
-    if (ctxt->context->tmpNsList == NULL && cur != (xmlNodePtr) xmlXPathXMLNamespace) {
+    if (cur == NULL) {
         if (ctxt->context->tmpNsList != NULL)
 	    xmlFree(ctxt->context->tmpNsList);
 	ctxt->context->tmpNsList =
@@ -9996,7 +9996,7 @@
         (c == '[') || (c == ']') || (c == '@') || /* accelerators */
         (c == '*') || /* accelerators */
 	(!IS_LETTER(c) && (c != '_') &&
-         ((qualified) && (c != ':')))) {
+         ((!qualified) || (c != ':')))) {
 	return(NULL);
     }
 
@@ -12379,11 +12379,6 @@
                     STRANGE
 		    goto error;
                 case NODE_TEST_TYPE:
-		    /*
-		    * TODO: Don't we need to use
-		    *  xmlXPathNodeSetAddNs() for namespace nodes here?
-		    *  Surprisingly, some c14n tests fail, if we do this.
-		    */
 		    if (type == NODE_TYPE_NODE) {
 			switch (cur->type) {
 			    case XML_DOCUMENT_NODE:
@@ -12397,9 +12392,17 @@
 			    case XML_COMMENT_NODE:
 			    case XML_CDATA_SECTION_NODE:
 			    case XML_TEXT_NODE:
-			    case XML_NAMESPACE_DECL:
 				XP_TEST_HIT
 				break;
+			    case XML_NAMESPACE_DECL: {
+				if (axis == AXIS_NAMESPACE) {
+				    XP_TEST_HIT_NS
+				} else {
+	                            hasNsNodes = 1;
+				    XP_TEST_HIT
+				}
+				break;
+                            }
 			    default:
 				break;
 			}
@@ -12691,6 +12694,14 @@
     * Reset the context node.
     */
     xpctxt->node = oldContextNode;
+    /*
+    * When traversing the namespace axis in "toBool" mode, it's
+    * possible that tmpNsList wasn't freed.
+    */
+    if (xpctxt->tmpNsList != NULL) {
+        xmlFree(xpctxt->tmpNsList);
+        xpctxt->tmpNsList = NULL;
+    }
 
 #ifdef DEBUG_STEP
     xmlGenericError(xmlGenericErrorContext,
@@ -13994,9 +14005,14 @@
                 xmlNodeSetPtr oldset;
                 int i, j;
 
-                if (op->ch1 != -1)
+                if (op->ch1 != -1) {
                     total +=
                         xmlXPathCompOpEval(ctxt, &comp->steps[op->ch1]);
+                    CHECK_ERROR0;
+                }
+                if (ctxt->value == NULL) {
+                    XP_ERROR0(XPATH_INVALID_OPERAND);
+                }
                 if (op->ch2 == -1)
                     return (total);
 
@@ -14784,6 +14800,10 @@
 	}
     }
 
+    /* OP_VALUE has invalid ch1. */
+    if (op->op == XPATH_OP_VALUE)
+        return;
+
     /* Recurse */
     if (op->ch1 != -1)
         xmlXPathOptimizeExpression(comp, &comp->steps[op->ch1]);
diff --git a/xpointer.c b/xpointer.c
index 4b4ac2e..676c510 100644
--- a/xpointer.c
+++ b/xpointer.c
@@ -85,7 +85,7 @@
  *
  * Handle a redefinition of attribute error
  */
-static void
+static void LIBXML_ATTR_FORMAT(3,0)
 xmlXPtrErr(xmlXPathParserContextPtr ctxt, int error,
            const char * msg, const xmlChar *extra)
 {