summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--ChangeLog89
-rw-r--r--SAX2.c18
-rwxr-xr-xconfigure92
-rw-r--r--configure.in6
-rw-r--r--doc/APIchunk10.html6
-rw-r--r--doc/APIchunk11.html13
-rw-r--r--doc/APIchunk12.html5
-rw-r--r--doc/APIchunk13.html10
-rw-r--r--doc/APIchunk15.html3
-rw-r--r--doc/APIchunk16.html5
-rw-r--r--doc/APIchunk17.html4
-rw-r--r--doc/APIchunk18.html4
-rw-r--r--doc/APIchunk2.html33
-rw-r--r--doc/APIchunk21.html6
-rw-r--r--doc/APIchunk22.html28
-rw-r--r--doc/APIchunk24.html14
-rw-r--r--doc/APIchunk25.html26
-rw-r--r--doc/APIchunk3.html13
-rw-r--r--doc/APIchunk4.html6
-rw-r--r--doc/APIchunk8.html1
-rw-r--r--doc/APIchunk9.html10
-rw-r--r--doc/APIconstructors.html7
-rw-r--r--doc/APIfiles.html11
-rw-r--r--doc/APIfunctions.html5
-rw-r--r--doc/APIsymbols.html11
-rw-r--r--doc/Makefile.am4
-rw-r--r--doc/Makefile.in3
-rwxr-xr-xdoc/apibuild.py2
-rw-r--r--doc/devhelp/libxml2-parser.html3
-rw-r--r--doc/devhelp/libxml2-parserInternals.html5
-rw-r--r--doc/devhelp/libxml2-tree.html27
-rw-r--r--doc/devhelp/libxml2-valid.html4
-rw-r--r--doc/devhelp/libxml2-xmlversion.html18
-rw-r--r--doc/devhelp/libxml2.devhelp9
-rw-r--r--doc/examples/Makefile.am104
-rw-r--r--doc/examples/Makefile.in102
-rw-r--r--doc/html/libxml-parser.html1
-rw-r--r--doc/html/libxml-parserInternals.html3
-rw-r--r--doc/html/libxml-tree.html25
-rw-r--r--doc/html/libxml-valid.html4
-rw-r--r--doc/html/libxml-xmlversion.html4
-rw-r--r--doc/libxml2-api.xml71
-rw-r--r--doc/libxml2.xsa17
-rw-r--r--doc/news.html14
-rw-r--r--doc/xml.html15
-rw-r--r--elfgcchack.h80
-rw-r--r--include/libxml/parser.h9
-rw-r--r--include/libxml/parserInternals.h27
-rw-r--r--include/libxml/relaxng.h44
-rw-r--r--include/libxml/tree.h16
-rw-r--r--include/libxml/valid.h4
-rw-r--r--include/libxml/xmlerror.h64
-rw-r--r--include/libxml/xmlmemory.h8
-rw-r--r--include/libxml/xmlschemas.h4
-rw-r--r--include/libxml/xmlversion.h70
-rw-r--r--include/libxml/xmlversion.h.in62
-rw-r--r--include/libxml/xmlwriter.h78
-rw-r--r--libxml2.spec6
-rw-r--r--macos/src/XMLTestPrefix.h.orig1
-rw-r--r--parser.c37
-rwxr-xr-xpython/generator.py4
-rwxr-xr-xpython/setup.py2
-rw-r--r--[-rwxr-xr-x]python/tests/xpathleak.py0
-rw-r--r--testapi.c181
-rw-r--r--threads.c9
-rw-r--r--tree.c219
-rw-r--r--valid.c42
-rw-r--r--win32/Makefile.msvc.orig462
-rw-r--r--win32/libxml2.def.src7
-rw-r--r--xmllint.c2
-rw-r--r--xmlmemory.c6
-rw-r--r--xmlwriter.c8
-rw-r--r--xpath.c12
73 files changed, 1897 insertions, 428 deletions
diff --git a/ChangeLog b/ChangeLog
index a37871e..5b64949 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,92 @@
+Sun Jan 18 22:37:59 CET 2009 Daniel Veillard <daniel@veillard.com>
+
+ * configure.in doc/xml.html doc/*: preparing 0.7.3 release
+ * include/libxml/parserInternals.h SAX2.c: fix a typo in an name
+
+Sun Jan 18 21:48:28 CET 2009 Daniel Veillard <daniel@veillard.com>
+
+ * include/libxml/parser.h include/libxml/xmlwriter.h
+ include/libxml/relaxng.h include/libxml/xmlversion.h.in
+ include/libxml/xmlwin32version.h.in include/libxml/valid.h
+ include/libxml/xmlschemas.h include/libxml/xmlerror.h:
+ port patch from Marcus Meissner to add gcc checking for
+ printf like functions parameters, should fix #65068
+ * doc/apibuild.py doc/*: modified the script accordingly
+ and regenerated
+ * xpath.c xmlmemory.c threads.c: fix a few warnings
+
+Sun Jan 18 20:40:42 CET 2009 Daniel Veillard <daniel@veillard.com>
+
+ * include/libxml/xmlwin32version.h.in: windows header should
+ get the same define
+
+Sun Jan 18 18:22:33 CET 2009 Daniel Veillard <daniel@veillard.com>
+
+ * include/libxml/xmlversion.h.in include/libxml/xmlmemory.h:
+ apply patch from Marcus Meissner to add gcc attribute alloc_size
+ should fix #552505
+ * doc/apibuild.py doc/* testapi.c: regenerate the API
+ * include/libxml/parserInternals.h: fix a comment problem raised
+ by apibuild.py
+
+Sun Jan 18 16:39:01 CET 2009 Daniel Veillard <daniel@veillard.com>
+
+ * threads.c: also remove pthread key when stopping thread
+ support, patch based on Alex Ott one should fix #564723
+
+Sun Jan 18 15:55:18 CET 2009 Daniel Veillard <daniel@veillard.com>
+
+ * threads.c: patch from Daniel Zimmermann fixing a memory leak
+ in an edge case, solves #562230
+
+Sun Jan 18 15:06:05 CET 2009 Daniel Veillard <daniel@veillard.com>
+
+ * include/libxml/parserInternals.h SAX2.c: add a new define
+ XML_MAX_TEXT_LENGTH limiting the maximum size of a single text
+ node, the defaultis 10MB and can be removed with the HUGE
+ parsing option
+
+Mon Jan 05 18:28:41 CET 2009 Rob Richards <rrichards@cdatazone.org>
+
+ * include/libxml/parser.h parser.c: add XML_PARSE_OLDSAX parser
+ option to enable pre 2.7 SAX behavior.
+
+Wed Dec 31 23:11:37 CET 2008 Rob Richards <rrichards@cdatazone.org>
+
+ * tree.c: set doc on last child tree in xmlAddChildList for
+ bug #546772. Fix problem adding an attribute via with xmlAddChild
+ reported by Kris Breuker.
+
+Sun Dec 27 14:16:13 CET 2008 Rob Richards <rrichards@cdatazone.org>
+
+ * xmlwriter.c: fix indenting in xmlTextWriterFullEndElement for
+ bug# 554353.
+
+Thu Nov 27 16:24:52 CET 2008 Daniel Veillard <daniel@veillard.com>
+
+ * include/libxml/tree.h tree.c python/generator.py: adds
+ element traversal support
+ * valid.c: avoid a warning
+ * doc/*: regenerated
+
+Mon Nov 17 16:56:18 CET 2008 Daniel Veillard <daniel@veillard.com>
+
+ * SAX2.c parser.c: fix for CVE-2008-4226, a memory overflow
+ when building gigantic text nodes, and a bit of cleanup
+ to better handled out of memory problem in that code.
+ * tree.c: fix for CVE-2008-4225, lack of testing leads to
+ a busy loop test assuming one have enough core memory.
+
+Thu Nov 6 14:34:35 CET 2008 Daniel Veillard <daniel@veillard.com>
+
+ * xmllint.c: Matthias Kaehlcke reported a build problem when
+ not compiling HTML support in.
+
+Fri Oct 17 15:24:08 CEST 2008 Daniel Veillard <daniel@veillard.com>
+
+ * configure.in doc/Makefile.am: patch from Adrian Bunk which
+ adds --disable-rebuild-docs to avoid rebuilding them
+
Fri Oct 3 09:43:45 CEST 2008 Daniel Veillard <daniel@veillard.com>
* configure.in doc/* NEWS: preparing the release of 2.7.2
diff --git a/SAX2.c b/SAX2.c
index 80cd1bd..164409c 100644
--- a/SAX2.c
+++ b/SAX2.c
@@ -11,6 +11,7 @@
#include "libxml.h"
#include <stdlib.h>
#include <string.h>
+#include <limits.h>
#include <libxml/xmlmemory.h>
#include <libxml/tree.h>
#include <libxml/parser.h>
@@ -26,6 +27,11 @@
#include <libxml/HTMLtree.h>
#include <libxml/globals.h>
+/* Define SIZE_T_MAX unless defined through <limits.h>. */
+#ifndef SIZE_T_MAX
+# define SIZE_T_MAX ((size_t)-1)
+#endif /* !SIZE_T_MAX */
+
/* #define DEBUG_SAX2 */
/* #define DEBUG_SAX2_TREE */
@@ -2455,9 +2461,19 @@ xmlSAX2Characters(void *ctx, const xmlChar *ch, int len)
(xmlDictOwns(ctxt->dict, lastChild->content))) {
lastChild->content = xmlStrdup(lastChild->content);
}
+ if (((size_t)ctxt->nodelen + (size_t)len > XML_MAX_TEXT_LENGTH) &&
+ ((ctxt->options & XML_PARSE_HUGE) == 0)) {
+ xmlSAX2ErrMemory(ctxt, "xmlSAX2Characters: huge text node");
+ return;
+ }
+ if ((size_t)ctxt->nodelen > SIZE_T_MAX - (size_t)len ||
+ (size_t)ctxt->nodemem + (size_t)len > SIZE_T_MAX / 2) {
+ xmlSAX2ErrMemory(ctxt, "xmlSAX2Characters overflow prevented");
+ return;
+ }
if (ctxt->nodelen + len >= ctxt->nodemem) {
xmlChar *newbuf;
- int size;
+ size_t size;
size = ctxt->nodemem + len;
size *= 2;
diff --git a/configure b/configure
index fa9aa59..b6a50ee 100755
--- a/configure
+++ b/configure
@@ -889,6 +889,8 @@ FFLAGS
ac_ct_F77
LIBTOOL
HTML_DIR
+REBUILD_DOCS_TRUE
+REBUILD_DOCS_FALSE
Z_CFLAGS
Z_LIBS
WITH_ZLIB
@@ -1585,6 +1587,7 @@ Optional Features:
--enable-fast-install[=PKGS]
optimize for fast installation [default=yes]
--disable-libtool-lock avoid locking (might break parallel builds)
+ --enable-rebuild-docs[=yes/no] rebuild some generated docs [default=yes]
--enable-ipv6[=yes/no] enables compilation of IPv6 code [default=yes]
Optional Packages:
@@ -2191,7 +2194,7 @@ case $host_os in *\ *) host_os=`echo "$host_os" | sed 's/ /-/g'`;; esac
LIBXML_MAJOR_VERSION=2
LIBXML_MINOR_VERSION=7
-LIBXML_MICRO_VERSION=2
+LIBXML_MICRO_VERSION=3
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
@@ -5508,7 +5511,7 @@ ia64-*-hpux*)
;;
*-*-irix6*)
# Find out which ABI we are using.
- echo '#line 5511 "configure"' > conftest.$ac_ext
+ echo '#line 5514 "configure"' > conftest.$ac_ext
if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
(eval $ac_compile) 2>&5
ac_status=$?
@@ -8062,11 +8065,11 @@ else
-e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \
-e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
-e 's:$: $lt_compiler_flag:'`
- (eval echo "\"\$as_me:8065: $lt_compile\"" >&5)
+ (eval echo "\"\$as_me:8068: $lt_compile\"" >&5)
(eval "$lt_compile" 2>conftest.err)
ac_status=$?
cat conftest.err >&5
- echo "$as_me:8069: \$? = $ac_status" >&5
+ echo "$as_me:8072: \$? = $ac_status" >&5
if (exit $ac_status) && test -s "$ac_outfile"; then
# The compiler can only warn and ignore the option if not recognized
# So say no if there are warnings other than the usual output.
@@ -8352,11 +8355,11 @@ else
-e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \
-e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
-e 's:$: $lt_compiler_flag:'`
- (eval echo "\"\$as_me:8355: $lt_compile\"" >&5)
+ (eval echo "\"\$as_me:8358: $lt_compile\"" >&5)
(eval "$lt_compile" 2>conftest.err)
ac_status=$?
cat conftest.err >&5
- echo "$as_me:8359: \$? = $ac_status" >&5
+ echo "$as_me:8362: \$? = $ac_status" >&5
if (exit $ac_status) && test -s "$ac_outfile"; then
# The compiler can only warn and ignore the option if not recognized
# So say no if there are warnings other than the usual output.
@@ -8456,11 +8459,11 @@ else
-e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \
-e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
-e 's:$: $lt_compiler_flag:'`
- (eval echo "\"\$as_me:8459: $lt_compile\"" >&5)
+ (eval echo "\"\$as_me:8462: $lt_compile\"" >&5)
(eval "$lt_compile" 2>out/conftest.err)
ac_status=$?
cat out/conftest.err >&5
- echo "$as_me:8463: \$? = $ac_status" >&5
+ echo "$as_me:8466: \$? = $ac_status" >&5
if (exit $ac_status) && test -s out/conftest2.$ac_objext
then
# The compiler can only warn and ignore the option if not recognized
@@ -10807,7 +10810,7 @@ else
lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2
lt_status=$lt_dlunknown
cat > conftest.$ac_ext <<EOF
-#line 10810 "configure"
+#line 10813 "configure"
#include "confdefs.h"
#if HAVE_DLFCN_H
@@ -10907,7 +10910,7 @@ else
lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2
lt_status=$lt_dlunknown
cat > conftest.$ac_ext <<EOF
-#line 10910 "configure"
+#line 10913 "configure"
#include "confdefs.h"
#if HAVE_DLFCN_H
@@ -13327,11 +13330,11 @@ else
-e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \
-e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
-e 's:$: $lt_compiler_flag:'`
- (eval echo "\"\$as_me:13330: $lt_compile\"" >&5)
+ (eval echo "\"\$as_me:13333: $lt_compile\"" >&5)
(eval "$lt_compile" 2>conftest.err)
ac_status=$?
cat conftest.err >&5
- echo "$as_me:13334: \$? = $ac_status" >&5
+ echo "$as_me:13337: \$? = $ac_status" >&5
if (exit $ac_status) && test -s "$ac_outfile"; then
# The compiler can only warn and ignore the option if not recognized
# So say no if there are warnings other than the usual output.
@@ -13431,11 +13434,11 @@ else
-e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \
-e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
-e 's:$: $lt_compiler_flag:'`
- (eval echo "\"\$as_me:13434: $lt_compile\"" >&5)
+ (eval echo "\"\$as_me:13437: $lt_compile\"" >&5)
(eval "$lt_compile" 2>out/conftest.err)
ac_status=$?
cat out/conftest.err >&5
- echo "$as_me:13438: \$? = $ac_status" >&5
+ echo "$as_me:13441: \$? = $ac_status" >&5
if (exit $ac_status) && test -s out/conftest2.$ac_objext
then
# The compiler can only warn and ignore the option if not recognized
@@ -14995,11 +14998,11 @@ else
-e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \
-e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
-e 's:$: $lt_compiler_flag:'`
- (eval echo "\"\$as_me:14998: $lt_compile\"" >&5)
+ (eval echo "\"\$as_me:15001: $lt_compile\"" >&5)
(eval "$lt_compile" 2>conftest.err)
ac_status=$?
cat conftest.err >&5
- echo "$as_me:15002: \$? = $ac_status" >&5
+ echo "$as_me:15005: \$? = $ac_status" >&5
if (exit $ac_status) && test -s "$ac_outfile"; then
# The compiler can only warn and ignore the option if not recognized
# So say no if there are warnings other than the usual output.
@@ -15099,11 +15102,11 @@ else
-e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \
-e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
-e 's:$: $lt_compiler_flag:'`
- (eval echo "\"\$as_me:15102: $lt_compile\"" >&5)
+ (eval echo "\"\$as_me:15105: $lt_compile\"" >&5)
(eval "$lt_compile" 2>out/conftest.err)
ac_status=$?
cat out/conftest.err >&5
- echo "$as_me:15106: \$? = $ac_status" >&5
+ echo "$as_me:15109: \$? = $ac_status" >&5
if (exit $ac_status) && test -s out/conftest2.$ac_objext
then
# The compiler can only warn and ignore the option if not recognized
@@ -17288,11 +17291,11 @@ else
-e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \
-e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
-e 's:$: $lt_compiler_flag:'`
- (eval echo "\"\$as_me:17291: $lt_compile\"" >&5)
+ (eval echo "\"\$as_me:17294: $lt_compile\"" >&5)
(eval "$lt_compile" 2>conftest.err)
ac_status=$?
cat conftest.err >&5
- echo "$as_me:17295: \$? = $ac_status" >&5
+ echo "$as_me:17298: \$? = $ac_status" >&5
if (exit $ac_status) && test -s "$ac_outfile"; then
# The compiler can only warn and ignore the option if not recognized
# So say no if there are warnings other than the usual output.
@@ -17578,11 +17581,11 @@ else
-e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \
-e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
-e 's:$: $lt_compiler_flag:'`
- (eval echo "\"\$as_me:17581: $lt_compile\"" >&5)
+ (eval echo "\"\$as_me:17584: $lt_compile\"" >&5)
(eval "$lt_compile" 2>conftest.err)
ac_status=$?
cat conftest.err >&5
- echo "$as_me:17585: \$? = $ac_status" >&5
+ echo "$as_me:17588: \$? = $ac_status" >&5
if (exit $ac_status) && test -s "$ac_outfile"; then
# The compiler can only warn and ignore the option if not recognized
# So say no if there are warnings other than the usual output.
@@ -17682,11 +17685,11 @@ else
-e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \
-e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
-e 's:$: $lt_compiler_flag:'`
- (eval echo "\"\$as_me:17685: $lt_compile\"" >&5)
+ (eval echo "\"\$as_me:17688: $lt_compile\"" >&5)
(eval "$lt_compile" 2>out/conftest.err)
ac_status=$?
cat out/conftest.err >&5
- echo "$as_me:17689: \$? = $ac_status" >&5
+ echo "$as_me:17692: \$? = $ac_status" >&5
if (exit $ac_status) && test -s out/conftest2.$ac_objext
then
# The compiler can only warn and ignore the option if not recognized
@@ -20588,6 +20591,20 @@ if test "${with_coverage+set}" = set; then
fi
+# Check whether --enable-rebuild-docs was given.
+if test "${enable_rebuild_docs+set}" = set; then
+ enableval=$enable_rebuild_docs;
+fi
+
+ if test "$enable_rebuild_docs" = "no"; then
+ REBUILD_DOCS_TRUE=
+ REBUILD_DOCS_FALSE='#'
+else
+ REBUILD_DOCS_TRUE='#'
+ REBUILD_DOCS_FALSE=
+fi
+
+
if test "$with_schemas" = "yes"
then
with_pattern=yes
@@ -26662,7 +26679,7 @@ fi
{ echo "$as_me:$LINENO: checking for type of socket length (socklen_t)" >&5
echo $ECHO_N "checking for type of socket length (socklen_t)... $ECHO_C" >&6; }
cat > conftest.$ac_ext <<EOF
-#line 26665 "configure"
+#line 26682 "configure"
#include "confdefs.h"
#include <stddef.h>
@@ -26673,7 +26690,7 @@ int main(void) {
(void)getsockopt (1, 1, 1, NULL, (socklen_t *)NULL)
; return 0; }
EOF
-if { (eval echo configure:26676: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; _out=`eval $ac_compile 2>&1` && test "x$_out" = x; }; then
+if { (eval echo configure:26693: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; _out=`eval $ac_compile 2>&1` && test "x$_out" = x; }; then
rm -rf conftest*
{ echo "$as_me:$LINENO: result: socklen_t *" >&5
@@ -26685,7 +26702,7 @@ else
rm -rf conftest*
cat > conftest.$ac_ext <<EOF
-#line 26688 "configure"
+#line 26705 "configure"
#include "confdefs.h"
#include <stddef.h>
@@ -26696,7 +26713,7 @@ int main(void) {
(void)getsockopt (1, 1, 1, NULL, (size_t *)NULL)
; return 0; }
EOF
-if { (eval echo configure:26699: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; _out=`eval $ac_compile 2>&1` && test "x$_out" = x; }; then
+if { (eval echo configure:26716: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; _out=`eval $ac_compile 2>&1` && test "x$_out" = x; }; then
rm -rf conftest*
{ echo "$as_me:$LINENO: result: size_t *" >&5
@@ -26708,7 +26725,7 @@ else
rm -rf conftest*
cat > conftest.$ac_ext <<EOF
-#line 26711 "configure"
+#line 26728 "configure"
#include "confdefs.h"
#include <stddef.h>
@@ -26719,7 +26736,7 @@ int main(void) {
(void)getsockopt (1, 1, 1, NULL, (int *)NULL)
; return 0; }
EOF
-if { (eval echo configure:26722: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; _out=`eval $ac_compile 2>&1` && test "x$_out" = x; }; then
+if { (eval echo configure:26739: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; _out=`eval $ac_compile 2>&1` && test "x$_out" = x; }; then
rm -rf conftest*
{ echo "$as_me:$LINENO: result: int *" >&5
@@ -29703,6 +29720,13 @@ echo "$as_me: error: conditional \"am__fastdepCXX\" was never defined.
Usually this means the macro was only invoked conditionally." >&2;}
{ (exit 1); exit 1; }; }
fi
+if test -z "${REBUILD_DOCS_TRUE}" && test -z "${REBUILD_DOCS_FALSE}"; then
+ { { echo "$as_me:$LINENO: error: conditional \"REBUILD_DOCS\" was never defined.
+Usually this means the macro was only invoked conditionally." >&5
+echo "$as_me: error: conditional \"REBUILD_DOCS\" was never defined.
+Usually this means the macro was only invoked conditionally." >&2;}
+ { (exit 1); exit 1; }; }
+fi
if test -z "${WITH_PYTHON_TRUE}" && test -z "${WITH_PYTHON_FALSE}"; then
{ { echo "$as_me:$LINENO: error: conditional \"WITH_PYTHON\" was never defined.
Usually this means the macro was only invoked conditionally." >&5
@@ -30427,6 +30451,8 @@ FFLAGS!$FFLAGS$ac_delim
ac_ct_F77!$ac_ct_F77$ac_delim
LIBTOOL!$LIBTOOL$ac_delim
HTML_DIR!$HTML_DIR$ac_delim
+REBUILD_DOCS_TRUE!$REBUILD_DOCS_TRUE$ac_delim
+REBUILD_DOCS_FALSE!$REBUILD_DOCS_FALSE$ac_delim
Z_CFLAGS!$Z_CFLAGS$ac_delim
Z_LIBS!$Z_LIBS$ac_delim
WITH_ZLIB!$WITH_ZLIB$ac_delim
@@ -30497,8 +30523,6 @@ WITH_SCHEMAS!$WITH_SCHEMAS$ac_delim
TEST_SCHEMAS!$TEST_SCHEMAS$ac_delim
WITH_REGEXPS!$WITH_REGEXPS$ac_delim
TEST_REGEXPS!$TEST_REGEXPS$ac_delim
-WITH_DEBUG!$WITH_DEBUG$ac_delim
-DEBUG_OBJ!$DEBUG_OBJ$ac_delim
_ACEOF
if test `sed -n "s/.*$ac_delim\$/X/p" conf$$subs.sed | grep -c X` = 97; then
@@ -30540,6 +30564,8 @@ _ACEOF
ac_delim='%!_!# '
for ac_last_try in false false false false false :; do
cat >conf$$subs.sed <<_ACEOF
+WITH_DEBUG!$WITH_DEBUG$ac_delim
+DEBUG_OBJ!$DEBUG_OBJ$ac_delim
TEST_DEBUG!$TEST_DEBUG$ac_delim
WITH_MEM_DEBUG!$WITH_MEM_DEBUG$ac_delim
WITH_RUN_DEBUG!$WITH_RUN_DEBUG$ac_delim
@@ -30566,7 +30592,7 @@ LIBOBJS!$LIBOBJS$ac_delim
LTLIBOBJS!$LTLIBOBJS$ac_delim
_ACEOF
- if test `sed -n "s/.*$ac_delim\$/X/p" conf$$subs.sed | grep -c X` = 24; then
+ if test `sed -n "s/.*$ac_delim\$/X/p" conf$$subs.sed | grep -c X` = 26; then
break
elif $ac_last_try; then
{ { echo "$as_me:$LINENO: error: could not make $CONFIG_STATUS" >&5
diff --git a/configure.in b/configure.in
index 04f363f..1ac2316 100644
--- a/configure.in
+++ b/configure.in
@@ -5,7 +5,7 @@ AC_CANONICAL_HOST
LIBXML_MAJOR_VERSION=2
LIBXML_MINOR_VERSION=7
-LIBXML_MICRO_VERSION=2
+LIBXML_MICRO_VERSION=3
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
@@ -166,6 +166,10 @@ AC_ARG_WITH(zlib,
AC_ARG_WITH(coverage,
[ --with-coverage build for code coverage with GCC (off)])
+AC_ARG_ENABLE(rebuild-docs,
+[ --enable-rebuild-docs[[=yes/no]] rebuild some generated docs [[default=yes]]])
+AM_CONDITIONAL([REBUILD_DOCS], [test "$enable_rebuild_docs" = "no"])
+
dnl
dnl hard dependancies on options
dnl
diff --git a/doc/APIchunk10.html b/doc/APIchunk10.html
index 94fd2fa..5264d46 100644
--- a/doc/APIchunk10.html
+++ b/doc/APIchunk10.html
@@ -298,7 +298,8 @@ A:link, A:visited, A:active { text-decoration: underline }
<a href="html/libxml-xmlmemory.html#xmlGcMemSetup">xmlGcMemSetup</a><br />
<a href="html/libxml-xmlmemory.html#xmlMemSetup">xmlMemSetup</a><br />
<a href="html/libxml-parser.html#xmlParserInputDeallocate">xmlParserInputDeallocate</a><br />
-</dd><dt>allocator</dt><dd><a href="html/libxml-xmlmemory.html#DEBUG_MEMORY">DEBUG_MEMORY</a><br />
+</dd><dt>allocator</dt><dd><a href="html/libxml-xmlversion.html#ATTRIBUTE_ALLOC_SIZE">ATTRIBUTE_ALLOC_SIZE</a><br />
+<a href="html/libxml-xmlmemory.html#DEBUG_MEMORY">DEBUG_MEMORY</a><br />
</dd><dt>allocators</dt><dd><a href="html/libxml-xmlmemory.html#xmlGcMemGet">xmlGcMemGet</a><br />
<a href="html/libxml-xmlmemory.html#xmlGcMemSetup">xmlGcMemSetup</a><br />
</dd><dt>allow</dt><dd><a href="html/libxml-schemasInternals.html#XML_SCHEMAS_ATTR_GLOBAL">XML_SCHEMAS_ATTR_GLOBAL</a><br />
@@ -322,7 +323,8 @@ A:link, A:visited, A:active { text-decoration: underline }
<a href="html/libxml-tree.html#xmlValidateName">xmlValidateName</a><br />
<a href="html/libxml-tree.html#xmlValidateQName">xmlValidateQName</a><br />
</dd><dt>allowable</dt><dd><a href="html/libxml-parserInternals.html#xmlSkipBlankChars">xmlSkipBlankChars</a><br />
-</dd><dt>allowed</dt><dd><a href="html/libxml-HTMLparser.html#_htmlElemDesc">_htmlElemDesc</a><br />
+</dd><dt>allowed</dt><dd><a href="html/libxml-parserInternals.html#XML_MAX_TEXT_LENGTH">XML_MAX_TEXT_LENGTH</a><br />
+<a href="html/libxml-HTMLparser.html#_htmlElemDesc">_htmlElemDesc</a><br />
<a href="html/libxml-tree.html#_xmlElement">_xmlElement</a><br />
<a href="html/libxml-schemasInternals.html#_xmlSchemaWildcard">_xmlSchemaWildcard</a><br />
<a href="html/libxml-HTMLparser.html#htmlElementAllowedHere">htmlElementAllowedHere</a><br />
diff --git a/doc/APIchunk11.html b/doc/APIchunk11.html
index 7062e5e..b692956 100644
--- a/doc/APIchunk11.html
+++ b/doc/APIchunk11.html
@@ -37,10 +37,15 @@ A:link, A:visited, A:active { text-decoration: underline }
<a href="APIchunk27.html">w-w</a>
<a href="APIchunk28.html">x-x</a>
<a href="APIchunk29.html">y-z</a>
-</h2><h2>Letter b:</h2><dl><dt>back</dt><dd><a href="html/libxml-parserInternals.html#xmlEntityReferenceFunc">xmlEntityReferenceFunc</a><br />
+</h2><h2>Letter b:</h2><dl><dt>back</dt><dd><a href="html/libxml-tree.html#xmlChildElementCount">xmlChildElementCount</a><br />
+<a href="html/libxml-parserInternals.html#xmlEntityReferenceFunc">xmlEntityReferenceFunc</a><br />
+<a href="html/libxml-tree.html#xmlFirstElementChild">xmlFirstElementChild</a><br />
<a href="html/libxml-parser.html#xmlKeepBlanksDefault">xmlKeepBlanksDefault</a><br />
+<a href="html/libxml-tree.html#xmlLastElementChild">xmlLastElementChild</a><br />
<a href="html/libxml-nanoftp.html#xmlNanoFTPGet">xmlNanoFTPGet</a><br />
<a href="html/libxml-nanoftp.html#xmlNanoFTPList">xmlNanoFTPList</a><br />
+<a href="html/libxml-tree.html#xmlNextElementSibling">xmlNextElementSibling</a><br />
+<a href="html/libxml-tree.html#xmlPreviousElementSibling">xmlPreviousElementSibling</a><br />
<a href="html/libxml-relaxng.html#xmlRelaxNGDump">xmlRelaxNGDump</a><br />
<a href="html/libxml-parserInternals.html#xmlSetEntityReferenceFunc">xmlSetEntityReferenceFunc</a><br />
</dd><dt>badly</dt><dd><a href="html/libxml-parserInternals.html#xmlParseExternalID">xmlParseExternalID</a><br />
@@ -194,7 +199,8 @@ A:link, A:visited, A:active { text-decoration: underline }
</dd><dt>bound</dt><dd><a href="html/libxml-xmlregexp.html#xmlExpNewRange">xmlExpNewRange</a><br />
</dd><dt>boundaries</dt><dd><a href="html/libxml-parser.html#_xmlParserCtxt">_xmlParserCtxt</a><br />
<a href="html/libxml-tree.html#xmlSearchNs">xmlSearchNs</a><br />
-</dd><dt>boundary</dt><dd><a href="html/libxml-parserInternals.html#xmlParseElementChildrenContentDecl">xmlParseElementChildrenContentDecl</a><br />
+</dd><dt>boundary</dt><dd><a href="html/libxml-parserInternals.html#XML_MAX_TEXT_LENGTH">XML_MAX_TEXT_LENGTH</a><br />
+<a href="html/libxml-parserInternals.html#xmlParseElementChildrenContentDecl">xmlParseElementChildrenContentDecl</a><br />
<a href="html/libxml-parserInternals.html#xmlParseElementMixedContentDecl">xmlParseElementMixedContentDecl</a><br />
</dd><dt>bracket</dt><dd><a href="html/libxml-parserInternals.html#xmlParseCharData">xmlParseCharData</a><br />
</dd><dt>branch</dt><dd><a href="html/libxml-tree.html#xmlDOMWrapCloneNode">xmlDOMWrapCloneNode</a><br />
@@ -237,7 +243,8 @@ A:link, A:visited, A:active { text-decoration: underline }
<a href="html/libxml-xmlreader.html#xmlTextReaderGetRemainder">xmlTextReaderGetRemainder</a><br />
</dd><dt>builded</dt><dd><a href="html/libxml-schemasInternals.html#XML_SCHEMAS_ATTRGROUP_GLOBAL">XML_SCHEMAS_ATTRGROUP_GLOBAL</a><br />
<a href="html/libxml-schemasInternals.html#XML_SCHEMAS_ATTRGROUP_WILDCARD_BUILDED">XML_SCHEMAS_ATTRGROUP_WILDCARD_BUILDED</a><br />
-</dd><dt>building</dt><dd><a href="html/libxml-parser.html#_xmlParserCtxt">_xmlParserCtxt</a><br />
+</dd><dt>building</dt><dd><a href="html/libxml-parserInternals.html#XML_MAX_TEXT_LENGTH">XML_MAX_TEXT_LENGTH</a><br />
+<a href="html/libxml-parser.html#_xmlParserCtxt">_xmlParserCtxt</a><br />
<a href="html/libxml-DOCBparser.html#docbSAXParseDoc">docbSAXParseDoc</a><br />
<a href="html/libxml-DOCBparser.html#docbSAXParseFile">docbSAXParseFile</a><br />
<a href="html/libxml-HTMLparser.html#htmlSAXParseFile">htmlSAXParseFile</a><br />
diff --git a/doc/APIchunk12.html b/doc/APIchunk12.html
index ff1be47..41acac9 100644
--- a/doc/APIchunk12.html
+++ b/doc/APIchunk12.html
@@ -302,7 +302,9 @@ A:link, A:visited, A:active { text-decoration: underline }
<a href="html/libxml-xmlwriter.html#xmlTextWriterEndDocument">xmlTextWriterEndDocument</a><br />
</dd><dt>closes</dt><dd><a href="html/libxml-nanohttp.html#xmlNanoHTTPClose">xmlNanoHTTPClose</a><br />
<a href="html/libxml-nanohttp.html#xmlNanoHTTPSave">xmlNanoHTTPSave</a><br />
-</dd><dt>closest</dt><dd><a href="html/libxml-xpathInternals.html#xmlXPathCeilingFunction">xmlXPathCeilingFunction</a><br />
+</dd><dt>closest</dt><dd><a href="html/libxml-tree.html#xmlNextElementSibling">xmlNextElementSibling</a><br />
+<a href="html/libxml-tree.html#xmlPreviousElementSibling">xmlPreviousElementSibling</a><br />
+<a href="html/libxml-xpathInternals.html#xmlXPathCeilingFunction">xmlXPathCeilingFunction</a><br />
<a href="html/libxml-xpathInternals.html#xmlXPathFloorFunction">xmlXPathFloorFunction</a><br />
<a href="html/libxml-xpathInternals.html#xmlXPathRoundFunction">xmlXPathRoundFunction</a><br />
</dd><dt>closing</dt><dd><a href="html/libxml-parserInternals.html#htmlInitAutoClose">htmlInitAutoClose</a><br />
@@ -793,6 +795,7 @@ A:link, A:visited, A:active { text-decoration: underline }
<a href="html/libxml-valid.html#xmlValidateDtd">xmlValidateDtd</a><br />
</dd><dt>count</dt><dd><a href="html/libxml-entities.html#_xmlEntity">_xmlEntity</a><br />
<a href="html/libxml-nanoftp.html#ftpListCallback">ftpListCallback</a><br />
+<a href="html/libxml-tree.html#xmlChildElementCount">xmlChildElementCount</a><br />
<a href="html/libxml-xmlregexp.html#xmlExpRef">xmlExpRef</a><br />
<a href="html/libxml-debugXML.html#xmlLsCountNode">xmlLsCountNode</a><br />
<a href="html/libxml-xmlsave.html#xmlSaveDoc">xmlSaveDoc</a><br />
diff --git a/doc/APIchunk13.html b/doc/APIchunk13.html
index 2e8417f..a66dbb2 100644
--- a/doc/APIchunk13.html
+++ b/doc/APIchunk13.html
@@ -408,7 +408,12 @@ A:link, A:visited, A:active { text-decoration: underline }
<a href="html/libxml-catalog.html#xmlACatalogAdd">xmlACatalogAdd</a><br />
<a href="html/libxml-tree.html#xmlBuildQName">xmlBuildQName</a><br />
<a href="html/libxml-catalog.html#xmlCatalogAdd">xmlCatalogAdd</a><br />
+<a href="html/libxml-tree.html#xmlChildElementCount">xmlChildElementCount</a><br />
+<a href="html/libxml-tree.html#xmlFirstElementChild">xmlFirstElementChild</a><br />
+<a href="html/libxml-tree.html#xmlLastElementChild">xmlLastElementChild</a><br />
+<a href="html/libxml-tree.html#xmlNextElementSibling">xmlNextElementSibling</a><br />
<a href="html/libxml-tree.html#xmlNodeGetBase">xmlNodeGetBase</a><br />
+<a href="html/libxml-tree.html#xmlPreviousElementSibling">xmlPreviousElementSibling</a><br />
<a href="html/libxml-xmlstring.html#xmlStrEqual">xmlStrEqual</a><br />
<a href="html/libxml-xmlstring.html#xmlStrQEqual">xmlStrQEqual</a><br />
</dd><dt>differentiate</dt><dd><a href="html/libxml-xpath.html#xmlXPathOrderDocElems">xmlXPathOrderDocElems</a><br />
@@ -538,11 +543,16 @@ A:link, A:visited, A:active { text-decoration: underline }
<a href="html/libxml-xmlregexp.html#xmlRegExecCallbacks">xmlRegExecCallbacks</a><br />
</dd><dt>don</dt><dd><a href="html/libxml-schemasInternals.html#XML_SCHEMAS_ANY_LAX">XML_SCHEMAS_ANY_LAX</a><br />
<a href="html/libxml-xlink.html#xlinkIsLink">xlinkIsLink</a><br />
+<a href="html/libxml-tree.html#xmlChildElementCount">xmlChildElementCount</a><br />
<a href="html/libxml-parser.html#xmlCreatePushParserCtxt">xmlCreatePushParserCtxt</a><br />
<a href="html/libxml-tree.html#xmlDOMWrapCloneNode">xmlDOMWrapCloneNode</a><br />
+<a href="html/libxml-tree.html#xmlFirstElementChild">xmlFirstElementChild</a><br />
+<a href="html/libxml-tree.html#xmlLastElementChild">xmlLastElementChild</a><br />
<a href="html/libxml-tree.html#xmlNewDocNode">xmlNewDocNode</a><br />
<a href="html/libxml-tree.html#xmlNewDocNodeEatName">xmlNewDocNodeEatName</a><br />
+<a href="html/libxml-tree.html#xmlNextElementSibling">xmlNextElementSibling</a><br />
<a href="html/libxml-parserInternals.html#xmlParseStartTag">xmlParseStartTag</a><br />
+<a href="html/libxml-tree.html#xmlPreviousElementSibling">xmlPreviousElementSibling</a><br />
<a href="html/libxml-xmlregexp.html#xmlRegExecErrInfo">xmlRegExecErrInfo</a><br />
<a href="html/libxml-xmlregexp.html#xmlRegExecNextValues">xmlRegExecNextValues</a><br />
<a href="html/libxml-tree.html#xmlSearchNs">xmlSearchNs</a><br />
diff --git a/doc/APIchunk15.html b/doc/APIchunk15.html
index d8ac416..3a17059 100644
--- a/doc/APIchunk15.html
+++ b/doc/APIchunk15.html
@@ -113,7 +113,8 @@ A:link, A:visited, A:active { text-decoration: underline }
</dd><dt>fatal</dt><dd><a href="html/libxml-parser.html#fatalErrorSAXFunc">fatalErrorSAXFunc</a><br />
</dd><dt>fatalError</dt><dd><a href="html/libxml-parser.html#fatalErrorSAXFunc">fatalErrorSAXFunc</a><br />
</dd><dt>favor</dt><dd><a href="html/libxml-valid.html#xmlNewElementContent">xmlNewElementContent</a><br />
-</dd><dt>feature</dt><dd><a href="html/libxml-parser.html#xmlGetFeature">xmlGetFeature</a><br />
+</dd><dt>feature</dt><dd><a href="html/libxml-parserInternals.html#XML_MAX_TEXT_LENGTH">XML_MAX_TEXT_LENGTH</a><br />
+<a href="html/libxml-parser.html#xmlGetFeature">xmlGetFeature</a><br />
<a href="html/libxml-parser.html#xmlGetFeaturesList">xmlGetFeaturesList</a><br />
<a href="html/libxml-parser.html#xmlHasFeature">xmlHasFeature</a><br />
<a href="html/libxml-parser.html#xmlSetFeature">xmlSetFeature</a><br />
diff --git a/doc/APIchunk16.html b/doc/APIchunk16.html
index 788a439..b8e3fed 100644
--- a/doc/APIchunk16.html
+++ b/doc/APIchunk16.html
@@ -201,15 +201,20 @@ A:link, A:visited, A:active { text-decoration: underline }
<a href="html/libxml-SAX.html#attribute">attribute</a><br />
<a href="html/libxml-parser.html#attributeSAXFunc">attributeSAXFunc</a><br />
<a href="html/libxml-HTMLparser.html#htmlHandleOmittedElem">htmlHandleOmittedElem</a><br />
+<a href="html/libxml-tree.html#xmlChildElementCount">xmlChildElementCount</a><br />
+<a href="html/libxml-tree.html#xmlFirstElementChild">xmlFirstElementChild</a><br />
<a href="html/libxml-parserInternals.html#xmlHandleEntity">xmlHandleEntity</a><br />
+<a href="html/libxml-tree.html#xmlLastElementChild">xmlLastElementChild</a><br />
<a href="html/libxml-parserInternals.html#xmlNamespaceParseNCName">xmlNamespaceParseNCName</a><br />
<a href="html/libxml-parserInternals.html#xmlNamespaceParseNSDef">xmlNamespaceParseNSDef</a><br />
<a href="html/libxml-parserInternals.html#xmlNamespaceParseQName">xmlNamespaceParseQName</a><br />
+<a href="html/libxml-tree.html#xmlNextElementSibling">xmlNextElementSibling</a><br />
<a href="html/libxml-tree.html#xmlNodeListGetRawString">xmlNodeListGetRawString</a><br />
<a href="html/libxml-globals.html#xmlOutputBufferCreateFilenameDefault">xmlOutputBufferCreateFilenameDefault</a><br />
<a href="html/libxml-parserInternals.html#xmlParserHandlePEReference">xmlParserHandlePEReference</a><br />
<a href="html/libxml-parserInternals.html#xmlParserHandleReference">xmlParserHandleReference</a><br />
<a href="html/libxml-globals.html#xmlParserInputBufferCreateFilenameDefault">xmlParserInputBufferCreateFilenameDefault</a><br />
+<a href="html/libxml-tree.html#xmlPreviousElementSibling">xmlPreviousElementSibling</a><br />
<a href="html/libxml-xmlregexp.html#xmlRegNewExecCtxt">xmlRegNewExecCtxt</a><br />
<a href="html/libxml-xmlIO.html#xmlRegisterInputCallbacks">xmlRegisterInputCallbacks</a><br />
<a href="html/libxml-xmlIO.html#xmlRegisterOutputCallbacks">xmlRegisterOutputCallbacks</a><br />
diff --git a/doc/APIchunk17.html b/doc/APIchunk17.html
index 633240e..29b9ec3 100644
--- a/doc/APIchunk17.html
+++ b/doc/APIchunk17.html
@@ -210,7 +210,9 @@ A:link, A:visited, A:active { text-decoration: underline }
<a href="html/libxml-xpathInternals.html#xmlXPathNodeSetRemove">xmlXPathNodeSetRemove</a><br />
<a href="html/libxml-xpointer.html#xmlXPtrLocationSetRemove">xmlXPtrLocationSetRemove</a><br />
<a href="html/libxml-xpointer.html#xmlXPtrNewRange">xmlXPtrNewRange</a><br />
-</dd><dt>indicate</dt><dd><a href="html/libxml-parserInternals.html#xmlParseExternalID">xmlParseExternalID</a><br />
+</dd><dt>indicate</dt><dd><a href="html/libxml-xmlversion.html#ATTRIBUTE_ALLOC_SIZE">ATTRIBUTE_ALLOC_SIZE</a><br />
+<a href="html/libxml-xmlversion.html#ATTRIBUTE_PRINTF">ATTRIBUTE_PRINTF</a><br />
+<a href="html/libxml-parserInternals.html#xmlParseExternalID">xmlParseExternalID</a><br />
<a href="html/libxml-parser.html#xmlParserInputGrow">xmlParserInputGrow</a><br />
<a href="html/libxml-parser.html#xmlParserInputRead">xmlParserInputRead</a><br />
<a href="html/libxml-xmlregexp.html#xmlRegExecPushString">xmlRegExecPushString</a><br />
diff --git a/doc/APIchunk18.html b/doc/APIchunk18.html
index 78b4480..d0651f1 100644
--- a/doc/APIchunk18.html
+++ b/doc/APIchunk18.html
@@ -267,7 +267,8 @@ A:link, A:visited, A:active { text-decoration: underline }
<a href="html/libxml-threads.html#xmlUnlockLibrary">xmlUnlockLibrary</a><br />
</dd><dt>lifetime</dt><dd><a href="html/libxml-tree.html#xmlBufferCreateStatic">xmlBufferCreateStatic</a><br />
<a href="html/libxml-xmlregexp.html#xmlExpCtxtNbCons">xmlExpCtxtNbCons</a><br />
-</dd><dt>like</dt><dd><a href="html/libxml-parserInternals.html#IS_CHAR_CH">IS_CHAR_CH</a><br />
+</dd><dt>like</dt><dd><a href="html/libxml-xmlversion.html#ATTRIBUTE_PRINTF">ATTRIBUTE_PRINTF</a><br />
+<a href="html/libxml-parserInternals.html#IS_CHAR_CH">IS_CHAR_CH</a><br />
<a href="html/libxml-parserInternals.html#IS_DIGIT_CH">IS_DIGIT_CH</a><br />
<a href="html/libxml-parserInternals.html#IS_EXTENDER_CH">IS_EXTENDER_CH</a><br />
<a href="html/libxml-parserInternals.html#IS_LETTER_CH">IS_LETTER_CH</a><br />
@@ -285,6 +286,7 @@ A:link, A:visited, A:active { text-decoration: underline }
</dd><dt>limit</dt><dd><a href="html/libxml-encoding.html#xmlCharEncFirstLine">xmlCharEncFirstLine</a><br />
<a href="html/libxml-parserInternals.html#xmlDecodeEntities">xmlDecodeEntities</a><br />
<a href="html/libxml-pattern.html#xmlPatternMaxDepth">xmlPatternMaxDepth</a><br />
+</dd><dt>limitation</dt><dd><a href="html/libxml-parserInternals.html#XML_MAX_TEXT_LENGTH">XML_MAX_TEXT_LENGTH</a><br />
</dd><dt>limited</dt><dd><a href="html/libxml-HTMLparser.html#_htmlElemDesc">_htmlElemDesc</a><br />
</dd><dt>linear</dt><dd><a href="html/libxml-HTMLparser.html#htmlEntityLookup">htmlEntityLookup</a><br />
<a href="html/libxml-HTMLparser.html#htmlEntityValueLookup">htmlEntityValueLookup</a><br />
diff --git a/doc/APIchunk2.html b/doc/APIchunk2.html
index 1923889..e8f243f 100644
--- a/doc/APIchunk2.html
+++ b/doc/APIchunk2.html
@@ -62,34 +62,6 @@ A:link, A:visited, A:active { text-decoration: underline }
<a href="html/libxml-chvalid.html#xmlIsPubidChar">xmlIsPubidChar</a><br />
<a href="html/libxml-tree.html#xmlNewGlobalNs">xmlNewGlobalNs</a><br />
</dd><dt>DOCTYPE</dt><dd><a href="html/libxml-parserInternals.html#xmlParseDocTypeDecl">xmlParseDocTypeDecl</a><br />
-</dd><dt>DOM</dt><dd><a href="html/libxml-xmlversion.html#LIBXML_TREE_ENABLED">LIBXML_TREE_ENABLED</a><br />
-<a href="html/libxml-parser.html#_xmlParserCtxt">_xmlParserCtxt</a><br />
-<a href="html/libxml-SAX.html#attribute">attribute</a><br />
-<a href="html/libxml-parser.html#attributeSAXFunc">attributeSAXFunc</a><br />
-<a href="html/libxml-DOCBparser.html#docbSAXParseDoc">docbSAXParseDoc</a><br />
-<a href="html/libxml-DOCBparser.html#docbSAXParseFile">docbSAXParseFile</a><br />
-<a href="html/libxml-HTMLparser.html#htmlSAXParseDoc">htmlSAXParseDoc</a><br />
-<a href="html/libxml-HTMLparser.html#htmlSAXParseFile">htmlSAXParseFile</a><br />
-<a href="html/libxml-SAX.html#ignorableWhitespace">ignorableWhitespace</a><br />
-<a href="html/libxml-parser.html#ignorableWhitespaceSAXFunc">ignorableWhitespaceSAXFunc</a><br />
-<a href="html/libxml-SAX.html#resolveEntity">resolveEntity</a><br />
-<a href="html/libxml-parser.html#resolveEntitySAXFunc">resolveEntitySAXFunc</a><br />
-<a href="html/libxml-tree.html#xmlDOMWrapAcquireNsFunction">xmlDOMWrapAcquireNsFunction</a><br />
-<a href="html/libxml-tree.html#xmlDOMWrapReconcileNamespaces">xmlDOMWrapReconcileNamespaces</a><br />
-<a href="html/libxml-tree.html#xmlDOMWrapRemoveNode">xmlDOMWrapRemoveNode</a><br />
-<a href="html/libxml-tree.html#xmlDocDumpFormatMemoryEnc">xmlDocDumpFormatMemoryEnc</a><br />
-<a href="html/libxml-tree.html#xmlDocDumpMemoryEnc">xmlDocDumpMemoryEnc</a><br />
-<a href="html/libxml-parser.html#xmlKeepBlanksDefault">xmlKeepBlanksDefault</a><br />
-<a href="html/libxml-SAX2.html#xmlSAX2IgnorableWhitespace">xmlSAX2IgnorableWhitespace</a><br />
-<a href="html/libxml-SAX2.html#xmlSAX2ResolveEntity">xmlSAX2ResolveEntity</a><br />
-<a href="html/libxml-parser.html#xmlSAXParseDoc">xmlSAXParseDoc</a><br />
-<a href="html/libxml-parser.html#xmlSAXParseEntity">xmlSAXParseEntity</a><br />
-<a href="html/libxml-parser.html#xmlSAXParseFile">xmlSAXParseFile</a><br />
-<a href="html/libxml-parser.html#xmlSAXParseFileWithData">xmlSAXParseFileWithData</a><br />
-<a href="html/libxml-parser.html#xmlSAXParseMemory">xmlSAXParseMemory</a><br />
-<a href="html/libxml-parser.html#xmlSAXParseMemoryWithData">xmlSAXParseMemoryWithData</a><br />
-<a href="html/libxml-xpath.html#xmlXPathNodeSetGetLength">xmlXPathNodeSetGetLength</a><br />
-<a href="html/libxml-xpath.html#xmlXPathNodeSetItem">xmlXPathNodeSetItem</a><br />
</dd><dt>DOM-wrapper</dt><dd><a href="html/libxml-tree.html#xmlDOMWrapFreeCtxt">xmlDOMWrapFreeCtxt</a><br />
<a href="html/libxml-tree.html#xmlDOMWrapNewCtxt">xmlDOMWrapNewCtxt</a><br />
</dd><dt>DTDs</dt><dd><a href="html/libxml-parser.html#XML_COMPLETE_ATTRS">XML_COMPLETE_ATTRS</a><br />
@@ -227,11 +199,13 @@ A:link, A:visited, A:active { text-decoration: underline }
</dd></dl><h2>Letter E:</h2><dl><dt>ELEMENT</dt><dd><a href="html/libxml-tree.html#_xmlElementContent">_xmlElementContent</a><br />
</dd><dt>EMPTY</dt><dd><a href="html/libxml-parserInternals.html#xmlParseElementContentDecl">xmlParseElementContentDecl</a><br />
</dd><dt>ENTITIES</dt><dd><a href="html/libxml-parserInternals.html#xmlParseAttributeType">xmlParseAttributeType</a><br />
+<a href="html/libxml-valid.html#xmlValidateAttributeValue">xmlValidateAttributeValue</a><br />
<a href="html/libxml-valid.html#xmlValidateDtdFinal">xmlValidateDtdFinal</a><br />
</dd><dt>ENTITY</dt><dd><a href="html/libxml-HTMLparser.html#htmlParseEntityRef">htmlParseEntityRef</a><br />
<a href="html/libxml-parserInternals.html#xmlParseAttributeType">xmlParseAttributeType</a><br />
<a href="html/libxml-parserInternals.html#xmlParseEntityRef">xmlParseEntityRef</a><br />
<a href="html/libxml-parserInternals.html#xmlParseEntityValue">xmlParseEntityValue</a><br />
+<a href="html/libxml-valid.html#xmlValidateAttributeValue">xmlValidateAttributeValue</a><br />
<a href="html/libxml-valid.html#xmlValidateDtdFinal">xmlValidateDtdFinal</a><br />
</dd><dt>ENTITY_REF</dt><dd><a href="html/libxml-tree.html#xmlNodeBufGetContent">xmlNodeBufGetContent</a><br />
<a href="html/libxml-tree.html#xmlNodeGetContent">xmlNodeGetContent</a><br />
@@ -260,6 +234,8 @@ A:link, A:visited, A:active { text-decoration: underline }
<a href="html/libxml-tree.html#_xmlElement">_xmlElement</a><br />
<a href="html/libxml-tree.html#_xmlElementContent">_xmlElementContent</a><br />
<a href="html/libxml-HTMLparser.html#htmlNodeStatus">htmlNodeStatus</a><br />
+<a href="html/libxml-tree.html#xmlFirstElementChild">xmlFirstElementChild</a><br />
+<a href="html/libxml-tree.html#xmlLastElementChild">xmlLastElementChild</a><br />
<a href="html/libxml-parserInternals.html#xmlParseAttributeType">xmlParseAttributeType</a><br />
<a href="html/libxml-parserInternals.html#xmlParseDocTypeDecl">xmlParseDocTypeDecl</a><br />
<a href="html/libxml-parserInternals.html#xmlParseElement">xmlParseElement</a><br />
@@ -320,6 +296,7 @@ A:link, A:visited, A:active { text-decoration: underline }
<a href="html/libxml-parserInternals.html#xmlParsePEReference">xmlParsePEReference</a><br />
<a href="html/libxml-parserInternals.html#xmlParserHandlePEReference">xmlParserHandlePEReference</a><br />
<a href="html/libxml-parserInternals.html#xmlParserHandleReference">xmlParserHandleReference</a><br />
+<a href="html/libxml-valid.html#xmlValidateAttributeValue">xmlValidateAttributeValue</a><br />
<a href="html/libxml-valid.html#xmlValidateOneAttribute">xmlValidateOneAttribute</a><br />
<a href="html/libxml-valid.html#xmlValidateOneNamespace">xmlValidateOneNamespace</a><br />
</dd><dt>EntityDecl</dt><dd><a href="html/libxml-parserInternals.html#xmlParseEntityDecl">xmlParseEntityDecl</a><br />
diff --git a/doc/APIchunk21.html b/doc/APIchunk21.html
index cff8e69..4f02c03 100644
--- a/doc/APIchunk21.html
+++ b/doc/APIchunk21.html
@@ -230,7 +230,8 @@ A:link, A:visited, A:active { text-decoration: underline }
<a href="html/libxml-xpathInternals.html#xmlXPathValueFlipSign">xmlXPathValueFlipSign</a><br />
</dd><dt>opposite</dt><dd><a href="html/libxml-parser.html#xmlCleanupParser">xmlCleanupParser</a><br />
</dd><dt>optimized</dt><dd><a href="html/libxml-xpathInternals.html#xmlXPathNodeSetAddUnique">xmlXPathNodeSetAddUnique</a><br />
-</dd><dt>option</dt><dd><a href="html/libxml-tree.html#xmlDOMWrapAdoptNode">xmlDOMWrapAdoptNode</a><br />
+</dd><dt>option</dt><dd><a href="html/libxml-parserInternals.html#XML_MAX_TEXT_LENGTH">XML_MAX_TEXT_LENGTH</a><br />
+<a href="html/libxml-tree.html#xmlDOMWrapAdoptNode">xmlDOMWrapAdoptNode</a><br />
<a href="html/libxml-tree.html#xmlDOMWrapCloneNode">xmlDOMWrapCloneNode</a><br />
<a href="html/libxml-tree.html#xmlDOMWrapReconcileNamespaces">xmlDOMWrapReconcileNamespaces</a><br />
<a href="html/libxml-tree.html#xmlGetLineNo">xmlGetLineNo</a><br />
@@ -333,7 +334,8 @@ A:link, A:visited, A:active { text-decoration: underline }
</dd><dt>outside</dt><dd><a href="html/libxml-tree.html#xmlReconciliateNs">xmlReconciliateNs</a><br />
</dd><dt>over</dt><dd><a href="html/libxml-xmlregexp.html#xmlExpCtxtNbCons">xmlExpCtxtNbCons</a><br />
</dd><dt>overflow</dt><dd><a href="html/libxml-parser.html#_xmlParserInput">_xmlParserInput</a><br />
-</dd><dt>override</dt><dd><a href="html/libxml-SAX.html#resolveEntity">resolveEntity</a><br />
+</dd><dt>override</dt><dd><a href="html/libxml-parserInternals.html#XML_MAX_TEXT_LENGTH">XML_MAX_TEXT_LENGTH</a><br />
+<a href="html/libxml-SAX.html#resolveEntity">resolveEntity</a><br />
<a href="html/libxml-parser.html#resolveEntitySAXFunc">resolveEntitySAXFunc</a><br />
<a href="html/libxml-catalog.html#xmlCatalogAdd">xmlCatalogAdd</a><br />
<a href="html/libxml-SAX2.html#xmlSAX2ResolveEntity">xmlSAX2ResolveEntity</a><br />
diff --git a/doc/APIchunk22.html b/doc/APIchunk22.html
index c84804c..6ac6027 100644
--- a/doc/APIchunk22.html
+++ b/doc/APIchunk22.html
@@ -344,6 +344,7 @@ A:link, A:visited, A:active { text-decoration: underline }
<a href="html/libxml-parser.html#xmlKeepBlanksDefault">xmlKeepBlanksDefault</a><br />
<a href="html/libxml-parser.html#xmlLineNumbersDefault">xmlLineNumbersDefault</a><br />
<a href="html/libxml-parser.html#xmlPedanticParserDefault">xmlPedanticParserDefault</a><br />
+<a href="html/libxml-tree.html#xmlPreviousElementSibling">xmlPreviousElementSibling</a><br />
<a href="html/libxml-parserInternals.html#xmlPushInput">xmlPushInput</a><br />
<a href="html/libxml-SAX2.html#xmlSAXDefaultVersion">xmlSAXDefaultVersion</a><br />
<a href="html/libxml-parser.html#xmlSubstituteEntitiesDefault">xmlSubstituteEntitiesDefault</a><br />
@@ -429,32 +430,6 @@ A:link, A:visited, A:active { text-decoration: underline }
</dd><dt>produced</dt><dd><a href="html/libxml-encoding.html#xmlCharEncodingOutputFunc">xmlCharEncodingOutputFunc</a><br />
<a href="html/libxml-parserInternals.html#xmlCurrentChar">xmlCurrentChar</a><br />
</dd><dt>producing</dt><dd><a href="html/libxml-xmlstring.html#xmlCheckUTF8">xmlCheckUTF8</a><br />
-</dd><dt>production</dt><dd><a href="html/libxml-parserInternals.html#IS_BASECHAR">IS_BASECHAR</a><br />
-<a href="html/libxml-parserInternals.html#IS_BLANK">IS_BLANK</a><br />
-<a href="html/libxml-parserInternals.html#IS_BYTE_CHAR">IS_BYTE_CHAR</a><br />
-<a href="html/libxml-parserInternals.html#IS_CHAR">IS_CHAR</a><br />
-<a href="html/libxml-parserInternals.html#IS_COMBINING">IS_COMBINING</a><br />
-<a href="html/libxml-parserInternals.html#IS_DIGIT">IS_DIGIT</a><br />
-<a href="html/libxml-parserInternals.html#IS_EXTENDER">IS_EXTENDER</a><br />
-<a href="html/libxml-parserInternals.html#IS_IDEOGRAPHIC">IS_IDEOGRAPHIC</a><br />
-<a href="html/libxml-parserInternals.html#IS_LETTER">IS_LETTER</a><br />
-<a href="html/libxml-parserInternals.html#IS_PUBIDCHAR">IS_PUBIDCHAR</a><br />
-<a href="html/libxml-parserInternals.html#xmlIsLetter">xmlIsLetter</a><br />
-<a href="html/libxml-parserInternals.html#xmlParseAttributeType">xmlParseAttributeType</a><br />
-<a href="html/libxml-parser.html#xmlParseBalancedChunkMemory">xmlParseBalancedChunkMemory</a><br />
-<a href="html/libxml-parser.html#xmlParseBalancedChunkMemoryRecover">xmlParseBalancedChunkMemoryRecover</a><br />
-<a href="html/libxml-parserInternals.html#xmlParseCharRef">xmlParseCharRef</a><br />
-<a href="html/libxml-parser.html#xmlParseCtxtExternalEntity">xmlParseCtxtExternalEntity</a><br />
-<a href="html/libxml-parser.html#xmlParseExtParsedEnt">xmlParseExtParsedEnt</a><br />
-<a href="html/libxml-parser.html#xmlParseExternalEntity">xmlParseExternalEntity</a><br />
-<a href="html/libxml-parserInternals.html#xmlParseExternalID">xmlParseExternalID</a><br />
-<a href="html/libxml-parser.html#xmlParseInNodeContext">xmlParseInNodeContext</a><br />
-<a href="html/libxml-valid.html#xmlValidateNameValue">xmlValidateNameValue</a><br />
-<a href="html/libxml-valid.html#xmlValidateNamesValue">xmlValidateNamesValue</a><br />
-<a href="html/libxml-valid.html#xmlValidateNmtokenValue">xmlValidateNmtokenValue</a><br />
-<a href="html/libxml-valid.html#xmlValidateNmtokensValue">xmlValidateNmtokensValue</a><br />
-<a href="html/libxml-xpathInternals.html#xmlXPathIdFunction">xmlXPathIdFunction</a><br />
-<a href="html/libxml-xpathInternals.html#xmlXPathNormalizeFunction">xmlXPathNormalizeFunction</a><br />
</dd><dt>production:</dt><dd><a href="html/libxml-parserInternals.html#xmlCheckLanguageID">xmlCheckLanguageID</a><br />
</dd><dt>productions</dt><dd><a href="html/libxml-parserInternals.html#xmlCheckLanguageID">xmlCheckLanguageID</a><br />
</dd><dt>program</dt><dd><a href="html/libxml-xpointer.html#xmlXPtrNewContext">xmlXPtrNewContext</a><br />
@@ -481,6 +456,7 @@ A:link, A:visited, A:active { text-decoration: underline }
<a href="html/libxml-xpath.html#xmlXPathIsNaN">xmlXPathIsNaN</a><br />
</dd><dt>prolog</dt><dd><a href="html/libxml-parser.html#xmlParseDocument">xmlParseDocument</a><br />
</dd><dt>prompt</dt><dd><a href="html/libxml-debugXML.html#xmlShellReadlineFunc">xmlShellReadlineFunc</a><br />
+</dd><dt>proper</dt><dd><a href="html/libxml-valid.html#xmlValidateAttributeValue">xmlValidateAttributeValue</a><br />
</dd><dt>properly</dt><dd><a href="html/libxml-parserInternals.html#xmlParseElementChildrenContentDecl">xmlParseElementChildrenContentDecl</a><br />
<a href="html/libxml-parserInternals.html#xmlParseMarkupDecl">xmlParseMarkupDecl</a><br />
<a href="html/libxml-tree.html#xmlReconciliateNs">xmlReconciliateNs</a><br />
diff --git a/doc/APIchunk24.html b/doc/APIchunk24.html
index 83f5111..4377acb 100644
--- a/doc/APIchunk24.html
+++ b/doc/APIchunk24.html
@@ -42,6 +42,7 @@ A:link, A:visited, A:active { text-decoration: underline }
<a href="html/libxml-catalog.html#xmlInitializeCatalog">xmlInitializeCatalog</a><br />
<a href="html/libxml-catalog.html#xmlLoadCatalog">xmlLoadCatalog</a><br />
<a href="html/libxml-catalog.html#xmlLoadCatalogs">xmlLoadCatalogs</a><br />
+</dd><dt>safety</dt><dd><a href="html/libxml-parserInternals.html#XML_MAX_TEXT_LENGTH">XML_MAX_TEXT_LENGTH</a><br />
</dd><dt>same</dt><dd><a href="html/libxml-HTMLtree.html#HTML_COMMENT_NODE">HTML_COMMENT_NODE</a><br />
<a href="html/libxml-HTMLtree.html#HTML_ENTITY_REF_NODE">HTML_ENTITY_REF_NODE</a><br />
<a href="html/libxml-HTMLtree.html#HTML_PI_NODE">HTML_PI_NODE</a><br />
@@ -315,6 +316,8 @@ A:link, A:visited, A:active { text-decoration: underline }
<a href="html/libxml-tree.html#_xmlNode">_xmlNode</a><br />
<a href="html/libxml-tree.html#xmlAddNextSibling">xmlAddNextSibling</a><br />
<a href="html/libxml-tree.html#xmlAddPrevSibling">xmlAddPrevSibling</a><br />
+<a href="html/libxml-tree.html#xmlNextElementSibling">xmlNextElementSibling</a><br />
+<a href="html/libxml-tree.html#xmlPreviousElementSibling">xmlPreviousElementSibling</a><br />
<a href="html/libxml-xmlschemastypes.html#xmlSchemaValueAppend">xmlSchemaValueAppend</a><br />
<a href="html/libxml-xmlschemastypes.html#xmlSchemaValueGetNext">xmlSchemaValueGetNext</a><br />
<a href="html/libxml-xpathInternals.html#xmlXPathNextPrecedingSibling">xmlXPathNextPrecedingSibling</a><br />
@@ -364,12 +367,18 @@ A:link, A:visited, A:active { text-decoration: underline }
<a href="html/libxml-xmlerror.html#xmlSetStructuredErrorFunc">xmlSetStructuredErrorFunc</a><br />
</dd><dt>since</dt><dd><a href="html/libxml-schemasInternals.html#XML_SCHEMAS_TYPE_VARIETY_ABSENT">XML_SCHEMAS_TYPE_VARIETY_ABSENT</a><br />
<a href="html/libxml-uri.html#xmlBuildRelativeURI">xmlBuildRelativeURI</a><br />
+<a href="html/libxml-tree.html#xmlChildElementCount">xmlChildElementCount</a><br />
<a href="html/libxml-tree.html#xmlDOMWrapAdoptNode">xmlDOMWrapAdoptNode</a><br />
<a href="html/libxml-tree.html#xmlDOMWrapCloneNode">xmlDOMWrapCloneNode</a><br />
<a href="html/libxml-tree.html#xmlDOMWrapReconcileNamespaces">xmlDOMWrapReconcileNamespaces</a><br />
+<a href="html/libxml-tree.html#xmlFirstElementChild">xmlFirstElementChild</a><br />
+<a href="html/libxml-tree.html#xmlLastElementChild">xmlLastElementChild</a><br />
+<a href="html/libxml-tree.html#xmlNextElementSibling">xmlNextElementSibling</a><br />
<a href="html/libxml-parserInternals.html#xmlParseExternalID">xmlParseExternalID</a><br />
+<a href="html/libxml-tree.html#xmlPreviousElementSibling">xmlPreviousElementSibling</a><br />
<a href="html/libxml-relaxng.html#xmlRelaxNGNewDocParserCtxt">xmlRelaxNGNewDocParserCtxt</a><br />
</dd><dt>single</dt><dd><a href="html/libxml-parserInternals.html#IS_DIGIT_CH">IS_DIGIT_CH</a><br />
+<a href="html/libxml-parserInternals.html#XML_MAX_TEXT_LENGTH">XML_MAX_TEXT_LENGTH</a><br />
<a href="html/libxml-parserInternals.html#xmlCurrentChar">xmlCurrentChar</a><br />
<a href="html/libxml-parserInternals.html#xmlParseAttValue">xmlParseAttValue</a><br />
<a href="html/libxml-parserInternals.html#xmlParseElementMixedContentDecl">xmlParseElementMixedContentDecl</a><br />
@@ -486,7 +495,12 @@ A:link, A:visited, A:active { text-decoration: underline }
</dd><dt>span</dt><dd><a href="html/libxml-parserInternals.html#xmlCurrentChar">xmlCurrentChar</a><br />
<a href="html/libxml-parserInternals.html#xmlStringCurrentChar">xmlStringCurrentChar</a><br />
</dd><dt>spec</dt><dd><a href="html/libxml-catalog.html#xmlCatalogSetDefaultPrefer">xmlCatalogSetDefaultPrefer</a><br />
+<a href="html/libxml-tree.html#xmlChildElementCount">xmlChildElementCount</a><br />
+<a href="html/libxml-tree.html#xmlFirstElementChild">xmlFirstElementChild</a><br />
+<a href="html/libxml-tree.html#xmlLastElementChild">xmlLastElementChild</a><br />
+<a href="html/libxml-tree.html#xmlNextElementSibling">xmlNextElementSibling</a><br />
<a href="html/libxml-parserInternals.html#xmlParseComment">xmlParseComment</a><br />
+<a href="html/libxml-tree.html#xmlPreviousElementSibling">xmlPreviousElementSibling</a><br />
</dd><dt>spec:</dt><dd><a href="html/libxml-parserInternals.html#IS_BASECHAR">IS_BASECHAR</a><br />
<a href="html/libxml-parserInternals.html#IS_BLANK">IS_BLANK</a><br />
<a href="html/libxml-parserInternals.html#IS_BYTE_CHAR">IS_BYTE_CHAR</a><br />
diff --git a/doc/APIchunk25.html b/doc/APIchunk25.html
index 2dce6a0..6b0749d 100644
--- a/doc/APIchunk25.html
+++ b/doc/APIchunk25.html
@@ -109,25 +109,6 @@ A:link, A:visited, A:active { text-decoration: underline }
<a href="html/libxml-pattern.html#xmlStreamWantsAnyNode">xmlStreamWantsAnyNode</a><br />
</dd><dt>text-node</dt><dd><a href="html/libxml-tree.html#xmlIsBlankNode">xmlIsBlankNode</a><br />
</dd><dt>textDecl?</dt><dd><a href="html/libxml-parserInternals.html#xmlParseExternalSubset">xmlParseExternalSubset</a><br />
-</dd><dt>than</dt><dd><a href="html/libxml-xmlstring.html#xmlCheckUTF8">xmlCheckUTF8</a><br />
-<a href="html/libxml-xmlregexp.html#xmlExpExpDerive">xmlExpExpDerive</a><br />
-<a href="html/libxml-xmlregexp.html#xmlExpGetLanguage">xmlExpGetLanguage</a><br />
-<a href="html/libxml-xmlregexp.html#xmlExpGetStart">xmlExpGetStart</a><br />
-<a href="html/libxml-tree.html#xmlNewNs">xmlNewNs</a><br />
-<a href="html/libxml-parserInternals.html#xmlParseAttribute">xmlParseAttribute</a><br />
-<a href="html/libxml-parserInternals.html#xmlParseAttributeType">xmlParseAttributeType</a><br />
-<a href="html/libxml-parserInternals.html#xmlParseElementDecl">xmlParseElementDecl</a><br />
-<a href="html/libxml-parserInternals.html#xmlParseElementMixedContentDecl">xmlParseElementMixedContentDecl</a><br />
-<a href="html/libxml-parserInternals.html#xmlParseSDDecl">xmlParseSDDecl</a><br />
-<a href="html/libxml-parserInternals.html#xmlParseStartTag">xmlParseStartTag</a><br />
-<a href="html/libxml-xmlerror.html#xmlSetGenericErrorFunc">xmlSetGenericErrorFunc</a><br />
-<a href="html/libxml-xmlstring.html#xmlStrEqual">xmlStrEqual</a><br />
-<a href="html/libxml-xmlreader.html#xmlTextReaderIsNamespaceDecl">xmlTextReaderIsNamespaceDecl</a><br />
-<a href="html/libxml-xpathInternals.html#xmlXPathCeilingFunction">xmlXPathCeilingFunction</a><br />
-<a href="html/libxml-xpathInternals.html#xmlXPathCompareValues">xmlXPathCompareValues</a><br />
-<a href="html/libxml-xpathInternals.html#xmlXPathFloorFunction">xmlXPathFloorFunction</a><br />
-<a href="html/libxml-xpathInternals.html#xmlXPathSubstringFunction">xmlXPathSubstringFunction</a><br />
-<a href="html/libxml-xpathInternals.html#xmlXPathTranslateFunction">xmlXPathTranslateFunction</a><br />
</dd><dt>their</dt><dd><a href="html/libxml-encoding.html#xmlCharEncOutFunc">xmlCharEncOutFunc</a><br />
<a href="html/libxml-entities.html#xmlEncodeEntities">xmlEncodeEntities</a><br />
<a href="html/libxml-entities.html#xmlEncodeEntitiesReentrant">xmlEncodeEntitiesReentrant</a><br />
@@ -316,7 +297,12 @@ A:link, A:visited, A:active { text-decoration: underline }
<a href="html/libxml-xmlerror.html#xmlParserValidityWarning">xmlParserValidityWarning</a><br />
<a href="html/libxml-xmlerror.html#xmlParserWarning">xmlParserWarning</a><br />
</dd><dt>transport</dt><dd><a href="html/libxml-nanoftp.html#xmlNanoFTPClose">xmlNanoFTPClose</a><br />
-</dd><dt>traversal</dt><dd><a href="html/libxml-xpath.html#xmlXPathAxisFunc">xmlXPathAxisFunc</a><br />
+</dd><dt>traversal</dt><dd><a href="html/libxml-tree.html#xmlChildElementCount">xmlChildElementCount</a><br />
+<a href="html/libxml-tree.html#xmlFirstElementChild">xmlFirstElementChild</a><br />
+<a href="html/libxml-tree.html#xmlLastElementChild">xmlLastElementChild</a><br />
+<a href="html/libxml-tree.html#xmlNextElementSibling">xmlNextElementSibling</a><br />
+<a href="html/libxml-tree.html#xmlPreviousElementSibling">xmlPreviousElementSibling</a><br />
+<a href="html/libxml-xpath.html#xmlXPathAxisFunc">xmlXPathAxisFunc</a><br />
<a href="html/libxml-xpathInternals.html#xmlXPathNextAncestor">xmlXPathNextAncestor</a><br />
<a href="html/libxml-xpathInternals.html#xmlXPathNextAncestorOrSelf">xmlXPathNextAncestorOrSelf</a><br />
<a href="html/libxml-xpathInternals.html#xmlXPathNextAttribute">xmlXPathNextAttribute</a><br />
diff --git a/doc/APIchunk3.html b/doc/APIchunk3.html
index 3f5646a..3b0b349 100644
--- a/doc/APIchunk3.html
+++ b/doc/APIchunk3.html
@@ -72,7 +72,12 @@ A:link, A:visited, A:active { text-decoration: underline }
<a href="html/libxml-hash.html#xmlHashRemoveEntry3">xmlHashRemoveEntry3</a><br />
<a href="html/libxml-parser.html#xmlParserFindNodeInfo">xmlParserFindNodeInfo</a><br />
<a href="html/libxml-parser.html#xmlParserFindNodeInfoIndex">xmlParserFindNodeInfoIndex</a><br />
-</dd><dt>Finds</dt><dd><a href="html/libxml-xmlregexp.html#xmlExpIsNillable">xmlExpIsNillable</a><br />
+</dd><dt>Finds</dt><dd><a href="html/libxml-tree.html#xmlChildElementCount">xmlChildElementCount</a><br />
+<a href="html/libxml-xmlregexp.html#xmlExpIsNillable">xmlExpIsNillable</a><br />
+<a href="html/libxml-tree.html#xmlFirstElementChild">xmlFirstElementChild</a><br />
+<a href="html/libxml-tree.html#xmlLastElementChild">xmlLastElementChild</a><br />
+<a href="html/libxml-tree.html#xmlNextElementSibling">xmlNextElementSibling</a><br />
+<a href="html/libxml-tree.html#xmlPreviousElementSibling">xmlPreviousElementSibling</a><br />
</dd><dt>First</dt><dd><a href="html/libxml-schemasInternals.html#XML_SCHEMAS_TYPE_FIXUP_1">XML_SCHEMAS_TYPE_FIXUP_1</a><br />
<a href="html/libxml-entities.html#_xmlEntity">_xmlEntity</a><br />
</dd><dt>Fixed</dt><dd><a href="html/libxml-parserInternals.html#xmlParseDefaultDecl">xmlParseDefaultDecl</a><br />
@@ -121,7 +126,9 @@ A:link, A:visited, A:active { text-decoration: underline }
<a href="html/libxml-xmlerror.html#xmlSetStructuredErrorFunc">xmlSetStructuredErrorFunc</a><br />
<a href="html/libxml-xpathInternals.html#xmlXPathFunctionLookup">xmlXPathFunctionLookup</a><br />
<a href="html/libxml-xpathInternals.html#xmlXPathFunctionLookupNS">xmlXPathFunctionLookupNS</a><br />
-</dd></dl><h2>Letter G:</h2><dl><dt>GCC</dt><dd><a href="html/libxml-xmlversion.html#ATTRIBUTE_UNUSED">ATTRIBUTE_UNUSED</a><br />
+</dd></dl><h2>Letter G:</h2><dl><dt>GCC</dt><dd><a href="html/libxml-xmlversion.html#ATTRIBUTE_ALLOC_SIZE">ATTRIBUTE_ALLOC_SIZE</a><br />
+<a href="html/libxml-xmlversion.html#ATTRIBUTE_PRINTF">ATTRIBUTE_PRINTF</a><br />
+<a href="html/libxml-xmlversion.html#ATTRIBUTE_UNUSED">ATTRIBUTE_UNUSED</a><br />
</dd><dt>GEDecl</dt><dd><a href="html/libxml-parserInternals.html#xmlParseEntityDecl">xmlParseEntityDecl</a><br />
</dd><dt>GET</dt><dd><a href="html/libxml-nanohttp.html#xmlNanoHTTPFetch">xmlNanoHTTPFetch</a><br />
<a href="html/libxml-nanohttp.html#xmlNanoHTTPOpen">xmlNanoHTTPOpen</a><br />
@@ -192,12 +199,14 @@ A:link, A:visited, A:active { text-decoration: underline }
<a href="html/libxml-xmlIO.html#xmlParserInputBufferRead">xmlParserInputBufferRead</a><br />
</dd><dt>IDREF</dt><dd><a href="html/libxml-parserInternals.html#xmlParseAttributeType">xmlParseAttributeType</a><br />
<a href="html/libxml-valid.html#xmlValidateAttributeDecl">xmlValidateAttributeDecl</a><br />
+<a href="html/libxml-valid.html#xmlValidateAttributeValue">xmlValidateAttributeValue</a><br />
<a href="html/libxml-valid.html#xmlValidateDocumentFinal">xmlValidateDocumentFinal</a><br />
<a href="html/libxml-valid.html#xmlValidateDtd">xmlValidateDtd</a><br />
<a href="html/libxml-valid.html#xmlValidateOneAttribute">xmlValidateOneAttribute</a><br />
<a href="html/libxml-valid.html#xmlValidateOneElement">xmlValidateOneElement</a><br />
<a href="html/libxml-valid.html#xmlValidateOneNamespace">xmlValidateOneNamespace</a><br />
</dd><dt>IDREFS</dt><dd><a href="html/libxml-parserInternals.html#xmlParseAttributeType">xmlParseAttributeType</a><br />
+<a href="html/libxml-valid.html#xmlValidateAttributeValue">xmlValidateAttributeValue</a><br />
<a href="html/libxml-valid.html#xmlValidateDocumentFinal">xmlValidateDocumentFinal</a><br />
</dd><dt>IDREFs</dt><dd><a href="html/libxml-tree.html#_xmlDoc">_xmlDoc</a><br />
</dd><dt>IDs</dt><dd><a href="html/libxml-xpathInternals.html#xmlXPathIdFunction">xmlXPathIdFunction</a><br />
diff --git a/doc/APIchunk4.html b/doc/APIchunk4.html
index 924c236..2a4fb80 100644
--- a/doc/APIchunk4.html
+++ b/doc/APIchunk4.html
@@ -133,6 +133,7 @@ A:link, A:visited, A:active { text-decoration: underline }
</dd><dt>MathematicalOperators</dt><dd><a href="html/libxml-xmlunicode.html#xmlUCSIsMathematicalOperators">xmlUCSIsMathematicalOperators</a><br />
</dd><dt>Max</dt><dd><a href="html/libxml-parser.html#_xmlParserCtxt">_xmlParserCtxt</a><br />
<a href="html/libxml-valid.html#_xmlValidCtxt">_xmlValidCtxt</a><br />
+</dd><dt>Maximum</dt><dd><a href="html/libxml-parserInternals.html#XML_MAX_TEXT_LENGTH">XML_MAX_TEXT_LENGTH</a><br />
</dd><dt>May</dt><dd><a href="html/libxml-uri.html#xmlURIEscape">xmlURIEscape</a><br />
</dd><dt>Memory</dt><dd><a href="html/libxml-tree.html#xmlDocDumpFormatMemoryEnc">xmlDocDumpFormatMemoryEnc</a><br />
<a href="html/libxml-tree.html#xmlDocDumpMemoryEnc">xmlDocDumpMemoryEnc</a><br />
@@ -182,7 +183,9 @@ A:link, A:visited, A:active { text-decoration: underline }
</dd><dt>NDataDecl</dt><dd><a href="html/libxml-parserInternals.html#xmlParseEntityDecl">xmlParseEntityDecl</a><br />
</dd><dt>NDataDecl?</dt><dd><a href="html/libxml-parserInternals.html#xmlParseEntityDecl">xmlParseEntityDecl</a><br />
</dd><dt>NMTOKEN</dt><dd><a href="html/libxml-parserInternals.html#xmlParseAttributeType">xmlParseAttributeType</a><br />
+<a href="html/libxml-valid.html#xmlValidateAttributeValue">xmlValidateAttributeValue</a><br />
</dd><dt>NMTOKENS</dt><dd><a href="html/libxml-parserInternals.html#xmlParseAttributeType">xmlParseAttributeType</a><br />
+<a href="html/libxml-valid.html#xmlValidateAttributeValue">xmlValidateAttributeValue</a><br />
</dd><dt>NMToken</dt><dd><a href="html/libxml-tree.html#xmlValidateNMToken">xmlValidateNMToken</a><br />
</dd><dt>NOTATION</dt><dd><a href="html/libxml-parserInternals.html#xmlParseEnumeratedType">xmlParseEnumeratedType</a><br />
<a href="html/libxml-parserInternals.html#xmlParseNotationType">xmlParseNotationType</a><br />
@@ -232,6 +235,7 @@ A:link, A:visited, A:active { text-decoration: underline }
</dd><dt>Names</dt><dd><a href="html/libxml-parserInternals.html#xmlParseAttributeType">xmlParseAttributeType</a><br />
<a href="html/libxml-parserInternals.html#xmlParseName">xmlParseName</a><br />
<a href="html/libxml-parserInternals.html#xmlScanName">xmlScanName</a><br />
+<a href="html/libxml-valid.html#xmlValidateAttributeValue">xmlValidateAttributeValue</a><br />
<a href="html/libxml-valid.html#xmlValidateNamesValue">xmlValidateNamesValue</a><br />
</dd><dt>Namespace</dt><dd><a href="html/libxml-tree.html#XML_XML_NAMESPACE">XML_XML_NAMESPACE</a><br />
<a href="html/libxml-tree.html#_xmlElementContent">_xmlElementContent</a><br />
@@ -248,9 +252,11 @@ A:link, A:visited, A:active { text-decoration: underline }
</dd><dt>Nmtoken</dt><dd><a href="html/libxml-parserInternals.html#xmlParseAttributeType">xmlParseAttributeType</a><br />
<a href="html/libxml-parserInternals.html#xmlParseEnumerationType">xmlParseEnumerationType</a><br />
<a href="html/libxml-parserInternals.html#xmlParseNmtoken">xmlParseNmtoken</a><br />
+<a href="html/libxml-valid.html#xmlValidateAttributeValue">xmlValidateAttributeValue</a><br />
<a href="html/libxml-valid.html#xmlValidateNmtokenValue">xmlValidateNmtokenValue</a><br />
</dd><dt>Nmtokens</dt><dd><a href="html/libxml-parserInternals.html#xmlParseAttributeType">xmlParseAttributeType</a><br />
<a href="html/libxml-parserInternals.html#xmlParseNmtoken">xmlParseNmtoken</a><br />
+<a href="html/libxml-valid.html#xmlValidateAttributeValue">xmlValidateAttributeValue</a><br />
<a href="html/libxml-valid.html#xmlValidateNmtokensValue">xmlValidateNmtokensValue</a><br />
</dd><dt>Node</dt><dd><a href="html/libxml-parser.html#_xmlParserCtxt">_xmlParserCtxt</a><br />
<a href="html/libxml-valid.html#_xmlValidCtxt">_xmlValidCtxt</a><br />
diff --git a/doc/APIchunk8.html b/doc/APIchunk8.html
index 10e852a..2d73300 100644
--- a/doc/APIchunk8.html
+++ b/doc/APIchunk8.html
@@ -119,6 +119,7 @@ A:link, A:visited, A:active { text-decoration: underline }
</dd><dt>Thus:</dt><dd><a href="html/libxml-xpathInternals.html#xmlXPathSubstringFunction">xmlXPathSubstringFunction</a><br />
</dd><dt>Tibetan</dt><dd><a href="html/libxml-xmlunicode.html#xmlUCSIsTibetan">xmlUCSIsTibetan</a><br />
</dd><dt>Token</dt><dd><a href="html/libxml-parserInternals.html#xmlParseAttributeType">xmlParseAttributeType</a><br />
+<a href="html/libxml-valid.html#xmlValidateAttributeValue">xmlValidateAttributeValue</a><br />
<a href="html/libxml-valid.html#xmlValidateNmtokenValue">xmlValidateNmtokenValue</a><br />
<a href="html/libxml-valid.html#xmlValidateNmtokensValue">xmlValidateNmtokensValue</a><br />
<a href="html/libxml-valid.html#xmlValidateOneAttribute">xmlValidateOneAttribute</a><br />
diff --git a/doc/APIchunk9.html b/doc/APIchunk9.html
index fb32180..497a2bf 100644
--- a/doc/APIchunk9.html
+++ b/doc/APIchunk9.html
@@ -46,6 +46,7 @@ A:link, A:visited, A:active { text-decoration: underline }
<a href="html/libxml-xmlschemas.html#xmlSchemaValidateStream">xmlSchemaValidateStream</a><br />
<a href="html/libxml-schematron.html#xmlSchematronValidateDoc">xmlSchematronValidateDoc</a><br />
<a href="html/libxml-debugXML.html#xmlShellValidate">xmlShellValidate</a><br />
+<a href="html/libxml-valid.html#xmlValidateAttributeValue">xmlValidateAttributeValue</a><br />
<a href="html/libxml-valid.html#xmlValidateNameValue">xmlValidateNameValue</a><br />
<a href="html/libxml-valid.html#xmlValidateNamesValue">xmlValidateNamesValue</a><br />
<a href="html/libxml-valid.html#xmlValidateNmtokenValue">xmlValidateNmtokenValue</a><br />
@@ -62,6 +63,7 @@ A:link, A:visited, A:active { text-decoration: underline }
<a href="html/libxml-parserInternals.html#xmlParseDefaultDecl">xmlParseDefaultDecl</a><br />
<a href="html/libxml-parserInternals.html#xmlParseEnumerationType">xmlParseEnumerationType</a><br />
<a href="html/libxml-parserInternals.html#xmlParseNotationType">xmlParseNotationType</a><br />
+<a href="html/libxml-valid.html#xmlValidateAttributeValue">xmlValidateAttributeValue</a><br />
</dd><dt>Variable</dt><dd><a href="html/libxml-xpathInternals.html#xmlXPathVariableLookup">xmlXPathVariableLookup</a><br />
<a href="html/libxml-xpathInternals.html#xmlXPathVariableLookupNS">xmlXPathVariableLookupNS</a><br />
</dd><dt>VariationSelectors</dt><dd><a href="html/libxml-xmlunicode.html#xmlUCSIsVariationSelectors">xmlUCSIsVariationSelectors</a><br />
@@ -71,7 +73,12 @@ A:link, A:visited, A:active { text-decoration: underline }
</dd><dt>VersionInfo?</dt><dd><a href="html/libxml-parserInternals.html#xmlParseTextDecl">xmlParseTextDecl</a><br />
</dd><dt>VersionNum</dt><dd><a href="html/libxml-parserInternals.html#xmlParseVersionInfo">xmlParseVersionInfo</a><br />
<a href="html/libxml-parserInternals.html#xmlParseVersionNum">xmlParseVersionNum</a><br />
-</dd></dl><h2>Letter W:</h2><dl><dt>W3C</dt><dd><a href="html/libxml-xmlreader.html#xmlTextReaderSchemaValidate">xmlTextReaderSchemaValidate</a><br />
+</dd></dl><h2>Letter W:</h2><dl><dt>W3C</dt><dd><a href="html/libxml-tree.html#xmlChildElementCount">xmlChildElementCount</a><br />
+<a href="html/libxml-tree.html#xmlFirstElementChild">xmlFirstElementChild</a><br />
+<a href="html/libxml-tree.html#xmlLastElementChild">xmlLastElementChild</a><br />
+<a href="html/libxml-tree.html#xmlNextElementSibling">xmlNextElementSibling</a><br />
+<a href="html/libxml-tree.html#xmlPreviousElementSibling">xmlPreviousElementSibling</a><br />
+<a href="html/libxml-xmlreader.html#xmlTextReaderSchemaValidate">xmlTextReaderSchemaValidate</a><br />
<a href="html/libxml-xmlreader.html#xmlTextReaderSchemaValidateCtxt">xmlTextReaderSchemaValidateCtxt</a><br />
</dd><dt>WARNING:</dt><dd><a href="html/libxml-xmlschemastypes.html#xmlSchemaGetCanonValue">xmlSchemaGetCanonValue</a><br />
<a href="html/libxml-xmlschemastypes.html#xmlSchemaNewStringValue">xmlSchemaNewStringValue</a><br />
@@ -184,6 +191,7 @@ A:link, A:visited, A:active { text-decoration: underline }
</dd><dt>XML_ELEMENT_TYPE_xxx</dt><dd><a href="html/libxml-parserInternals.html#xmlParseElementContentDecl">xmlParseElementContentDecl</a><br />
</dd><dt>XML_ENTITY_DECL</dt><dd><a href="html/libxml-entities.html#_xmlEntity">_xmlEntity</a><br />
</dd><dt>XML_ERR_OK</dt><dd><a href="html/libxml-parser.html#xmlParseInNodeContext">xmlParseInNodeContext</a><br />
+</dd><dt>XML_PARSE_HUGE</dt><dd><a href="html/libxml-parserInternals.html#XML_MAX_TEXT_LENGTH">XML_MAX_TEXT_LENGTH</a><br />
</dd><dt>XML_SCHEMAS_ELEM_GLOBAL</dt><dd><a href="html/libxml-schemasInternals.html#XML_SCHEMAS_ELEM_TOPLEVEL">XML_SCHEMAS_ELEM_TOPLEVEL</a><br />
</dd><dt>XML_SCHEMAS_FACET_PRESERVE</dt><dd><a href="html/libxml-schemasInternals.html#_xmlSchemaFacet">_xmlSchemaFacet</a><br />
</dd><dt>XML_SCHEMAS_STRING</dt><dd><a href="html/libxml-xmlschemastypes.html#xmlSchemaNewStringValue">xmlSchemaNewStringValue</a><br />
diff --git a/doc/APIconstructors.html b/doc/APIconstructors.html
index 300fc03..bebc3e1 100644
--- a/doc/APIconstructors.html
+++ b/doc/APIconstructors.html
@@ -89,7 +89,8 @@ A:link, A:visited, A:active { text-decoration: underline }
<a href="html/libxml-xmlsave.html#xmlSaveTree">xmlSaveTree</a><br />
<a href="html/libxml-xmlreader.html#xmlTextReaderByteConsumed">xmlTextReaderByteConsumed</a><br />
<a href="html/libxml-xpath.html#xmlXPathOrderDocElems">xmlXPathOrderDocElems</a><br />
-</p><h2>Type unsigned long:</h2><p><a href="html/libxml-parser.html#xmlParserFindNodeInfoIndex">xmlParserFindNodeInfoIndex</a><br />
+</p><h2>Type unsigned long:</h2><p><a href="html/libxml-tree.html#xmlChildElementCount">xmlChildElementCount</a><br />
+<a href="html/libxml-parser.html#xmlParserFindNodeInfoIndex">xmlParserFindNodeInfoIndex</a><br />
<a href="html/libxml-xmlschemastypes.html#xmlSchemaGetFacetValueAsULong">xmlSchemaGetFacetValueAsULong</a><br />
</p><h2>Type void *:</h2><p><a href="html/libxml-catalog.html#xmlCatalogAddLocal">xmlCatalogAddLocal</a><br />
<a href="html/libxml-xmlIO.html#xmlFileOpen">xmlFileOpen</a><br />
@@ -363,7 +364,9 @@ A:link, A:visited, A:active { text-decoration: underline }
<a href="html/libxml-tree.html#xmlDocCopyNodeList">xmlDocCopyNodeList</a><br />
<a href="html/libxml-tree.html#xmlDocGetRootElement">xmlDocGetRootElement</a><br />
<a href="html/libxml-tree.html#xmlDocSetRootElement">xmlDocSetRootElement</a><br />
+<a href="html/libxml-tree.html#xmlFirstElementChild">xmlFirstElementChild</a><br />
<a href="html/libxml-tree.html#xmlGetLastChild">xmlGetLastChild</a><br />
+<a href="html/libxml-tree.html#xmlLastElementChild">xmlLastElementChild</a><br />
<a href="html/libxml-tree.html#xmlNewCDataBlock">xmlNewCDataBlock</a><br />
<a href="html/libxml-tree.html#xmlNewCharRef">xmlNewCharRef</a><br />
<a href="html/libxml-tree.html#xmlNewChild">xmlNewChild</a><br />
@@ -383,6 +386,8 @@ A:link, A:visited, A:active { text-decoration: underline }
<a href="html/libxml-tree.html#xmlNewText">xmlNewText</a><br />
<a href="html/libxml-tree.html#xmlNewTextChild">xmlNewTextChild</a><br />
<a href="html/libxml-tree.html#xmlNewTextLen">xmlNewTextLen</a><br />
+<a href="html/libxml-tree.html#xmlNextElementSibling">xmlNextElementSibling</a><br />
+<a href="html/libxml-tree.html#xmlPreviousElementSibling">xmlPreviousElementSibling</a><br />
<a href="html/libxml-tree.html#xmlReplaceNode">xmlReplaceNode</a><br />
<a href="html/libxml-tree.html#xmlStringGetNodeList">xmlStringGetNodeList</a><br />
<a href="html/libxml-tree.html#xmlStringLenGetNodeList">xmlStringLenGetNodeList</a><br />
diff --git a/doc/APIfiles.html b/doc/APIfiles.html
index f4ef0e5..7ed0d9b 100644
--- a/doc/APIfiles.html
+++ b/doc/APIfiles.html
@@ -614,6 +614,7 @@ A:link, A:visited, A:active { text-decoration: underline }
<a href="html/libxml-parser.html#XML_PARSE_NOXINCNODE">XML_PARSE_NOXINCNODE</a><br />
<a href="html/libxml-parser.html#XML_PARSE_NSCLEAN">XML_PARSE_NSCLEAN</a><br />
<a href="html/libxml-parser.html#XML_PARSE_OLD10">XML_PARSE_OLD10</a><br />
+<a href="html/libxml-parser.html#XML_PARSE_OLDSAX">XML_PARSE_OLDSAX</a><br />
<a href="html/libxml-parser.html#XML_PARSE_PEDANTIC">XML_PARSE_PEDANTIC</a><br />
<a href="html/libxml-parser.html#XML_PARSE_PUSH_DOM">XML_PARSE_PUSH_DOM</a><br />
<a href="html/libxml-parser.html#XML_PARSE_PUSH_SAX">XML_PARSE_PUSH_SAX</a><br />
@@ -800,6 +801,7 @@ A:link, A:visited, A:active { text-decoration: underline }
<a href="html/libxml-parserInternals.html#MOVETO_STARTTAG">MOVETO_STARTTAG</a><br />
<a href="html/libxml-parserInternals.html#SKIP_EOL">SKIP_EOL</a><br />
<a href="html/libxml-parserInternals.html#XML_MAX_NAMELEN">XML_MAX_NAMELEN</a><br />
+<a href="html/libxml-parserInternals.html#XML_MAX_TEXT_LENGTH">XML_MAX_TEXT_LENGTH</a><br />
<a href="html/libxml-parserInternals.html#XML_SUBSTITUTE_BOTH">XML_SUBSTITUTE_BOTH</a><br />
<a href="html/libxml-parserInternals.html#XML_SUBSTITUTE_NONE">XML_SUBSTITUTE_NONE</a><br />
<a href="html/libxml-parserInternals.html#XML_SUBSTITUTE_PEREF">XML_SUBSTITUTE_PEREF</a><br />
@@ -1382,6 +1384,7 @@ A:link, A:visited, A:active { text-decoration: underline }
<a href="html/libxml-tree.html#xmlBufferWriteChar">xmlBufferWriteChar</a><br />
<a href="html/libxml-tree.html#xmlBufferWriteQuotedString">xmlBufferWriteQuotedString</a><br />
<a href="html/libxml-tree.html#xmlBuildQName">xmlBuildQName</a><br />
+<a href="html/libxml-tree.html#xmlChildElementCount">xmlChildElementCount</a><br />
<a href="html/libxml-tree.html#xmlChildrenNode">xmlChildrenNode</a><br />
<a href="html/libxml-tree.html#xmlCopyDoc">xmlCopyDoc</a><br />
<a href="html/libxml-tree.html#xmlCopyDtd">xmlCopyDtd</a><br />
@@ -1429,6 +1432,7 @@ A:link, A:visited, A:active { text-decoration: underline }
<a href="html/libxml-tree.html#xmlEntityPtr">xmlEntityPtr</a><br />
<a href="html/libxml-tree.html#xmlEnumeration">xmlEnumeration</a><br />
<a href="html/libxml-tree.html#xmlEnumerationPtr">xmlEnumerationPtr</a><br />
+<a href="html/libxml-tree.html#xmlFirstElementChild">xmlFirstElementChild</a><br />
<a href="html/libxml-tree.html#xmlFreeDoc">xmlFreeDoc</a><br />
<a href="html/libxml-tree.html#xmlFreeDtd">xmlFreeDtd</a><br />
<a href="html/libxml-tree.html#xmlFreeNode">xmlFreeNode</a><br />
@@ -1454,6 +1458,7 @@ A:link, A:visited, A:active { text-decoration: underline }
<a href="html/libxml-tree.html#xmlIDPtr">xmlIDPtr</a><br />
<a href="html/libxml-tree.html#xmlIsBlankNode">xmlIsBlankNode</a><br />
<a href="html/libxml-tree.html#xmlIsXHTML">xmlIsXHTML</a><br />
+<a href="html/libxml-tree.html#xmlLastElementChild">xmlLastElementChild</a><br />
<a href="html/libxml-tree.html#xmlNewCDataBlock">xmlNewCDataBlock</a><br />
<a href="html/libxml-tree.html#xmlNewCharRef">xmlNewCharRef</a><br />
<a href="html/libxml-tree.html#xmlNewChild">xmlNewChild</a><br />
@@ -1481,6 +1486,7 @@ A:link, A:visited, A:active { text-decoration: underline }
<a href="html/libxml-tree.html#xmlNewText">xmlNewText</a><br />
<a href="html/libxml-tree.html#xmlNewTextChild">xmlNewTextChild</a><br />
<a href="html/libxml-tree.html#xmlNewTextLen">xmlNewTextLen</a><br />
+<a href="html/libxml-tree.html#xmlNextElementSibling">xmlNextElementSibling</a><br />
<a href="html/libxml-tree.html#xmlNode">xmlNode</a><br />
<a href="html/libxml-tree.html#xmlNodeAddContent">xmlNodeAddContent</a><br />
<a href="html/libxml-tree.html#xmlNodeAddContentLen">xmlNodeAddContentLen</a><br />
@@ -1514,6 +1520,7 @@ A:link, A:visited, A:active { text-decoration: underline }
<a href="html/libxml-tree.html#xmlParserInputBuffer">xmlParserInputBuffer</a><br />
<a href="html/libxml-tree.html#xmlParserInputBufferPtr">xmlParserInputBufferPtr</a><br />
<a href="html/libxml-tree.html#xmlParserInputPtr">xmlParserInputPtr</a><br />
+<a href="html/libxml-tree.html#xmlPreviousElementSibling">xmlPreviousElementSibling</a><br />
<a href="html/libxml-tree.html#xmlReconciliateNs">xmlReconciliateNs</a><br />
<a href="html/libxml-tree.html#xmlRef">xmlRef</a><br />
<a href="html/libxml-tree.html#xmlRefPtr">xmlRefPtr</a><br />
@@ -3118,7 +3125,9 @@ A:link, A:visited, A:active { text-decoration: underline }
<a href="html/libxml-xmlunicode.html#xmlUCSIsYiRadicals">xmlUCSIsYiRadicals</a><br />
<a href="html/libxml-xmlunicode.html#xmlUCSIsYiSyllables">xmlUCSIsYiSyllables</a><br />
<a href="html/libxml-xmlunicode.html#xmlUCSIsYijingHexagramSymbols">xmlUCSIsYijingHexagramSymbols</a><br />
-</p><h2><a name="xmlversion" id="xmlversion">Module xmlversion</a>:</h2><p><a href="html/libxml-xmlversion.html#ATTRIBUTE_UNUSED">ATTRIBUTE_UNUSED</a><br />
+</p><h2><a name="xmlversion" id="xmlversion">Module xmlversion</a>:</h2><p><a href="html/libxml-xmlversion.html#ATTRIBUTE_ALLOC_SIZE">ATTRIBUTE_ALLOC_SIZE</a><br />
+<a href="html/libxml-xmlversion.html#ATTRIBUTE_PRINTF">ATTRIBUTE_PRINTF</a><br />
+<a href="html/libxml-xmlversion.html#ATTRIBUTE_UNUSED">ATTRIBUTE_UNUSED</a><br />
<a href="html/libxml-xmlversion.html#DEBUG_MEMORY_LOCATION">DEBUG_MEMORY_LOCATION</a><br />
<a href="html/libxml-xmlversion.html#LIBXML_AUTOMATA_ENABLED">LIBXML_AUTOMATA_ENABLED</a><br />
<a href="html/libxml-xmlversion.html#LIBXML_C14N_ENABLED">LIBXML_C14N_ENABLED</a><br />
diff --git a/doc/APIfunctions.html b/doc/APIfunctions.html
index 3cf9ced..6cf73df 100644
--- a/doc/APIfunctions.html
+++ b/doc/APIfunctions.html
@@ -1437,6 +1437,7 @@ A:link, A:visited, A:active { text-decoration: underline }
<a href="html/libxml-tree.html#xmlAddPrevSibling">xmlAddPrevSibling</a><br />
<a href="html/libxml-tree.html#xmlAddSibling">xmlAddSibling</a><br />
<a href="html/libxml-c14n.html#xmlC14NIsVisibleCallback">xmlC14NIsVisibleCallback</a><br />
+<a href="html/libxml-tree.html#xmlChildElementCount">xmlChildElementCount</a><br />
<a href="html/libxml-tree.html#xmlCopyProp">xmlCopyProp</a><br />
<a href="html/libxml-tree.html#xmlCopyPropList">xmlCopyPropList</a><br />
<a href="html/libxml-tree.html#xmlDOMWrapAcquireNsFunction">xmlDOMWrapAcquireNsFunction</a><br />
@@ -1451,6 +1452,7 @@ A:link, A:visited, A:active { text-decoration: underline }
<a href="html/libxml-tree.html#xmlDocSetRootElement">xmlDocSetRootElement</a><br />
<a href="html/libxml-tree.html#xmlElemDump">xmlElemDump</a><br />
<a href="html/libxml-parserInternals.html#xmlEntityReferenceFunc">xmlEntityReferenceFunc</a><br />
+<a href="html/libxml-tree.html#xmlFirstElementChild">xmlFirstElementChild</a><br />
<a href="html/libxml-tree.html#xmlFreeNode">xmlFreeNode</a><br />
<a href="html/libxml-tree.html#xmlFreeNodeList">xmlFreeNodeList</a><br />
<a href="html/libxml-tree.html#xmlGetLastChild">xmlGetLastChild</a><br />
@@ -1465,6 +1467,7 @@ A:link, A:visited, A:active { text-decoration: underline }
<a href="html/libxml-tree.html#xmlIsBlankNode">xmlIsBlankNode</a><br />
<a href="html/libxml-valid.html#xmlIsID">xmlIsID</a><br />
<a href="html/libxml-valid.html#xmlIsRef">xmlIsRef</a><br />
+<a href="html/libxml-tree.html#xmlLastElementChild">xmlLastElementChild</a><br />
<a href="html/libxml-debugXML.html#xmlLsCountNode">xmlLsCountNode</a><br />
<a href="html/libxml-debugXML.html#xmlLsOneNode">xmlLsOneNode</a><br />
<a href="html/libxml-tree.html#xmlNewChild">xmlNewChild</a><br />
@@ -1474,6 +1477,7 @@ A:link, A:visited, A:active { text-decoration: underline }
<a href="html/libxml-tree.html#xmlNewProp">xmlNewProp</a><br />
<a href="html/libxml-tree.html#xmlNewTextChild">xmlNewTextChild</a><br />
<a href="html/libxml-xmlwriter.html#xmlNewTextWriterTree">xmlNewTextWriterTree</a><br />
+<a href="html/libxml-tree.html#xmlNextElementSibling">xmlNextElementSibling</a><br />
<a href="html/libxml-tree.html#xmlNodeAddContent">xmlNodeAddContent</a><br />
<a href="html/libxml-tree.html#xmlNodeAddContentLen">xmlNodeAddContentLen</a><br />
<a href="html/libxml-tree.html#xmlNodeBufGetContent">xmlNodeBufGetContent</a><br />
@@ -1494,6 +1498,7 @@ A:link, A:visited, A:active { text-decoration: underline }
<a href="html/libxml-tree.html#xmlNodeSetSpacePreserve">xmlNodeSetSpacePreserve</a><br />
<a href="html/libxml-parser.html#xmlParseInNodeContext">xmlParseInNodeContext</a><br />
<a href="html/libxml-pattern.html#xmlPatternMatch">xmlPatternMatch</a><br />
+<a href="html/libxml-tree.html#xmlPreviousElementSibling">xmlPreviousElementSibling</a><br />
<a href="html/libxml-tree.html#xmlReconciliateNs">xmlReconciliateNs</a><br />
<a href="html/libxml-globals.html#xmlRegisterNodeFunc">xmlRegisterNodeFunc</a><br />
<a href="html/libxml-relaxng.html#xmlRelaxNGValidateFullElement">xmlRelaxNGValidateFullElement</a><br />
diff --git a/doc/APIsymbols.html b/doc/APIsymbols.html
index 9a1cf8e..126e387 100644
--- a/doc/APIsymbols.html
+++ b/doc/APIsymbols.html
@@ -7,7 +7,9 @@ H1 {font-family: Verdana,Arial,Helvetica}
H2 {font-family: Verdana,Arial,Helvetica}
H3 {font-family: Verdana,Arial,Helvetica}
A:link, A:visited, A:active { text-decoration: underline }
-</style><title>Alphabetic List of Symbols in 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>The XML C parser and toolkit of Gnome</h1><h2>Alphabetic List of Symbols in 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>Developer 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" style="font-weight:bold">Main Menu</a></li><li><a href="html/index.html" style="font-weight:bold">Reference Manual</a></li><li><a href="examples/index.html" style="font-weight:bold">Code Examples</a></li><li><a href="guidelines.html">XML Guidelines</a></li><li><a href="tutorial/index.html">Tutorial</a></li><li><a href="xmlreader.html">The Reader Interface</a></li><li><a href="ChangeLog.html">ChangeLog</a></li><li><a href="XSLT.html">XSLT</a></li><li><a href="python.html">Python and bindings</a></li><li><a href="architecture.html">libxml2 architecture</a></li><li><a href="tree.html">The tree output</a></li><li><a href="interface.html">The SAX interface</a></li><li><a href="xmlmem.html">Memory Management</a></li><li><a href="xmlio.html">I/O Interfaces</a></li><li><a href="library.html">The parser interfaces</a></li><li><a href="entities.html">Entities or no entities</a></li><li><a href="namespaces.html">Namespaces</a></li><li><a href="upgrade.html">Upgrading 1.x code</a></li><li><a href="threads.html">Thread safety</a></li><li><a href="DOM.html">DOM Principles</a></li><li><a href="example.html">A real example</a></li><li><a href="xml.html">flat page</a>, <a href="site.xsl">stylesheet</a></li></ul></td></tr></table><table width="100%" border="0" cellspacing="1" cellpadding="3"><tr><td colspan="1" bgcolor="#eecfa1" align="center"><center><b>API Indexes</b></center></td></tr><tr><td bgcolor="#fffacd"><ul><li><a href="APIchunk0.html">Alphabetic</a></li><li><a href="APIconstructors.html">Constructors</a></li><li><a href="APIfunctions.html">Functions/Types</a></li><li><a href="APIfiles.html">Modules</a></li><li><a href="APIsymbols.html">Symbols</a></li></ul></td></tr></table><table width="100%" border="0" cellspacing="1" cellpadding="3"><tr><td colspan="1" bgcolor="#eecfa1" align="center"><center><b>Related links</b></center></td></tr><tr><td bgcolor="#fffacd"><ul><li><a href="http://mail.gnome.org/archives/xml/">Mail archive</a></li><li><a href="http://xmlsoft.org/XSLT/">XSLT libxslt</a></li><li><a href="http://phd.cs.unibo.it/gdome2/">DOM gdome2</a></li><li><a href="http://www.aleksey.com/xmlsec/">XML-DSig xmlsec</a></li><li><a href="ftp://xmlsoft.org/">FTP</a></li><li><a href="http://www.zlatkovic.com/projects/libxml/">Windows binaries</a></li><li><a href="http://www.blastwave.org/packages.php/libxml2">Solaris binaries</a></li><li><a href="http://www.explain.com.au/oss/libxml2xslt.html">MacOsX binaries</a></li><li><a href="http://codespeak.net/lxml/">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>Letter A:</h2><p><a href="html/libxml-xmlversion.html#ATTRIBUTE_UNUSED">ATTRIBUTE_UNUSED</a><br />
+</style><title>Alphabetic List of Symbols in 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>The XML C parser and toolkit of Gnome</h1><h2>Alphabetic List of Symbols in 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>Developer 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" style="font-weight:bold">Main Menu</a></li><li><a href="html/index.html" style="font-weight:bold">Reference Manual</a></li><li><a href="examples/index.html" style="font-weight:bold">Code Examples</a></li><li><a href="guidelines.html">XML Guidelines</a></li><li><a href="tutorial/index.html">Tutorial</a></li><li><a href="xmlreader.html">The Reader Interface</a></li><li><a href="ChangeLog.html">ChangeLog</a></li><li><a href="XSLT.html">XSLT</a></li><li><a href="python.html">Python and bindings</a></li><li><a href="architecture.html">libxml2 architecture</a></li><li><a href="tree.html">The tree output</a></li><li><a href="interface.html">The SAX interface</a></li><li><a href="xmlmem.html">Memory Management</a></li><li><a href="xmlio.html">I/O Interfaces</a></li><li><a href="library.html">The parser interfaces</a></li><li><a href="entities.html">Entities or no entities</a></li><li><a href="namespaces.html">Namespaces</a></li><li><a href="upgrade.html">Upgrading 1.x code</a></li><li><a href="threads.html">Thread safety</a></li><li><a href="DOM.html">DOM Principles</a></li><li><a href="example.html">A real example</a></li><li><a href="xml.html">flat page</a>, <a href="site.xsl">stylesheet</a></li></ul></td></tr></table><table width="100%" border="0" cellspacing="1" cellpadding="3"><tr><td colspan="1" bgcolor="#eecfa1" align="center"><center><b>API Indexes</b></center></td></tr><tr><td bgcolor="#fffacd"><ul><li><a href="APIchunk0.html">Alphabetic</a></li><li><a href="APIconstructors.html">Constructors</a></li><li><a href="APIfunctions.html">Functions/Types</a></li><li><a href="APIfiles.html">Modules</a></li><li><a href="APIsymbols.html">Symbols</a></li></ul></td></tr></table><table width="100%" border="0" cellspacing="1" cellpadding="3"><tr><td colspan="1" bgcolor="#eecfa1" align="center"><center><b>Related links</b></center></td></tr><tr><td bgcolor="#fffacd"><ul><li><a href="http://mail.gnome.org/archives/xml/">Mail archive</a></li><li><a href="http://xmlsoft.org/XSLT/">XSLT libxslt</a></li><li><a href="http://phd.cs.unibo.it/gdome2/">DOM gdome2</a></li><li><a href="http://www.aleksey.com/xmlsec/">XML-DSig xmlsec</a></li><li><a href="ftp://xmlsoft.org/">FTP</a></li><li><a href="http://www.zlatkovic.com/projects/libxml/">Windows binaries</a></li><li><a href="http://www.blastwave.org/packages.php/libxml2">Solaris binaries</a></li><li><a href="http://www.explain.com.au/oss/libxml2xslt.html">MacOsX binaries</a></li><li><a href="http://codespeak.net/lxml/">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>Letter A:</h2><p><a href="html/libxml-xmlversion.html#ATTRIBUTE_ALLOC_SIZE">ATTRIBUTE_ALLOC_SIZE</a><br />
+<a href="html/libxml-xmlversion.html#ATTRIBUTE_PRINTF">ATTRIBUTE_PRINTF</a><br />
+<a href="html/libxml-xmlversion.html#ATTRIBUTE_UNUSED">ATTRIBUTE_UNUSED</a><br />
</p><h2>Letter B:</h2><p><a href="html/libxml-xmlstring.html#BAD_CAST">BAD_CAST</a><br />
<a href="html/libxml-tree.html#BASE_BUFFER_SIZE">BASE_BUFFER_SIZE</a><br />
</p><h2>Letter C:</h2><p><a href="html/libxml-xpathInternals.html#CAST_TO_BOOLEAN">CAST_TO_BOOLEAN</a><br />
@@ -534,6 +536,7 @@ A:link, A:visited, A:active { text-decoration: underline }
<a href="html/libxml-xmlerror.html#XML_IO_WRITE">XML_IO_WRITE</a><br />
<a href="html/libxml-tree.html#XML_LOCAL_NAMESPACE">XML_LOCAL_NAMESPACE</a><br />
<a href="html/libxml-parserInternals.html#XML_MAX_NAMELEN">XML_MAX_NAMELEN</a><br />
+<a href="html/libxml-parserInternals.html#XML_MAX_TEXT_LENGTH">XML_MAX_TEXT_LENGTH</a><br />
<a href="html/libxml-xmlerror.html#XML_MODULE_CLOSE">XML_MODULE_CLOSE</a><br />
<a href="html/libxml-xmlmodule.html#XML_MODULE_LAZY">XML_MODULE_LAZY</a><br />
<a href="html/libxml-xmlmodule.html#XML_MODULE_LOCAL">XML_MODULE_LOCAL</a><br />
@@ -589,6 +592,7 @@ A:link, A:visited, A:active { text-decoration: underline }
<a href="html/libxml-parser.html#XML_PARSE_NOXINCNODE">XML_PARSE_NOXINCNODE</a><br />
<a href="html/libxml-parser.html#XML_PARSE_NSCLEAN">XML_PARSE_NSCLEAN</a><br />
<a href="html/libxml-parser.html#XML_PARSE_OLD10">XML_PARSE_OLD10</a><br />
+<a href="html/libxml-parser.html#XML_PARSE_OLDSAX">XML_PARSE_OLDSAX</a><br />
<a href="html/libxml-parser.html#XML_PARSE_PEDANTIC">XML_PARSE_PEDANTIC</a><br />
<a href="html/libxml-parser.html#XML_PARSE_PUSH_DOM">XML_PARSE_PUSH_DOM</a><br />
<a href="html/libxml-parser.html#XML_PARSE_PUSH_SAX">XML_PARSE_PUSH_SAX</a><br />
@@ -1820,6 +1824,7 @@ A:link, A:visited, A:active { text-decoration: underline }
<a href="html/libxml-parserInternals.html#xmlCheckLanguageID">xmlCheckLanguageID</a><br />
<a href="html/libxml-xmlstring.html#xmlCheckUTF8">xmlCheckUTF8</a><br />
<a href="html/libxml-xmlversion.html#xmlCheckVersion">xmlCheckVersion</a><br />
+<a href="html/libxml-tree.html#xmlChildElementCount">xmlChildElementCount</a><br />
<a href="html/libxml-tree.html#xmlChildrenNode">xmlChildrenNode</a><br />
<a href="html/libxml-encoding.html#xmlCleanupCharEncodingHandlers">xmlCleanupCharEncodingHandlers</a><br />
<a href="html/libxml-encoding.html#xmlCleanupEncodingAliases">xmlCleanupEncodingAliases</a><br />
@@ -1998,6 +2003,7 @@ A:link, A:visited, A:active { text-decoration: underline }
<a href="html/libxml-xmlIO.html#xmlFileOpen">xmlFileOpen</a><br />
<a href="html/libxml-xmlIO.html#xmlFileRead">xmlFileRead</a><br />
<a href="html/libxml-encoding.html#xmlFindCharEncodingHandler">xmlFindCharEncodingHandler</a><br />
+<a href="html/libxml-tree.html#xmlFirstElementChild">xmlFirstElementChild</a><br />
<a href="html/libxml-globals.html#xmlFree">xmlFree</a><br />
<a href="html/libxml-valid.html#xmlFreeAttributeTable">xmlFreeAttributeTable</a><br />
<a href="html/libxml-xmlautomata.html#xmlFreeAutomata">xmlFreeAutomata</a><br />
@@ -2172,6 +2178,7 @@ A:link, A:visited, A:active { text-decoration: underline }
<a href="html/libxml-tree.html#xmlIsXHTML">xmlIsXHTML</a><br />
<a href="html/libxml-parser.html#xmlKeepBlanksDefault">xmlKeepBlanksDefault</a><br />
<a href="html/libxml-globals.html#xmlKeepBlanksDefaultValue">xmlKeepBlanksDefaultValue</a><br />
+<a href="html/libxml-tree.html#xmlLastElementChild">xmlLastElementChild</a><br />
<a href="html/libxml-globals.html#xmlLastError">xmlLastError</a><br />
<a href="html/libxml-parser.html#xmlLineNumbersDefault">xmlLineNumbersDefault</a><br />
<a href="html/libxml-globals.html#xmlLineNumbersDefaultValue">xmlLineNumbersDefaultValue</a><br />
@@ -2342,6 +2349,7 @@ A:link, A:visited, A:active { text-decoration: underline }
<a href="html/libxml-xmlwriter.html#xmlNewTextWriterTree">xmlNewTextWriterTree</a><br />
<a href="html/libxml-valid.html#xmlNewValidCtxt">xmlNewValidCtxt</a><br />
<a href="html/libxml-parserInternals.html#xmlNextChar">xmlNextChar</a><br />
+<a href="html/libxml-tree.html#xmlNextElementSibling">xmlNextElementSibling</a><br />
<a href="html/libxml-xmlIO.html#xmlNoNetExternalEntityLoader">xmlNoNetExternalEntityLoader</a><br />
<a href="html/libxml-tree.html#xmlNode">xmlNode</a><br />
<a href="html/libxml-tree.html#xmlNodeAddContent">xmlNodeAddContent</a><br />
@@ -2519,6 +2527,7 @@ A:link, A:visited, A:active { text-decoration: underline }
<a href="html/libxml-globals.html#xmlPedanticParserDefaultValue">xmlPedanticParserDefaultValue</a><br />
<a href="html/libxml-parserInternals.html#xmlPopInput">xmlPopInput</a><br />
<a href="html/libxml-xmlIO.html#xmlPopInputCallbacks">xmlPopInputCallbacks</a><br />
+<a href="html/libxml-tree.html#xmlPreviousElementSibling">xmlPreviousElementSibling</a><br />
<a href="html/libxml-uri.html#xmlPrintURI">xmlPrintURI</a><br />
<a href="html/libxml-parserInternals.html#xmlPushInput">xmlPushInput</a><br />
<a href="html/libxml-threads.html#xmlRMutex">xmlRMutex</a><br />
diff --git a/doc/Makefile.am b/doc/Makefile.am
index 55c5ef5..72441a5 100644
--- a/doc/Makefile.am
+++ b/doc/Makefile.am
@@ -26,7 +26,11 @@ EXTRA_DIST=xmlcatalog_man.xml tutorial/*.html tutorial/*.c tutorial/*.pdf \
man_MANS = xmllint.1 xmlcatalog.1
+if REBUILD_DOCS
all: web $(top_builddir)/NEWS libxml2.xsa $(man_MANS)
+else
+all:
+endif
api: libxml2-api.xml libxml2-refs.xml $(APIPAGES) $(srcdir)/html/index.html $(WIN32_DIR)/libxml2.def.src ../elfgcchack.h
diff --git a/doc/Makefile.in b/doc/Makefile.in
index 62f96dc..d5867a0 100644
--- a/doc/Makefile.in
+++ b/doc/Makefile.in
@@ -666,7 +666,8 @@ uninstall-man: uninstall-man1
uninstall uninstall-am uninstall-man uninstall-man1
-all: web $(top_builddir)/NEWS libxml2.xsa $(man_MANS)
+@REBUILD_DOCS_TRUE@all: web $(top_builddir)/NEWS libxml2.xsa $(man_MANS)
+@REBUILD_DOCS_FALSE@all:
api: libxml2-api.xml libxml2-refs.xml $(APIPAGES) $(srcdir)/html/index.html $(WIN32_DIR)/libxml2.def.src ../elfgcchack.h
diff --git a/doc/apibuild.py b/doc/apibuild.py
index 3c38061..b7fa22e 100755
--- a/doc/apibuild.py
+++ b/doc/apibuild.py
@@ -72,6 +72,8 @@ ignored_words = {
"ATTRIBUTE_UNUSED": (0, "macro keyword"),
"LIBEXSLT_PUBLIC": (0, "macro keyword"),
"X_IN_Y": (5, "macro function builder"),
+ "ATTRIBUTE_ALLOC_SIZE": (3, "macro for gcc checking extension"),
+ "ATTRIBUTE_PRINTF": (5, "macro for gcc printf args checking extension"),
}
def escape(raw):
diff --git a/doc/devhelp/libxml2-parser.html b/doc/devhelp/libxml2-parser.html
index ea0697f..06e863a 100644
--- a/doc/devhelp/libxml2-parser.html
+++ b/doc/devhelp/libxml2-parser.html
@@ -305,7 +305,8 @@ void <a href="#xmlSetExternalEntityLoader">xmlSetExternalEntityLoader</a> (<a hr
<a name="XML_PARSE_COMPACT">XML_PARSE_COMPACT</a> = 65536 /* compact small text nodes; no modification of the tree allowed afterwards (will possibly crash if you try to modify the tree) */
<a name="XML_PARSE_OLD10">XML_PARSE_OLD10</a> = 131072 /* parse using XML-1.0 before update 5 */
<a name="XML_PARSE_NOBASEFIX">XML_PARSE_NOBASEFIX</a> = 262144 /* do not fixup XINCLUDE xml:base uris */
- <a name="XML_PARSE_HUGE">XML_PARSE_HUGE</a> = 524288 /* relax any hardcoded limit from the parser */
+ <a name="XML_PARSE_HUGE">XML_PARSE_HUGE</a> = 524288 /* relax any hardcoded limit from the parser */
+ <a name="XML_PARSE_OLDSAX">XML_PARSE_OLDSAX</a> = 1048576 /* parse using SAX2 interface from before 2.7.0 */
};
</pre><p/>
</div>
diff --git a/doc/devhelp/libxml2-parserInternals.html b/doc/devhelp/libxml2-parserInternals.html
index cdae32e..caba9d3 100644
--- a/doc/devhelp/libxml2-parserInternals.html
+++ b/doc/devhelp/libxml2-parserInternals.html
@@ -63,6 +63,7 @@
#define <a href="#IS_EXTENDER_CH">IS_EXTENDER_CH</a>(c);
#define <a href="#IS_BLANK_CH">IS_BLANK_CH</a>(c);
#define <a href="#IS_LETTER_CH">IS_LETTER_CH</a>(c);
+#define <a href="#XML_MAX_TEXT_LENGTH">XML_MAX_TEXT_LENGTH</a>;
#define <a href="#XML_SUBSTITUTE_NONE">XML_SUBSTITUTE_NONE</a>;
#define <a href="#IS_COMBINING">IS_COMBINING</a>(c);
#define <a href="#XML_MAX_NAMELEN">XML_MAX_NAMELEN</a>;
@@ -266,6 +267,10 @@ void <a href="#xmlParseEntityDecl">xmlParseEntityDecl</a> (<a href="libxml2-tre
</pre><p>Identifiers can be longer, but this will be more costly at runtime.</p>
</div>
<hr/>
+ <div class="refsect2" lang="en"><h3><a name="XML_MAX_TEXT_LENGTH">Macro </a>XML_MAX_TEXT_LENGTH</h3><pre class="programlisting">#define <a href="#XML_MAX_TEXT_LENGTH">XML_MAX_TEXT_LENGTH</a>;
+</pre><p>Maximum size allowed for a single text node when building a tree. This is not a limitation of the parser but a safety boundary feature, use <a href="libxml2-parser.html#XML_PARSE_HUGE">XML_PARSE_HUGE</a> option to override it.</p>
+</div>
+ <hr/>
<div class="refsect2" lang="en"><h3><a name="XML_SUBSTITUTE_BOTH">Macro </a>XML_SUBSTITUTE_BOTH</h3><pre class="programlisting">#define <a href="#XML_SUBSTITUTE_BOTH">XML_SUBSTITUTE_BOTH</a>;
</pre><p>Both general and parameter entities need to be substituted.</p>
</div>
diff --git a/doc/devhelp/libxml2-tree.html b/doc/devhelp/libxml2-tree.html
index 188d43b..6e70990 100644
--- a/doc/devhelp/libxml2-tree.html
+++ b/doc/devhelp/libxml2-tree.html
@@ -125,11 +125,12 @@ int <a href="#xmlValidateQName">xmlValidateQName</a> (const <a href="libxml2-xm
int <a href="#xmlBufferAddHead">xmlBufferAddHead</a> (<a href="libxml2-tree.html#xmlBufferPtr">xmlBufferPtr</a> buf, <br/> const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * str, <br/> int len);
<a href="libxml2-tree.html#xmlNodePtr">xmlNodePtr</a> <a href="#xmlNewPI">xmlNewPI</a> (const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * name, <br/> const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * content);
void <a href="#xmlDocDumpFormatMemoryEnc">xmlDocDumpFormatMemoryEnc</a> (<a href="libxml2-tree.html#xmlDocPtr">xmlDocPtr</a> out_doc, <br/> <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> ** doc_txt_ptr, <br/> int * doc_txt_len, <br/> const char * txt_encoding, <br/> int format);
-int <a href="#xmlUnsetNsProp">xmlUnsetNsProp</a> (<a href="libxml2-tree.html#xmlNodePtr">xmlNodePtr</a> node, <br/> <a href="libxml2-tree.html#xmlNsPtr">xmlNsPtr</a> ns, <br/> const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * name);
+unsigned long <a href="#xmlChildElementCount">xmlChildElementCount</a> (<a href="libxml2-tree.html#xmlNodePtr">xmlNodePtr</a> parent);
void <a href="#xmlElemDump">xmlElemDump</a> (FILE * f, <br/> <a href="libxml2-tree.html#xmlDocPtr">xmlDocPtr</a> doc, <br/> <a href="libxml2-tree.html#xmlNodePtr">xmlNodePtr</a> cur);
int <a href="#xmlSaveFormatFileTo">xmlSaveFormatFileTo</a> (<a href="libxml2-tree.html#xmlOutputBufferPtr">xmlOutputBufferPtr</a> buf, <br/> <a href="libxml2-tree.html#xmlDocPtr">xmlDocPtr</a> cur, <br/> const char * encoding, <br/> int format);
<a href="libxml2-tree.html#xmlDtdPtr">xmlDtdPtr</a> <a href="#xmlGetIntSubset">xmlGetIntSubset</a> (<a href="libxml2-tree.html#xmlDocPtr">xmlDocPtr</a> doc);
int <a href="#xmlNodeBufGetContent">xmlNodeBufGetContent</a> (<a href="libxml2-tree.html#xmlBufferPtr">xmlBufferPtr</a> buffer, <br/> <a href="libxml2-tree.html#xmlNodePtr">xmlNodePtr</a> cur);
+<a href="libxml2-tree.html#xmlNodePtr">xmlNodePtr</a> <a href="#xmlNextElementSibling">xmlNextElementSibling</a> (<a href="libxml2-tree.html#xmlNodePtr">xmlNodePtr</a> node);
void <a href="#xmlBufferWriteChar">xmlBufferWriteChar</a> (<a href="libxml2-tree.html#xmlBufferPtr">xmlBufferPtr</a> buf, <br/> const char * string);
void <a href="#xmlBufferFree">xmlBufferFree</a> (<a href="libxml2-tree.html#xmlBufferPtr">xmlBufferPtr</a> buf);
int <a href="#xmlDOMWrapCloneNode">xmlDOMWrapCloneNode</a> (<a href="libxml2-tree.html#xmlDOMWrapCtxtPtr">xmlDOMWrapCtxtPtr</a> ctxt, <br/> <a href="libxml2-tree.html#xmlDocPtr">xmlDocPtr</a> sourceDoc, <br/> <a href="libxml2-tree.html#xmlNodePtr">xmlNodePtr</a> node, <br/> <a href="libxml2-tree.html#xmlNodePtr">xmlNodePtr</a> * resNode, <br/> <a href="libxml2-tree.html#xmlDocPtr">xmlDocPtr</a> destDoc, <br/> <a href="libxml2-tree.html#xmlNodePtr">xmlNodePtr</a> destParent, <br/> int deep, <br/> int options);
@@ -159,6 +160,8 @@ int <a href="#xmlDOMWrapAdoptNode">xmlDOMWrapAdoptNode</a> (<a href="libxml2-tr
<a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * <a href="#xmlGetNodePath">xmlGetNodePath</a> (<a href="libxml2-tree.html#xmlNodePtr">xmlNodePtr</a> node);
void <a href="#xmlFreePropList">xmlFreePropList</a> (<a href="libxml2-tree.html#xmlAttrPtr">xmlAttrPtr</a> cur);
void <a href="#xmlNodeAddContent">xmlNodeAddContent</a> (<a href="libxml2-tree.html#xmlNodePtr">xmlNodePtr</a> cur, <br/> const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * content);
+int <a href="#xmlUnsetNsProp">xmlUnsetNsProp</a> (<a href="libxml2-tree.html#xmlNodePtr">xmlNodePtr</a> node, <br/> <a href="libxml2-tree.html#xmlNsPtr">xmlNsPtr</a> ns, <br/> const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * name);
+<a href="libxml2-tree.html#xmlNodePtr">xmlNodePtr</a> <a href="#xmlFirstElementChild">xmlFirstElementChild</a> (<a href="libxml2-tree.html#xmlNodePtr">xmlNodePtr</a> parent);
<a href="libxml2-tree.html#xmlNodePtr">xmlNodePtr</a> <a href="#xmlAddNextSibling">xmlAddNextSibling</a> (<a href="libxml2-tree.html#xmlNodePtr">xmlNodePtr</a> cur, <br/> <a href="libxml2-tree.html#xmlNodePtr">xmlNodePtr</a> elem);
int <a href="#xmlIsBlankNode">xmlIsBlankNode</a> (<a href="libxml2-tree.html#xmlNodePtr">xmlNodePtr</a> node);
<a href="libxml2-tree.html#xmlNsPtr">xmlNsPtr</a> <a href="#xmlNewGlobalNs">xmlNewGlobalNs</a> (<a href="libxml2-tree.html#xmlDocPtr">xmlDocPtr</a> doc, <br/> const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * href, <br/> const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * prefix);
@@ -179,6 +182,7 @@ void <a href="#xmlFreeProp">xmlFreeProp</a> (<a href="libxml2-tree.html#xmlAtt
int <a href="#xmlTextConcat">xmlTextConcat</a> (<a href="libxml2-tree.html#xmlNodePtr">xmlNodePtr</a> node, <br/> const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * content, <br/> int len);
int <a href="#xmlNodeGetSpacePreserve">xmlNodeGetSpacePreserve</a> (<a href="libxml2-tree.html#xmlNodePtr">xmlNodePtr</a> cur);
int <a href="#xmlBufferShrink">xmlBufferShrink</a> (<a href="libxml2-tree.html#xmlBufferPtr">xmlBufferPtr</a> buf, <br/> unsigned int len);
+<a href="libxml2-tree.html#xmlNodePtr">xmlNodePtr</a> <a href="#xmlPreviousElementSibling">xmlPreviousElementSibling</a> (<a href="libxml2-tree.html#xmlNodePtr">xmlNodePtr</a> node);
void <a href="#xmlNodeSetContentLen">xmlNodeSetContentLen</a> (<a href="libxml2-tree.html#xmlNodePtr">xmlNodePtr</a> cur, <br/> const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * content, <br/> int len);
void <a href="#xmlNodeAddContentLen">xmlNodeAddContentLen</a> (<a href="libxml2-tree.html#xmlNodePtr">xmlNodePtr</a> cur, <br/> const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * content, <br/> int len);
void <a href="#xmlBufferWriteQuotedString">xmlBufferWriteQuotedString</a> (<a href="libxml2-tree.html#xmlBufferPtr">xmlBufferPtr</a> buf, <br/> const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * string);
@@ -193,6 +197,7 @@ typedef <a href="libxml2-tree.html#xmlNsPtr">xmlNsPtr</a> <a href="#xmlDOMWrapAc
long <a href="#xmlGetLineNo">xmlGetLineNo</a> (<a href="libxml2-tree.html#xmlNodePtr">xmlNodePtr</a> node);
const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * <a href="#xmlBufferContent">xmlBufferContent</a> (const <a href="libxml2-tree.html#xmlBufferPtr">xmlBufferPtr</a> buf);
int <a href="#xmlRemoveProp">xmlRemoveProp</a> (<a href="libxml2-tree.html#xmlAttrPtr">xmlAttrPtr</a> cur);
+<a href="libxml2-tree.html#xmlNodePtr">xmlNodePtr</a> <a href="#xmlLastElementChild">xmlLastElementChild</a> (<a href="libxml2-tree.html#xmlNodePtr">xmlNodePtr</a> parent);
<a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * <a href="#xmlNodeGetLang">xmlNodeGetLang</a> (<a href="libxml2-tree.html#xmlNodePtr">xmlNodePtr</a> cur);
int <a href="#xmlGetDocCompressMode">xmlGetDocCompressMode</a> (<a href="libxml2-tree.html#xmlDocPtr">xmlDocPtr</a> doc);
<a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * <a href="#xmlGetNsProp">xmlGetNsProp</a> (<a href="libxml2-tree.html#xmlNodePtr">xmlNodePtr</a> node, <br/> const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * name, <br/> const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * nameSpace);
@@ -1003,6 +1008,10 @@ void <a href="#xmlFreeNsList">xmlFreeNsList</a> (<a href="libxml2-tree.html#xm
</pre><p>Builds the QName @prefix:@ncname in @memory if there is enough space and prefix is not NULL nor empty, otherwise allocate a new string. If prefix is NULL or empty it returns ncname.</p>
<div class="variablelist"><table border="0"><col align="left"/><tbody><tr><td><span class="term"><i><tt>ncname</tt></i>:</span></td><td>the Name</td></tr><tr><td><span class="term"><i><tt>prefix</tt></i>:</span></td><td>the prefix</td></tr><tr><td><span class="term"><i><tt>memory</tt></i>:</span></td><td>preallocated memory</td></tr><tr><td><span class="term"><i><tt>len</tt></i>:</span></td><td>preallocated memory length</td></tr><tr><td><span class="term"><i><tt>Returns</tt></i>:</span></td><td>the new string which must be freed by the caller if different from @memory and @ncname or NULL in case of error</td></tr></tbody></table></div></div>
<hr/>
+ <div class="refsect2" lang="en"><h3><a name="xmlChildElementCount"/>xmlChildElementCount ()</h3><pre class="programlisting">unsigned long xmlChildElementCount (<a href="libxml2-tree.html#xmlNodePtr">xmlNodePtr</a> parent)<br/>
+</pre><p>Finds the current number of child nodes of that element which are element nodes. Note the handling of entities references is different than in the W3C DOM element traversal spec since we don't have back <a href="libxml2-SAX.html#reference">reference</a> from entities content to entities references.</p>
+<div class="variablelist"><table border="0"><col align="left"/><tbody><tr><td><span class="term"><i><tt>parent</tt></i>:</span></td><td>the parent node</td></tr><tr><td><span class="term"><i><tt>Returns</tt></i>:</span></td><td>the count of element child or 0 if not available</td></tr></tbody></table></div></div>
+ <hr/>
<div class="refsect2" lang="en"><h3><a name="xmlCopyDoc"/>xmlCopyDoc ()</h3><pre class="programlisting"><a href="libxml2-tree.html#xmlDocPtr">xmlDocPtr</a> xmlCopyDoc (<a href="libxml2-tree.html#xmlDocPtr">xmlDocPtr</a> doc, <br/> int recursive)<br/>
</pre><p>Do a copy of the document info. If recursive, the content tree will be copied too as well as DTD, namespaces and entities.</p>
<div class="variablelist"><table border="0"><col align="left"/><tbody><tr><td><span class="term"><i><tt>doc</tt></i>:</span></td><td>the document</td></tr><tr><td><span class="term"><i><tt>recursive</tt></i>:</span></td><td>if not zero do a recursive copy.</td></tr><tr><td><span class="term"><i><tt>Returns</tt></i>:</span></td><td>a new #xmlDocPtr, or NULL in case of error.</td></tr></tbody></table></div></div>
@@ -1107,6 +1116,10 @@ void <a href="#xmlFreeNsList">xmlFreeNsList</a> (<a href="libxml2-tree.html#xm
</pre><p>Dump an XML/HTML node, recursive behaviour, children are printed too.</p>
<div class="variablelist"><table border="0"><col align="left"/><tbody><tr><td><span class="term"><i><tt>f</tt></i>:</span></td><td>the FILE * for the output</td></tr><tr><td><span class="term"><i><tt>doc</tt></i>:</span></td><td>the document</td></tr><tr><td><span class="term"><i><tt>cur</tt></i>:</span></td><td>the current node</td></tr></tbody></table></div></div>
<hr/>
+ <div class="refsect2" lang="en"><h3><a name="xmlFirstElementChild"/>xmlFirstElementChild ()</h3><pre class="programlisting"><a href="libxml2-tree.html#xmlNodePtr">xmlNodePtr</a> xmlFirstElementChild (<a href="libxml2-tree.html#xmlNodePtr">xmlNodePtr</a> parent)<br/>
+</pre><p>Finds the first child node of that element which is a Element node Note the handling of entities references is different than in the W3C DOM element traversal spec since we don't have back <a href="libxml2-SAX.html#reference">reference</a> from entities content to entities references.</p>
+<div class="variablelist"><table border="0"><col align="left"/><tbody><tr><td><span class="term"><i><tt>parent</tt></i>:</span></td><td>the parent node</td></tr><tr><td><span class="term"><i><tt>Returns</tt></i>:</span></td><td>the first element child or NULL if not available</td></tr></tbody></table></div></div>
+ <hr/>
<div class="refsect2" lang="en"><h3><a name="xmlFreeDoc"/>xmlFreeDoc ()</h3><pre class="programlisting">void xmlFreeDoc (<a href="libxml2-tree.html#xmlDocPtr">xmlDocPtr</a> cur)<br/>
</pre><p>Free up all the structures used by a document, tree included.</p>
<div class="variablelist"><table border="0"><col align="left"/><tbody><tr><td><span class="term"><i><tt>cur</tt></i>:</span></td><td>pointer to the document</td></tr></tbody></table></div></div>
@@ -1199,6 +1212,10 @@ void <a href="#xmlFreeNsList">xmlFreeNsList</a> (<a href="libxml2-tree.html#xm
</pre><p>Try to find if the document correspond to an XHTML DTD</p>
<div class="variablelist"><table border="0"><col align="left"/><tbody><tr><td><span class="term"><i><tt>systemID</tt></i>:</span></td><td>the system identifier</td></tr><tr><td><span class="term"><i><tt>publicID</tt></i>:</span></td><td>the public identifier</td></tr><tr><td><span class="term"><i><tt>Returns</tt></i>:</span></td><td>1 if true, 0 if not and -1 in case of error</td></tr></tbody></table></div></div>
<hr/>
+ <div class="refsect2" lang="en"><h3><a name="xmlLastElementChild"/>xmlLastElementChild ()</h3><pre class="programlisting"><a href="libxml2-tree.html#xmlNodePtr">xmlNodePtr</a> xmlLastElementChild (<a href="libxml2-tree.html#xmlNodePtr">xmlNodePtr</a> parent)<br/>
+</pre><p>Finds the last child node of that element which is a Element node Note the handling of entities references is different than in the W3C DOM element traversal spec since we don't have back <a href="libxml2-SAX.html#reference">reference</a> from entities content to entities references.</p>
+<div class="variablelist"><table border="0"><col align="left"/><tbody><tr><td><span class="term"><i><tt>parent</tt></i>:</span></td><td>the parent node</td></tr><tr><td><span class="term"><i><tt>Returns</tt></i>:</span></td><td>the last element child or NULL if not available</td></tr></tbody></table></div></div>
+ <hr/>
<div class="refsect2" lang="en"><h3><a name="xmlNewCDataBlock"/>xmlNewCDataBlock ()</h3><pre class="programlisting"><a href="libxml2-tree.html#xmlNodePtr">xmlNodePtr</a> xmlNewCDataBlock (<a href="libxml2-tree.html#xmlDocPtr">xmlDocPtr</a> doc, <br/> const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * content, <br/> int len)<br/>
</pre><p>Creation of a new node containing a CDATA block.</p>
<div class="variablelist"><table border="0"><col align="left"/><tbody><tr><td><span class="term"><i><tt>doc</tt></i>:</span></td><td>the document</td></tr><tr><td><span class="term"><i><tt>content</tt></i>:</span></td><td>the CDATA block content content</td></tr><tr><td><span class="term"><i><tt>len</tt></i>:</span></td><td>the length of the block</td></tr><tr><td><span class="term"><i><tt>Returns</tt></i>:</span></td><td>a pointer to the new node object.</td></tr></tbody></table></div></div>
@@ -1307,6 +1324,10 @@ void <a href="#xmlFreeNsList">xmlFreeNsList</a> (<a href="libxml2-tree.html#xm
</pre><p>Creation of a new text node with an extra parameter for the content's length</p>
<div class="variablelist"><table border="0"><col align="left"/><tbody><tr><td><span class="term"><i><tt>content</tt></i>:</span></td><td>the text content</td></tr><tr><td><span class="term"><i><tt>len</tt></i>:</span></td><td>the text len.</td></tr><tr><td><span class="term"><i><tt>Returns</tt></i>:</span></td><td>a pointer to the new node object.</td></tr></tbody></table></div></div>
<hr/>
+ <div class="refsect2" lang="en"><h3><a name="xmlNextElementSibling"/>xmlNextElementSibling ()</h3><pre class="programlisting"><a href="libxml2-tree.html#xmlNodePtr">xmlNodePtr</a> xmlNextElementSibling (<a href="libxml2-tree.html#xmlNodePtr">xmlNodePtr</a> node)<br/>
+</pre><p>Finds the first closest next sibling of the node which is an element node. Note the handling of entities references is different than in the W3C DOM element traversal spec since we don't have back <a href="libxml2-SAX.html#reference">reference</a> from entities content to entities references.</p>
+<div class="variablelist"><table border="0"><col align="left"/><tbody><tr><td><span class="term"><i><tt>node</tt></i>:</span></td><td>the current node</td></tr><tr><td><span class="term"><i><tt>Returns</tt></i>:</span></td><td>the next element sibling or NULL if not available</td></tr></tbody></table></div></div>
+ <hr/>
<div class="refsect2" lang="en"><h3><a name="xmlNodeAddContent"/>xmlNodeAddContent ()</h3><pre class="programlisting">void xmlNodeAddContent (<a href="libxml2-tree.html#xmlNodePtr">xmlNodePtr</a> cur, <br/> const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * content)<br/>
</pre><p>Append the extra substring to the node content. NOTE: In contrast to xmlNodeSetContent(), @content is supposed to be raw text, so unescaped XML special chars are allowed, entity references are not supported.</p>
<div class="variablelist"><table border="0"><col align="left"/><tbody><tr><td><span class="term"><i><tt>cur</tt></i>:</span></td><td>the node being modified</td></tr><tr><td><span class="term"><i><tt>content</tt></i>:</span></td><td>extra content</td></tr></tbody></table></div></div>
@@ -1379,6 +1400,10 @@ void <a href="#xmlFreeNsList">xmlFreeNsList</a> (<a href="libxml2-tree.html#xm
</pre><p>Set (or reset) the space preserving behaviour of a node, i.e. the value of the xml:space attribute.</p>
<div class="variablelist"><table border="0"><col align="left"/><tbody><tr><td><span class="term"><i><tt>cur</tt></i>:</span></td><td>the node being changed</td></tr><tr><td><span class="term"><i><tt>val</tt></i>:</span></td><td>the xml:space value ("0": default, 1: "preserve")</td></tr></tbody></table></div></div>
<hr/>
+ <div class="refsect2" lang="en"><h3><a name="xmlPreviousElementSibling"/>xmlPreviousElementSibling ()</h3><pre class="programlisting"><a href="libxml2-tree.html#xmlNodePtr">xmlNodePtr</a> xmlPreviousElementSibling (<a href="libxml2-tree.html#xmlNodePtr">xmlNodePtr</a> node)<br/>
+</pre><p>Finds the first closest previous sibling of the node which is an element node. Note the handling of entities references is different than in the W3C DOM element traversal spec since we don't have back <a href="libxml2-SAX.html#reference">reference</a> from entities content to entities references.</p>
+<div class="variablelist"><table border="0"><col align="left"/><tbody><tr><td><span class="term"><i><tt>node</tt></i>:</span></td><td>the current node</td></tr><tr><td><span class="term"><i><tt>Returns</tt></i>:</span></td><td>the previous element sibling or NULL if not available</td></tr></tbody></table></div></div>
+ <hr/>
<div class="refsect2" lang="en"><h3><a name="xmlReconciliateNs"/>xmlReconciliateNs ()</h3><pre class="programlisting">int xmlReconciliateNs (<a href="libxml2-tree.html#xmlDocPtr">xmlDocPtr</a> doc, <br/> <a href="libxml2-tree.html#xmlNodePtr">xmlNodePtr</a> tree)<br/>
</pre><p>This function checks that all the namespaces declared within the given tree are properly declared. This is needed for example after Copy or Cut and then paste operations. The subtree may still hold pointers to namespace declarations outside the subtree or invalid/masked. As much as possible the function try to reuse the existing namespaces found in the new environment. If not possible the new namespaces are redeclared on @tree at the top of the given subtree.</p>
<div class="variablelist"><table border="0"><col align="left"/><tbody><tr><td><span class="term"><i><tt>doc</tt></i>:</span></td><td>the document</td></tr><tr><td><span class="term"><i><tt>tree</tt></i>:</span></td><td>a node defining the subtree to reconciliate</td></tr><tr><td><span class="term"><i><tt>Returns</tt></i>:</span></td><td>the number of namespace declarations created or -1 in case of error.</td></tr></tbody></table></div></div>
diff --git a/doc/devhelp/libxml2-valid.html b/doc/devhelp/libxml2-valid.html
index 15b3371..3480214 100644
--- a/doc/devhelp/libxml2-valid.html
+++ b/doc/devhelp/libxml2-valid.html
@@ -443,8 +443,8 @@ The content of this structure is not made public by the API.
<div class="variablelist"><table border="0"><col align="left"/><tbody><tr><td><span class="term"><i><tt>ctxt</tt></i>:</span></td><td>the validation context</td></tr><tr><td><span class="term"><i><tt>doc</tt></i>:</span></td><td>a document instance</td></tr><tr><td><span class="term"><i><tt>attr</tt></i>:</span></td><td>an <a href="libxml2-SAX.html#attribute">attribute</a> definition</td></tr><tr><td><span class="term"><i><tt>Returns</tt></i>:</span></td><td>1 if valid or 0 otherwise</td></tr></tbody></table></div></div>
<hr/>
<div class="refsect2" lang="en"><h3><a name="xmlValidateAttributeValue"/>xmlValidateAttributeValue ()</h3><pre class="programlisting">int xmlValidateAttributeValue (<a href="libxml2-tree.html#xmlAttributeType">xmlAttributeType</a> type, <br/> const <a href="libxml2-xmlstring.html#xmlChar">xmlChar</a> * value)<br/>
-</pre><p/>
-<div class="variablelist"><table border="0"><col align="left"/><tbody><tr><td><span class="term"><i><tt>type</tt></i>:</span></td><td/></tr><tr><td><span class="term"><i><tt>value</tt></i>:</span></td><td/></tr><tr><td><span class="term"><i><tt>Returns</tt></i>:</span></td><td/></tr></tbody></table></div></div>
+</pre><p>Validate that the given <a href="libxml2-SAX.html#attribute">attribute</a> value match the proper production [ VC: ID ] Values of type ID must match the Name production.... [ VC: IDREF ] Values of type IDREF must match the Name production, and values of type IDREFS must match Names ... [ VC: Entity Name ] Values of type ENTITY must match the Name production, values of type ENTITIES must match Names ... [ VC: Name Token ] Values of type NMTOKEN must match the Nmtoken production; values of type NMTOKENS must match Nmtokens.</p>
+<div class="variablelist"><table border="0"><col align="left"/><tbody><tr><td><span class="term"><i><tt>type</tt></i>:</span></td><td>an <a href="libxml2-SAX.html#attribute">attribute</a> type</td></tr><tr><td><span class="term"><i><tt>value</tt></i>:</span></td><td>an <a href="libxml2-SAX.html#attribute">attribute</a> value</td></tr><tr><td><span class="term"><i><tt>Returns</tt></i>:</span></td><td>1 if valid or 0 otherwise</td></tr></tbody></table></div></div>
<hr/>
<div class="refsect2" lang="en"><h3><a name="xmlValidateDocument"/>xmlValidateDocument ()</h3><pre class="programlisting">int xmlValidateDocument (<a href="libxml2-valid.html#xmlValidCtxtPtr">xmlValidCtxtPtr</a> ctxt, <br/> <a href="libxml2-tree.html#xmlDocPtr">xmlDocPtr</a> doc)<br/>
</pre><p>Try to validate the document instance basically it does the all the checks described by the XML Rec i.e. validates the internal and external subset (if present) and validate the document tree.</p>
diff --git a/doc/devhelp/libxml2-xmlversion.html b/doc/devhelp/libxml2-xmlversion.html
index 6a3a089..28cc5a8 100644
--- a/doc/devhelp/libxml2-xmlversion.html
+++ b/doc/devhelp/libxml2-xmlversion.html
@@ -44,7 +44,7 @@
<div class="refsynopsisdiv">
<h2>Synopsis</h2>
<pre class="synopsis">#define <a href="#LIBXML_VERSION_EXTRA">LIBXML_VERSION_EXTRA</a>;
-#define <a href="#LIBXML_MODULES_ENABLED">LIBXML_MODULES_ENABLED</a>;
+#define <a href="#LIBXML_DOCB_ENABLED">LIBXML_DOCB_ENABLED</a>;
#define <a href="#LIBXML_LEGACY_ENABLED">LIBXML_LEGACY_ENABLED</a>;
#define <a href="#LIBXML_READER_ENABLED">LIBXML_READER_ENABLED</a>;
#define <a href="#LIBXML_THREAD_ENABLED">LIBXML_THREAD_ENABLED</a>;
@@ -53,8 +53,8 @@
#define <a href="#LIBXML_DEBUG_ENABLED">LIBXML_DEBUG_ENABLED</a>;
#define <a href="#LIBXML_XINCLUDE_ENABLED">LIBXML_XINCLUDE_ENABLED</a>;
#define <a href="#ATTRIBUTE_UNUSED">ATTRIBUTE_UNUSED</a>;
-#define <a href="#LIBXML_DOCB_ENABLED">LIBXML_DOCB_ENABLED</a>;
-#define <a href="#LIBXML_PUSH_ENABLED">LIBXML_PUSH_ENABLED</a>;
+#define <a href="#LIBXML_MODULES_ENABLED">LIBXML_MODULES_ENABLED</a>;
+#define <a href="#ATTRIBUTE_PRINTF">ATTRIBUTE_PRINTF</a>;
#define <a href="#LIBXML_SAX1_ENABLED">LIBXML_SAX1_ENABLED</a>;
#define <a href="#WITHOUT_TRIO">WITHOUT_TRIO</a>;
#define <a href="#LIBXML_SCHEMATRON_ENABLED">LIBXML_SCHEMATRON_ENABLED</a>;
@@ -70,11 +70,13 @@
#define <a href="#LIBXML_MODULE_EXTENSION">LIBXML_MODULE_EXTENSION</a>;
#define <a href="#LIBXML_ICONV_ENABLED">LIBXML_ICONV_ENABLED</a>;
#define <a href="#LIBXML_HTML_ENABLED">LIBXML_HTML_ENABLED</a>;
+#define <a href="#LIBXML_WRITER_ENABLED">LIBXML_WRITER_ENABLED</a>;
#define <a href="#LIBXML_UNICODE_ENABLED">LIBXML_UNICODE_ENABLED</a>;
#define <a href="#LIBXML_FTP_ENABLED">LIBXML_FTP_ENABLED</a>;
#define <a href="#LIBXML_AUTOMATA_ENABLED">LIBXML_AUTOMATA_ENABLED</a>;
#define <a href="#LIBXML_ZLIB_ENABLED">LIBXML_ZLIB_ENABLED</a>;
-#define <a href="#LIBXML_WRITER_ENABLED">LIBXML_WRITER_ENABLED</a>;
+#define <a href="#ATTRIBUTE_ALLOC_SIZE">ATTRIBUTE_ALLOC_SIZE</a>;
+#define <a href="#LIBXML_PUSH_ENABLED">LIBXML_PUSH_ENABLED</a>;
#define <a href="#LIBXML_C14N_ENABLED">LIBXML_C14N_ENABLED</a>;
#define <a href="#LIBXML_SCHEMAS_ENABLED">LIBXML_SCHEMAS_ENABLED</a>;
#define <a href="#DEBUG_MEMORY_LOCATION">DEBUG_MEMORY_LOCATION</a>;
@@ -93,6 +95,14 @@ void <a href="#xmlCheckVersion">xmlCheckVersion</a> (int version);
<div class="refsect1" lang="en">
<h2>Details</h2>
<div class="refsect2" lang="en">
+ <div class="refsect2" lang="en"><h3><a name="ATTRIBUTE_ALLOC_SIZE">Macro </a>ATTRIBUTE_ALLOC_SIZE</h3><pre class="programlisting">#define <a href="#ATTRIBUTE_ALLOC_SIZE">ATTRIBUTE_ALLOC_SIZE</a>;
+</pre><p>Macro used to indicate to GCC this is an allocator function</p>
+</div>
+ <hr/>
+ <div class="refsect2" lang="en"><h3><a name="ATTRIBUTE_PRINTF">Macro </a>ATTRIBUTE_PRINTF</h3><pre class="programlisting">#define <a href="#ATTRIBUTE_PRINTF">ATTRIBUTE_PRINTF</a>;
+</pre><p>Macro used to indicate to GCC the parameter are printf like</p>
+</div>
+ <hr/>
<div class="refsect2" lang="en"><h3><a name="ATTRIBUTE_UNUSED">Macro </a>ATTRIBUTE_UNUSED</h3><pre class="programlisting">#define <a href="#ATTRIBUTE_UNUSED">ATTRIBUTE_UNUSED</a>;
</pre><p>Macro used to signal to GCC unused function parameters</p>
</div>
diff --git a/doc/devhelp/libxml2.devhelp b/doc/devhelp/libxml2.devhelp
index 31a5d91..ce525af 100644
--- a/doc/devhelp/libxml2.devhelp
+++ b/doc/devhelp/libxml2.devhelp
@@ -52,6 +52,8 @@
</sub>
</chapters>
<functions>
+ <function name="ATTRIBUTE_ALLOC_SIZE" link="libxml2-xmlversion.html#ATTRIBUTE_ALLOC_SIZE"/>
+ <function name="ATTRIBUTE_PRINTF" link="libxml2-xmlversion.html#ATTRIBUTE_PRINTF"/>
<function name="ATTRIBUTE_UNUSED" link="libxml2-xmlversion.html#ATTRIBUTE_UNUSED"/>
<function name="BAD_CAST" link="libxml2-xmlstring.html#BAD_CAST"/>
<function name="BASE_BUFFER_SIZE" link="libxml2-tree.html#BASE_BUFFER_SIZE"/>
@@ -159,6 +161,7 @@
<function name="XML_GET_LINE" link="libxml2-tree.html#XML_GET_LINE"/>
<function name="XML_LOCAL_NAMESPACE" link="libxml2-tree.html#XML_LOCAL_NAMESPACE"/>
<function name="XML_MAX_NAMELEN" link="libxml2-parserInternals.html#XML_MAX_NAMELEN"/>
+ <function name="XML_MAX_TEXT_LENGTH" link="libxml2-parserInternals.html#XML_MAX_TEXT_LENGTH"/>
<function name="XML_SAX2_MAGIC" link="libxml2-parser.html#XML_SAX2_MAGIC"/>
<function name="XML_SCHEMAS_ANYATTR_LAX" link="libxml2-schemasInternals.html#XML_SCHEMAS_ANYATTR_LAX"/>
<function name="XML_SCHEMAS_ANYATTR_SKIP" link="libxml2-schemasInternals.html#XML_SCHEMAS_ANYATTR_SKIP"/>
@@ -770,6 +773,7 @@
<function name="XML_PARSE_NOXINCNODE" link="libxml2-parser.html#XML_PARSE_NOXINCNODE"/>
<function name="XML_PARSE_NSCLEAN" link="libxml2-parser.html#XML_PARSE_NSCLEAN"/>
<function name="XML_PARSE_OLD10" link="libxml2-parser.html#XML_PARSE_OLD10"/>
+ <function name="XML_PARSE_OLDSAX" link="libxml2-parser.html#XML_PARSE_OLDSAX"/>
<function name="XML_PARSE_PEDANTIC" link="libxml2-parser.html#XML_PARSE_PEDANTIC"/>
<function name="XML_PARSE_PUSH_DOM" link="libxml2-parser.html#XML_PARSE_PUSH_DOM"/>
<function name="XML_PARSE_PUSH_SAX" link="libxml2-parser.html#XML_PARSE_PUSH_SAX"/>
@@ -2134,6 +2138,7 @@
<function name="xmlCheckLanguageID ()" link="libxml2-parserInternals.html#xmlCheckLanguageID"/>
<function name="xmlCheckUTF8 ()" link="libxml2-xmlstring.html#xmlCheckUTF8"/>
<function name="xmlCheckVersion ()" link="libxml2-xmlversion.html#xmlCheckVersion"/>
+ <function name="xmlChildElementCount ()" link="libxml2-tree.html#xmlChildElementCount"/>
<function name="xmlCleanupCharEncodingHandlers ()" link="libxml2-encoding.html#xmlCleanupCharEncodingHandlers"/>
<function name="xmlCleanupEncodingAliases ()" link="libxml2-encoding.html#xmlCleanupEncodingAliases"/>
<function name="xmlCleanupGlobals ()" link="libxml2-globals.html#xmlCleanupGlobals"/>
@@ -2266,6 +2271,7 @@
<function name="xmlFileOpen ()" link="libxml2-xmlIO.html#xmlFileOpen"/>
<function name="xmlFileRead ()" link="libxml2-xmlIO.html#xmlFileRead"/>
<function name="xmlFindCharEncodingHandler ()" link="libxml2-encoding.html#xmlFindCharEncodingHandler"/>
+ <function name="xmlFirstElementChild ()" link="libxml2-tree.html#xmlFirstElementChild"/>
<function name="xmlFreeAttributeTable ()" link="libxml2-valid.html#xmlFreeAttributeTable"/>
<function name="xmlFreeAutomata ()" link="libxml2-xmlautomata.html#xmlFreeAutomata"/>
<function name="xmlFreeCatalog ()" link="libxml2-catalog.html#xmlFreeCatalog"/>
@@ -2395,6 +2401,7 @@
<function name="xmlIsRef ()" link="libxml2-valid.html#xmlIsRef"/>
<function name="xmlIsXHTML ()" link="libxml2-tree.html#xmlIsXHTML"/>
<function name="xmlKeepBlanksDefault ()" link="libxml2-parser.html#xmlKeepBlanksDefault"/>
+ <function name="xmlLastElementChild ()" link="libxml2-tree.html#xmlLastElementChild"/>
<function name="xmlLineNumbersDefault ()" link="libxml2-parser.html#xmlLineNumbersDefault"/>
<function name="xmlLinkGetData ()" link="libxml2-list.html#xmlLinkGetData"/>
<function name="xmlListAppend ()" link="libxml2-list.html#xmlListAppend"/>
@@ -2544,6 +2551,7 @@
<function name="xmlNewTextWriterTree ()" link="libxml2-xmlwriter.html#xmlNewTextWriterTree"/>
<function name="xmlNewValidCtxt ()" link="libxml2-valid.html#xmlNewValidCtxt"/>
<function name="xmlNextChar ()" link="libxml2-parserInternals.html#xmlNextChar"/>
+ <function name="xmlNextElementSibling ()" link="libxml2-tree.html#xmlNextElementSibling"/>
<function name="xmlNoNetExternalEntityLoader ()" link="libxml2-xmlIO.html#xmlNoNetExternalEntityLoader"/>
<function name="xmlNodeAddContent ()" link="libxml2-tree.html#xmlNodeAddContent"/>
<function name="xmlNodeAddContentLen ()" link="libxml2-tree.html#xmlNodeAddContentLen"/>
@@ -2676,6 +2684,7 @@
<function name="xmlPedanticParserDefault ()" link="libxml2-parser.html#xmlPedanticParserDefault"/>
<function name="xmlPopInput ()" link="libxml2-parserInternals.html#xmlPopInput"/>
<function name="xmlPopInputCallbacks ()" link="libxml2-xmlIO.html#xmlPopInputCallbacks"/>
+ <function name="xmlPreviousElementSibling ()" link="libxml2-tree.html#xmlPreviousElementSibling"/>
<function name="xmlPrintURI ()" link="libxml2-uri.html#xmlPrintURI"/>
<function name="xmlPushInput ()" link="libxml2-parserInternals.html#xmlPushInput"/>
<function name="xmlRMutexLock ()" link="libxml2-threads.html#xmlRMutexLock"/>
diff --git a/doc/examples/Makefile.am b/doc/examples/Makefile.am
index d0f42aa..d1beee5 100644
--- a/doc/examples/Makefile.am
+++ b/doc/examples/Makefile.am
@@ -15,65 +15,75 @@ install-data-local:
$(mkinstalldirs) $(DESTDIR)$(HTML_DIR)
-@INSTALL@ -m 0644 $(srcdir)/*.html $(srcdir)/*.c $(srcdir)/*.xml $(srcdir)/*.xsl $(srcdir)/*.res $(DESTDIR)$(HTML_DIR)
-EXTRA_DIST=examples.xsl index.py test1.xml examples.xml test2.xml tst.xml writer.xml test3.xml tree2.res xpath1.res reader1.res reader3.res reader4.res io1.res xpath2.res io2.res tree1.res
+EXTRA_DIST=examples.xsl index.py examples.xml writer.xml test3.xml tst.xml test1.xml test2.xml io2.res xpath2.res tree1.res reader4.res io1.res tree2.res reader3.res xpath1.res reader1.res
-noinst_PROGRAMS=reader2 xpath2 xpath1 parse3 io2 tree2 reader1 testWriter parse4 reader3 io1 parse1 tree1 reader4 parse2
-
-reader2_SOURCES=reader2.c
-reader2_LDFLAGS=
-reader2_DEPENDENCIES= $(DEPS)
-reader2_LDADD= @RDL_LIBS@ $(LDADDS)
+noinst_PROGRAMS=xpath2 reader1 reader4 parse2 reader2 parse3 reader3 tree2 parse4 io2 testWriter io1 xpath1 parse1 tree1
xpath2_SOURCES=xpath2.c
xpath2_LDFLAGS=
xpath2_DEPENDENCIES= $(DEPS)
xpath2_LDADD= @RDL_LIBS@ $(LDADDS)
-xpath1_SOURCES=xpath1.c
-xpath1_LDFLAGS=
-xpath1_DEPENDENCIES= $(DEPS)
-xpath1_LDADD= @RDL_LIBS@ $(LDADDS)
+reader1_SOURCES=reader1.c
+reader1_LDFLAGS=
+reader1_DEPENDENCIES= $(DEPS)
+reader1_LDADD= @RDL_LIBS@ $(LDADDS)
+
+reader4_SOURCES=reader4.c
+reader4_LDFLAGS=
+reader4_DEPENDENCIES= $(DEPS)
+reader4_LDADD= @RDL_LIBS@ $(LDADDS)
+
+parse2_SOURCES=parse2.c
+parse2_LDFLAGS=
+parse2_DEPENDENCIES= $(DEPS)
+parse2_LDADD= @RDL_LIBS@ $(LDADDS)
+
+reader2_SOURCES=reader2.c
+reader2_LDFLAGS=
+reader2_DEPENDENCIES= $(DEPS)
+reader2_LDADD= @RDL_LIBS@ $(LDADDS)
parse3_SOURCES=parse3.c
parse3_LDFLAGS=
parse3_DEPENDENCIES= $(DEPS)
parse3_LDADD= @RDL_LIBS@ $(LDADDS)
-io2_SOURCES=io2.c
-io2_LDFLAGS=
-io2_DEPENDENCIES= $(DEPS)
-io2_LDADD= @RDL_LIBS@ $(LDADDS)
+reader3_SOURCES=reader3.c
+reader3_LDFLAGS=
+reader3_DEPENDENCIES= $(DEPS)
+reader3_LDADD= @RDL_LIBS@ $(LDADDS)
tree2_SOURCES=tree2.c
tree2_LDFLAGS=
tree2_DEPENDENCIES= $(DEPS)
tree2_LDADD= @RDL_LIBS@ $(LDADDS)
-reader1_SOURCES=reader1.c
-reader1_LDFLAGS=
-reader1_DEPENDENCIES= $(DEPS)
-reader1_LDADD= @RDL_LIBS@ $(LDADDS)
-
-testWriter_SOURCES=testWriter.c
-testWriter_LDFLAGS=
-testWriter_DEPENDENCIES= $(DEPS)
-testWriter_LDADD= @RDL_LIBS@ $(LDADDS)
-
parse4_SOURCES=parse4.c
parse4_LDFLAGS=
parse4_DEPENDENCIES= $(DEPS)
parse4_LDADD= @RDL_LIBS@ $(LDADDS)
-reader3_SOURCES=reader3.c
-reader3_LDFLAGS=
-reader3_DEPENDENCIES= $(DEPS)
-reader3_LDADD= @RDL_LIBS@ $(LDADDS)
+io2_SOURCES=io2.c
+io2_LDFLAGS=
+io2_DEPENDENCIES= $(DEPS)
+io2_LDADD= @RDL_LIBS@ $(LDADDS)
+
+testWriter_SOURCES=testWriter.c
+testWriter_LDFLAGS=
+testWriter_DEPENDENCIES= $(DEPS)
+testWriter_LDADD= @RDL_LIBS@ $(LDADDS)
io1_SOURCES=io1.c
io1_LDFLAGS=
io1_DEPENDENCIES= $(DEPS)
io1_LDADD= @RDL_LIBS@ $(LDADDS)
+xpath1_SOURCES=xpath1.c
+xpath1_LDFLAGS=
+xpath1_DEPENDENCIES= $(DEPS)
+xpath1_LDADD= @RDL_LIBS@ $(LDADDS)
+
parse1_SOURCES=parse1.c
parse1_LDFLAGS=
parse1_DEPENDENCIES= $(DEPS)
@@ -84,51 +94,41 @@ tree1_LDFLAGS=
tree1_DEPENDENCIES= $(DEPS)
tree1_LDADD= @RDL_LIBS@ $(LDADDS)
-reader4_SOURCES=reader4.c
-reader4_LDFLAGS=
-reader4_DEPENDENCIES= $(DEPS)
-reader4_LDADD= @RDL_LIBS@ $(LDADDS)
-
-parse2_SOURCES=parse2.c
-parse2_LDFLAGS=
-parse2_DEPENDENCIES= $(DEPS)
-parse2_LDADD= @RDL_LIBS@ $(LDADDS)
-
valgrind:
$(MAKE) CHECKER='valgrind' tests
tests: $(noinst_PROGRAMS)
@(echo '## examples regression tests')
@(echo > .memdump)
- @($(CHECKER) ./reader2 test2.xml > reader1.tmp ; diff reader1.tmp reader1.res ; rm reader1.tmp)
- @(grep "MORY ALLO" .memdump | grep -v "MEMORY ALLOCATED : 0" ; exit 0)
@($(CHECKER) ./xpath2 test3.xml '//discarded' discarded > xpath2.tmp ; diff xpath2.tmp xpath2.res ; rm xpath2.tmp)
@(grep "MORY ALLO" .memdump | grep -v "MEMORY ALLOCATED : 0" ; exit 0)
- @($(CHECKER) ././xpath1 test3.xml '//child2' > xpath1.tmp ; diff xpath1.tmp xpath1.res ; rm xpath1.tmp)
+ @($(CHECKER) ./reader1 test2.xml > reader1.tmp ; diff reader1.tmp reader1.res ; rm reader1.tmp)
@(grep "MORY ALLO" .memdump | grep -v "MEMORY ALLOCATED : 0" ; exit 0)
- @($(CHECKER) ./parse3)
+ @($(CHECKER) ./reader4 test1.xml test2.xml test3.xml > reader4.tmp ; diff reader4.tmp reader4.res ; rm reader4.tmp)
@(grep "MORY ALLO" .memdump | grep -v "MEMORY ALLOCATED : 0" ; exit 0)
- @($(CHECKER) ./io2 > io2.tmp ; diff io2.tmp io2.res ; rm -f io2.tmp)
+ @($(CHECKER) ./parse2 test2.xml)
@(grep "MORY ALLO" .memdump | grep -v "MEMORY ALLOCATED : 0" ; exit 0)
- @($(CHECKER) ./tree2 > tree2.tmp ; diff tree2.tmp tree2.res ; rm tree2.tmp)
+ @($(CHECKER) ./reader2 test2.xml > reader1.tmp ; diff reader1.tmp reader1.res ; rm reader1.tmp)
@(grep "MORY ALLO" .memdump | grep -v "MEMORY ALLOCATED : 0" ; exit 0)
- @($(CHECKER) ./reader1 test2.xml > reader1.tmp ; diff reader1.tmp reader1.res ; rm reader1.tmp)
+ @($(CHECKER) ./parse3)
@(grep "MORY ALLO" .memdump | grep -v "MEMORY ALLOCATED : 0" ; exit 0)
- @($(CHECKER) ./testWriter ; for i in 1 2 3 4 ; do diff writer.xml writer$$i.res ; done ; rm writer*.res)
+ @($(CHECKER) ./reader3 > reader3.tmp ; diff reader3.tmp reader3.res ; rm reader3.tmp)
+ @(grep "MORY ALLO" .memdump | grep -v "MEMORY ALLOCATED : 0" ; exit 0)
+ @($(CHECKER) ./tree2 > tree2.tmp ; diff tree2.tmp tree2.res ; rm tree2.tmp)
@(grep "MORY ALLO" .memdump | grep -v "MEMORY ALLOCATED : 0" ; exit 0)
@($(CHECKER) ./parse4 test3.xml)
@(grep "MORY ALLO" .memdump | grep -v "MEMORY ALLOCATED : 0" ; exit 0)
- @($(CHECKER) ./reader3 > reader3.tmp ; diff reader3.tmp reader3.res ; rm reader3.tmp)
+ @($(CHECKER) ./io2 > io2.tmp ; diff io2.tmp io2.res ; rm -f io2.tmp)
+ @(grep "MORY ALLO" .memdump | grep -v "MEMORY ALLOCATED : 0" ; exit 0)
+ @($(CHECKER) ./testWriter ; for i in 1 2 3 4 ; do diff writer.xml writer$$i.res ; done ; rm writer*.res)
@(grep "MORY ALLO" .memdump | grep -v "MEMORY ALLOCATED : 0" ; exit 0)
@($(CHECKER) ./io1 > io1.tmp ; diff io1.tmp io1.res ; rm -f io1.tmp)
@(grep "MORY ALLO" .memdump | grep -v "MEMORY ALLOCATED : 0" ; exit 0)
+ @($(CHECKER) ././xpath1 test3.xml '//child2' > xpath1.tmp ; diff xpath1.tmp xpath1.res ; rm xpath1.tmp)
+ @(grep "MORY ALLO" .memdump | grep -v "MEMORY ALLOCATED : 0" ; exit 0)
@($(CHECKER) ./parse1 test1.xml)
@(grep "MORY ALLO" .memdump | grep -v "MEMORY ALLOCATED : 0" ; exit 0)
@($(CHECKER) ./tree1 test2.xml > tree1.tmp ; diff tree1.tmp tree1.res ; rm tree1.tmp)
@(grep "MORY ALLO" .memdump | grep -v "MEMORY ALLOCATED : 0" ; exit 0)
- @($(CHECKER) ./reader4 test1.xml test2.xml test3.xml > reader4.tmp ; diff reader4.tmp reader4.res ; rm reader4.tmp)
- @(grep "MORY ALLO" .memdump | grep -v "MEMORY ALLOCATED : 0" ; exit 0)
- @($(CHECKER) ./parse2 test2.xml)
- @(grep "MORY ALLO" .memdump | grep -v "MEMORY ALLOCATED : 0" ; exit 0)
diff --git a/doc/examples/Makefile.in b/doc/examples/Makefile.in
index 025ef95..b0b8f95 100644
--- a/doc/examples/Makefile.in
+++ b/doc/examples/Makefile.in
@@ -32,11 +32,11 @@ PRE_UNINSTALL = :
POST_UNINSTALL = :
build_triplet = @build@
host_triplet = @host@
-noinst_PROGRAMS = reader2$(EXEEXT) xpath2$(EXEEXT) xpath1$(EXEEXT) \
- parse3$(EXEEXT) io2$(EXEEXT) tree2$(EXEEXT) reader1$(EXEEXT) \
- testWriter$(EXEEXT) parse4$(EXEEXT) reader3$(EXEEXT) \
- io1$(EXEEXT) parse1$(EXEEXT) tree1$(EXEEXT) reader4$(EXEEXT) \
- parse2$(EXEEXT)
+noinst_PROGRAMS = xpath2$(EXEEXT) reader1$(EXEEXT) reader4$(EXEEXT) \
+ parse2$(EXEEXT) reader2$(EXEEXT) parse3$(EXEEXT) \
+ reader3$(EXEEXT) tree2$(EXEEXT) parse4$(EXEEXT) io2$(EXEEXT) \
+ testWriter$(EXEEXT) io1$(EXEEXT) xpath1$(EXEEXT) \
+ parse1$(EXEEXT) tree1$(EXEEXT)
subdir = doc/examples
DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in
ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
@@ -370,51 +370,59 @@ top_srcdir = @top_srcdir@
INCLUDES = -I$(top_builddir)/include -I$(top_srcdir)/include -I@srcdir@/include @THREAD_CFLAGS@ @Z_CFLAGS@
DEPS = $(top_builddir)/libxml2.la
LDADDS = @STATIC_BINARIES@ $(top_builddir)/libxml2.la @THREAD_LIBS@ @Z_LIBS@ $(ICONV_LIBS) -lm @WIN32_EXTRA_LIBADD@
-EXTRA_DIST = examples.xsl index.py test1.xml examples.xml test2.xml tst.xml writer.xml test3.xml tree2.res xpath1.res reader1.res reader3.res reader4.res io1.res xpath2.res io2.res tree1.res
-reader2_SOURCES = reader2.c
-reader2_LDFLAGS =
-reader2_DEPENDENCIES = $(DEPS)
-reader2_LDADD = @RDL_LIBS@ $(LDADDS)
+EXTRA_DIST = examples.xsl index.py examples.xml writer.xml test3.xml tst.xml test1.xml test2.xml io2.res xpath2.res tree1.res reader4.res io1.res tree2.res reader3.res xpath1.res reader1.res
xpath2_SOURCES = xpath2.c
xpath2_LDFLAGS =
xpath2_DEPENDENCIES = $(DEPS)
xpath2_LDADD = @RDL_LIBS@ $(LDADDS)
-xpath1_SOURCES = xpath1.c
-xpath1_LDFLAGS =
-xpath1_DEPENDENCIES = $(DEPS)
-xpath1_LDADD = @RDL_LIBS@ $(LDADDS)
+reader1_SOURCES = reader1.c
+reader1_LDFLAGS =
+reader1_DEPENDENCIES = $(DEPS)
+reader1_LDADD = @RDL_LIBS@ $(LDADDS)
+reader4_SOURCES = reader4.c
+reader4_LDFLAGS =
+reader4_DEPENDENCIES = $(DEPS)
+reader4_LDADD = @RDL_LIBS@ $(LDADDS)
+parse2_SOURCES = parse2.c
+parse2_LDFLAGS =
+parse2_DEPENDENCIES = $(DEPS)
+parse2_LDADD = @RDL_LIBS@ $(LDADDS)
+reader2_SOURCES = reader2.c
+reader2_LDFLAGS =
+reader2_DEPENDENCIES = $(DEPS)
+reader2_LDADD = @RDL_LIBS@ $(LDADDS)
parse3_SOURCES = parse3.c
parse3_LDFLAGS =
parse3_DEPENDENCIES = $(DEPS)
parse3_LDADD = @RDL_LIBS@ $(LDADDS)
-io2_SOURCES = io2.c
-io2_LDFLAGS =
-io2_DEPENDENCIES = $(DEPS)
-io2_LDADD = @RDL_LIBS@ $(LDADDS)
+reader3_SOURCES = reader3.c
+reader3_LDFLAGS =
+reader3_DEPENDENCIES = $(DEPS)
+reader3_LDADD = @RDL_LIBS@ $(LDADDS)
tree2_SOURCES = tree2.c
tree2_LDFLAGS =
tree2_DEPENDENCIES = $(DEPS)
tree2_LDADD = @RDL_LIBS@ $(LDADDS)
-reader1_SOURCES = reader1.c
-reader1_LDFLAGS =
-reader1_DEPENDENCIES = $(DEPS)
-reader1_LDADD = @RDL_LIBS@ $(LDADDS)
-testWriter_SOURCES = testWriter.c
-testWriter_LDFLAGS =
-testWriter_DEPENDENCIES = $(DEPS)
-testWriter_LDADD = @RDL_LIBS@ $(LDADDS)
parse4_SOURCES = parse4.c
parse4_LDFLAGS =
parse4_DEPENDENCIES = $(DEPS)
parse4_LDADD = @RDL_LIBS@ $(LDADDS)
-reader3_SOURCES = reader3.c
-reader3_LDFLAGS =
-reader3_DEPENDENCIES = $(DEPS)
-reader3_LDADD = @RDL_LIBS@ $(LDADDS)
+io2_SOURCES = io2.c
+io2_LDFLAGS =
+io2_DEPENDENCIES = $(DEPS)
+io2_LDADD = @RDL_LIBS@ $(LDADDS)
+testWriter_SOURCES = testWriter.c
+testWriter_LDFLAGS =
+testWriter_DEPENDENCIES = $(DEPS)
+testWriter_LDADD = @RDL_LIBS@ $(LDADDS)
io1_SOURCES = io1.c
io1_LDFLAGS =
io1_DEPENDENCIES = $(DEPS)
io1_LDADD = @RDL_LIBS@ $(LDADDS)
+xpath1_SOURCES = xpath1.c
+xpath1_LDFLAGS =
+xpath1_DEPENDENCIES = $(DEPS)
+xpath1_LDADD = @RDL_LIBS@ $(LDADDS)
parse1_SOURCES = parse1.c
parse1_LDFLAGS =
parse1_DEPENDENCIES = $(DEPS)
@@ -423,14 +431,6 @@ tree1_SOURCES = tree1.c
tree1_LDFLAGS =
tree1_DEPENDENCIES = $(DEPS)
tree1_LDADD = @RDL_LIBS@ $(LDADDS)
-reader4_SOURCES = reader4.c
-reader4_LDFLAGS =
-reader4_DEPENDENCIES = $(DEPS)
-reader4_LDADD = @RDL_LIBS@ $(LDADDS)
-parse2_SOURCES = parse2.c
-parse2_LDFLAGS =
-parse2_DEPENDENCIES = $(DEPS)
-parse2_LDADD = @RDL_LIBS@ $(LDADDS)
all: all-am
.SUFFIXES:
@@ -761,36 +761,36 @@ valgrind:
tests: $(noinst_PROGRAMS)
@(echo '## examples regression tests')
@(echo > .memdump)
- @($(CHECKER) ./reader2 test2.xml > reader1.tmp ; diff reader1.tmp reader1.res ; rm reader1.tmp)
- @(grep "MORY ALLO" .memdump | grep -v "MEMORY ALLOCATED : 0" ; exit 0)
@($(CHECKER) ./xpath2 test3.xml '//discarded' discarded > xpath2.tmp ; diff xpath2.tmp xpath2.res ; rm xpath2.tmp)
@(grep "MORY ALLO" .memdump | grep -v "MEMORY ALLOCATED : 0" ; exit 0)
- @($(CHECKER) ././xpath1 test3.xml '//child2' > xpath1.tmp ; diff xpath1.tmp xpath1.res ; rm xpath1.tmp)
+ @($(CHECKER) ./reader1 test2.xml > reader1.tmp ; diff reader1.tmp reader1.res ; rm reader1.tmp)
@(grep "MORY ALLO" .memdump | grep -v "MEMORY ALLOCATED : 0" ; exit 0)
- @($(CHECKER) ./parse3)
+ @($(CHECKER) ./reader4 test1.xml test2.xml test3.xml > reader4.tmp ; diff reader4.tmp reader4.res ; rm reader4.tmp)
@(grep "MORY ALLO" .memdump | grep -v "MEMORY ALLOCATED : 0" ; exit 0)
- @($(CHECKER) ./io2 > io2.tmp ; diff io2.tmp io2.res ; rm -f io2.tmp)
+ @($(CHECKER) ./parse2 test2.xml)
@(grep "MORY ALLO" .memdump | grep -v "MEMORY ALLOCATED : 0" ; exit 0)
- @($(CHECKER) ./tree2 > tree2.tmp ; diff tree2.tmp tree2.res ; rm tree2.tmp)
+ @($(CHECKER) ./reader2 test2.xml > reader1.tmp ; diff reader1.tmp reader1.res ; rm reader1.tmp)
@(grep "MORY ALLO" .memdump | grep -v "MEMORY ALLOCATED : 0" ; exit 0)
- @($(CHECKER) ./reader1 test2.xml > reader1.tmp ; diff reader1.tmp reader1.res ; rm reader1.tmp)
+ @($(CHECKER) ./parse3)
@(grep "MORY ALLO" .memdump | grep -v "MEMORY ALLOCATED : 0" ; exit 0)
- @($(CHECKER) ./testWriter ; for i in 1 2 3 4 ; do diff writer.xml writer$$i.res ; done ; rm writer*.res)
+ @($(CHECKER) ./reader3 > reader3.tmp ; diff reader3.tmp reader3.res ; rm reader3.tmp)
+ @(grep "MORY ALLO" .memdump | grep -v "MEMORY ALLOCATED : 0" ; exit 0)
+ @($(CHECKER) ./tree2 > tree2.tmp ; diff tree2.tmp tree2.res ; rm tree2.tmp)
@(grep "MORY ALLO" .memdump | grep -v "MEMORY ALLOCATED : 0" ; exit 0)
@($(CHECKER) ./parse4 test3.xml)
@(grep "MORY ALLO" .memdump | grep -v "MEMORY ALLOCATED : 0" ; exit 0)
- @($(CHECKER) ./reader3 > reader3.tmp ; diff reader3.tmp reader3.res ; rm reader3.tmp)
+ @($(CHECKER) ./io2 > io2.tmp ; diff io2.tmp io2.res ; rm -f io2.tmp)
+ @(grep "MORY ALLO" .memdump | grep -v "MEMORY ALLOCATED : 0" ; exit 0)
+ @($(CHECKER) ./testWriter ; for i in 1 2 3 4 ; do diff writer.xml writer$$i.res ; done ; rm writer*.res)
@(grep "MORY ALLO" .memdump | grep -v "MEMORY ALLOCATED : 0" ; exit 0)
@($(CHECKER) ./io1 > io1.tmp ; diff io1.tmp io1.res ; rm -f io1.tmp)
@(grep "MORY ALLO" .memdump | grep -v "MEMORY ALLOCATED : 0" ; exit 0)
+ @($(CHECKER) ././xpath1 test3.xml '//child2' > xpath1.tmp ; diff xpath1.tmp xpath1.res ; rm xpath1.tmp)
+ @(grep "MORY ALLO" .memdump | grep -v "MEMORY ALLOCATED : 0" ; exit 0)
@($(CHECKER) ./parse1 test1.xml)
@(grep "MORY ALLO" .memdump | grep -v "MEMORY ALLOCATED : 0" ; exit 0)
@($(CHECKER) ./tree1 test2.xml > tree1.tmp ; diff tree1.tmp tree1.res ; rm tree1.tmp)
@(grep "MORY ALLO" .memdump | grep -v "MEMORY ALLOCATED : 0" ; exit 0)
- @($(CHECKER) ./reader4 test1.xml test2.xml test3.xml > reader4.tmp ; diff reader4.tmp reader4.res ; rm reader4.tmp)
- @(grep "MORY ALLO" .memdump | grep -v "MEMORY ALLOCATED : 0" ; exit 0)
- @($(CHECKER) ./parse2 test2.xml)
- @(grep "MORY ALLO" .memdump | grep -v "MEMORY ALLOCATED : 0" ; exit 0)
# Tell versions [3.59,3.63) of GNU make to not export all variables.
# Otherwise a system limit (for SysV at least) may be exceeded.
.NOEXPORT:
diff --git a/doc/html/libxml-parser.html b/doc/html/libxml-parser.html
index 82dbf95..83db4d9 100644
--- a/doc/html/libxml-parser.html
+++ b/doc/html/libxml-parser.html
@@ -285,6 +285,7 @@ void <a href="#xmlParserInputDeallocate">xmlParserInputDeallocate</a> (<a href="
<a name="XML_PARSE_OLD10" id="XML_PARSE_OLD10">XML_PARSE_OLD10</a> = 131072 : parse using XML-1.0 before update 5
<a name="XML_PARSE_NOBASEFIX" id="XML_PARSE_NOBASEFIX">XML_PARSE_NOBASEFIX</a> = 262144 : do not fixup XINCLUDE xml:base uris
<a name="XML_PARSE_HUGE" id="XML_PARSE_HUGE">XML_PARSE_HUGE</a> = 524288 : relax any hardcoded limit from the parser
+ <a name="XML_PARSE_OLDSAX" id="XML_PARSE_OLDSAX">XML_PARSE_OLDSAX</a> = 1048576 : parse using SAX2 interface from before 2.7.0
}
</pre><h3><a name="xmlSAXHandlerV1" id="xmlSAXHandlerV1">Structure xmlSAXHandlerV1</a></h3><pre class="programlisting">Structure xmlSAXHandlerV1<br />struct _xmlSAXHandlerV1 {
<a href="libxml-parser.html#internalSubsetSAXFunc">internalSubsetSAXFunc</a> internalSubset
diff --git a/doc/html/libxml-parserInternals.html b/doc/html/libxml-parserInternals.html
index ad1fb8e..5c155db 100644
--- a/doc/html/libxml-parserInternals.html
+++ b/doc/html/libxml-parserInternals.html
@@ -10,7 +10,7 @@ A:link, A:visited, A:active { text-decoration: underline }
</style><style type="text/css">
div.deprecated pre.programlisting {border-style: double;border-color:red}
pre.programlisting {border-style: double;background: #EECFA1}
- </style><title>Module parserInternals from libxml2</title></head><body bgcolor="#8b7765" text="#000000" link="#a06060" vlink="#000000"><table border="0" width="100%" cellpadding="5" cellspacing="0" align="center"><tr><td width="120"><a href="http://swpat.ffii.org/"><img src="../epatents.png" alt="Action against software patents" /></a></td><td width="180"><a href="http://www.gnome.org/"><img src="../gnome2.png" alt="Gnome2 Logo" /></a><a href="http://www.w3.org/Status"><img src="../w3c.png" alt="W3C Logo" /></a><a href="http://www.redhat.com/"><img src="../redhat.gif" alt="Red Hat Logo" /></a><div align="left"><a href="http://xmlsoft.org/"><img src="../Libxml2-Logo-180x168.gif" alt="Made with Libxml2 Logo" /></a></div></td><td><table border="0" width="90%" cellpadding="2" cellspacing="0" align="center" bgcolor="#000000"><tr><td><table width="100%" border="0" cellspacing="1" cellpadding="3" bgcolor="#fffacd"><tr><td align="center"><h1></h1><h2>Module parserInternals from libxml2</h2></td></tr></table></td></tr></table></td></tr></table><table border="0" cellpadding="4" cellspacing="0" width="100%" align="center"><tr><td bgcolor="#8b7765"><table border="0" cellspacing="0" cellpadding="2" width="100%"><tr><td valign="top" width="200" bgcolor="#8b7765"><table border="0" cellspacing="0" cellpadding="1" width="100%" bgcolor="#000000"><tr><td><table width="100%" border="0" cellspacing="1" cellpadding="3"><tr><td colspan="1" bgcolor="#eecfa1" align="center"><center><b>API Menu</b></center></td></tr><tr><td bgcolor="#fffacd"><form action="../search.php" enctype="application/x-www-form-urlencoded" method="get"><input name="query" type="text" size="20" value="" /><input name="submit" type="submit" value="Search ..." /></form><ul><li><a style="font-weight:bold" href="../index.html">Main Menu</a></li><li><a style="font-weight:bold" href="../docs.html">Developer Menu</a></li><li><a style="font-weight:bold" href="../examples/index.html">Code Examples</a></li><li><a style="font-weight:bold" href="index.html">API Menu</a></li><li><a href="libxml-parser.html">Parser API</a></li><li><a href="libxml-tree.html">Tree API</a></li><li><a href="libxml-xmlreader.html">Reader API</a></li><li><a href="../guidelines.html">XML Guidelines</a></li><li><a href="../ChangeLog.html">ChangeLog</a></li></ul></td></tr></table><table width="100%" border="0" cellspacing="1" cellpadding="3"><tr><td colspan="1" bgcolor="#eecfa1" align="center"><center><b>API Indexes</b></center></td></tr><tr><td bgcolor="#fffacd"><ul><li><a href="../APIchunk0.html">Alphabetic</a></li><li><a href="../APIconstructors.html">Constructors</a></li><li><a href="../APIfunctions.html">Functions/Types</a></li><li><a href="../APIfiles.html">Modules</a></li><li><a href="../APIsymbols.html">Symbols</a></li></ul></td></tr></table><table width="100%" border="0" cellspacing="1" cellpadding="3"><tr><td colspan="1" bgcolor="#eecfa1" align="center"><center><b>Related links</b></center></td></tr><tr><td bgcolor="#fffacd"><ul><li><a href="http://mail.gnome.org/archives/xml/">Mail archive</a></li><li><a href="http://xmlsoft.org/XSLT/">XSLT libxslt</a></li><li><a href="http://phd.cs.unibo.it/gdome2/">DOM gdome2</a></li><li><a href="http://www.aleksey.com/xmlsec/">XML-DSig xmlsec</a></li><li><a href="ftp://xmlsoft.org/">FTP</a></li><li><a href="http://www.zlatkovic.com/projects/libxml/">Windows binaries</a></li><li><a href="http://www.blastwave.org/packages.php/libxml2">Solaris binaries</a></li><li><a href="http://www.explain.com.au/oss/libxml2xslt.html">MacOsX binaries</a></li><li><a href="http://codespeak.net/lxml/">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"><table class="navigation" width="100%" summary="Navigation header" cellpadding="2" cellspacing="2"><tr valign="middle"><td><a accesskey="p" href="libxml-parser.html"><img src="left.png" width="24" height="24" border="0" alt="Prev" /></a></td><th align="left"><a href="libxml-parser.html">parser</a></th><td><a accesskey="u" href="index.html"><img src="up.png" width="24" height="24" border="0" alt="Up" /></a></td><th align="left"><a href="index.html">API documentation</a></th><td><a accesskey="h" href="../index.html"><img src="home.png" width="24" height="24" border="0" alt="Home" /></a></td><th align="center"><a href="../index.html">The XML C parser and toolkit of Gnome</a></th><th align="right"><a href="libxml-pattern.html">pattern</a></th><td><a accesskey="n" href="libxml-pattern.html"><img src="right.png" width="24" height="24" border="0" alt="Next" /></a></td></tr></table><p>this module exports a number of internal parsing routines they are not really all intended for applications but can prove useful doing low level processing. </p><h2>Table of Contents</h2><pre class="programlisting">#define <a href="#INPUT_CHUNK">INPUT_CHUNK</a></pre><pre class="programlisting">#define <a href="#IS_ASCII_DIGIT">IS_ASCII_DIGIT</a></pre><pre class="programlisting">#define <a href="#IS_ASCII_LETTER">IS_ASCII_LETTER</a></pre><pre class="programlisting">#define <a href="#IS_BASECHAR">IS_BASECHAR</a></pre><pre class="programlisting">#define <a href="#IS_BLANK">IS_BLANK</a></pre><pre class="programlisting">#define <a href="#IS_BLANK_CH">IS_BLANK_CH</a></pre><pre class="programlisting">#define <a href="#IS_BYTE_CHAR">IS_BYTE_CHAR</a></pre><pre class="programlisting">#define <a href="#IS_CHAR">IS_CHAR</a></pre><pre class="programlisting">#define <a href="#IS_CHAR_CH">IS_CHAR_CH</a></pre><pre class="programlisting">#define <a href="#IS_COMBINING">IS_COMBINING</a></pre><pre class="programlisting">#define <a href="#IS_COMBINING_CH">IS_COMBINING_CH</a></pre><pre class="programlisting">#define <a href="#IS_DIGIT">IS_DIGIT</a></pre><pre class="programlisting">#define <a href="#IS_DIGIT_CH">IS_DIGIT_CH</a></pre><pre class="programlisting">#define <a href="#IS_EXTENDER">IS_EXTENDER</a></pre><pre class="programlisting">#define <a href="#IS_EXTENDER_CH">IS_EXTENDER_CH</a></pre><pre class="programlisting">#define <a href="#IS_IDEOGRAPHIC">IS_IDEOGRAPHIC</a></pre><pre class="programlisting">#define <a href="#IS_LETTER">IS_LETTER</a></pre><pre class="programlisting">#define <a href="#IS_LETTER_CH">IS_LETTER_CH</a></pre><pre class="programlisting">#define <a href="#IS_PUBIDCHAR">IS_PUBIDCHAR</a></pre><pre class="programlisting">#define <a href="#IS_PUBIDCHAR_CH">IS_PUBIDCHAR_CH</a></pre><pre class="programlisting">#define <a href="#MOVETO_ENDTAG">MOVETO_ENDTAG</a></pre><pre class="programlisting">#define <a href="#MOVETO_STARTTAG">MOVETO_STARTTAG</a></pre><pre class="programlisting">#define <a href="#SKIP_EOL">SKIP_EOL</a></pre><pre class="programlisting">#define <a href="#XML_MAX_NAMELEN">XML_MAX_NAMELEN</a></pre><pre class="programlisting">#define <a href="#XML_SUBSTITUTE_BOTH">XML_SUBSTITUTE_BOTH</a></pre><pre class="programlisting">#define <a href="#XML_SUBSTITUTE_NONE">XML_SUBSTITUTE_NONE</a></pre><pre class="programlisting">#define <a href="#XML_SUBSTITUTE_PEREF">XML_SUBSTITUTE_PEREF</a></pre><pre class="programlisting">#define <a href="#XML_SUBSTITUTE_REF">XML_SUBSTITUTE_REF</a></pre><pre class="programlisting"><a href="libxml-HTMLparser.html#htmlParserCtxtPtr">htmlParserCtxtPtr</a> <a href="#htmlCreateFileParserCtxt">htmlCreateFileParserCtxt</a> (const char * filename, <br /> const char * encoding)</pre>
+ </style><title>Module parserInternals from libxml2</title></head><body bgcolor="#8b7765" text="#000000" link="#a06060" vlink="#000000"><table border="0" width="100%" cellpadding="5" cellspacing="0" align="center"><tr><td width="120"><a href="http://swpat.ffii.org/"><img src="../epatents.png" alt="Action against software patents" /></a></td><td width="180"><a href="http://www.gnome.org/"><img src="../gnome2.png" alt="Gnome2 Logo" /></a><a href="http://www.w3.org/Status"><img src="../w3c.png" alt="W3C Logo" /></a><a href="http://www.redhat.com/"><img src="../redhat.gif" alt="Red Hat Logo" /></a><div align="left"><a href="http://xmlsoft.org/"><img src="../Libxml2-Logo-180x168.gif" alt="Made with Libxml2 Logo" /></a></div></td><td><table border="0" width="90%" cellpadding="2" cellspacing="0" align="center" bgcolor="#000000"><tr><td><table width="100%" border="0" cellspacing="1" cellpadding="3" bgcolor="#fffacd"><tr><td align="center"><h1></h1><h2>Module parserInternals from libxml2</h2></td></tr></table></td></tr></table></td></tr></table><table border="0" cellpadding="4" cellspacing="0" width="100%" align="center"><tr><td bgcolor="#8b7765"><table border="0" cellspacing="0" cellpadding="2" width="100%"><tr><td valign="top" width="200" bgcolor="#8b7765"><table border="0" cellspacing="0" cellpadding="1" width="100%" bgcolor="#000000"><tr><td><table width="100%" border="0" cellspacing="1" cellpadding="3"><tr><td colspan="1" bgcolor="#eecfa1" align="center"><center><b>API Menu</b></center></td></tr><tr><td bgcolor="#fffacd"><form action="../search.php" enctype="application/x-www-form-urlencoded" method="get"><input name="query" type="text" size="20" value="" /><input name="submit" type="submit" value="Search ..." /></form><ul><li><a style="font-weight:bold" href="../index.html">Main Menu</a></li><li><a style="font-weight:bold" href="../docs.html">Developer Menu</a></li><li><a style="font-weight:bold" href="../examples/index.html">Code Examples</a></li><li><a style="font-weight:bold" href="index.html">API Menu</a></li><li><a href="libxml-parser.html">Parser API</a></li><li><a href="libxml-tree.html">Tree API</a></li><li><a href="libxml-xmlreader.html">Reader API</a></li><li><a href="../guidelines.html">XML Guidelines</a></li><li><a href="../ChangeLog.html">ChangeLog</a></li></ul></td></tr></table><table width="100%" border="0" cellspacing="1" cellpadding="3"><tr><td colspan="1" bgcolor="#eecfa1" align="center"><center><b>API Indexes</b></center></td></tr><tr><td bgcolor="#fffacd"><ul><li><a href="../APIchunk0.html">Alphabetic</a></li><li><a href="../APIconstructors.html">Constructors</a></li><li><a href="../APIfunctions.html">Functions/Types</a></li><li><a href="../APIfiles.html">Modules</a></li><li><a href="../APIsymbols.html">Symbols</a></li></ul></td></tr></table><table width="100%" border="0" cellspacing="1" cellpadding="3"><tr><td colspan="1" bgcolor="#eecfa1" align="center"><center><b>Related links</b></center></td></tr><tr><td bgcolor="#fffacd"><ul><li><a href="http://mail.gnome.org/archives/xml/">Mail archive</a></li><li><a href="http://xmlsoft.org/XSLT/">XSLT libxslt</a></li><li><a href="http://phd.cs.unibo.it/gdome2/">DOM gdome2</a></li><li><a href="http://www.aleksey.com/xmlsec/">XML-DSig xmlsec</a></li><li><a href="ftp://xmlsoft.org/">FTP</a></li><li><a href="http://www.zlatkovic.com/projects/libxml/">Windows binaries</a></li><li><a href="http://www.blastwave.org/packages.php/libxml2">Solaris binaries</a></li><li><a href="http://www.explain.com.au/oss/libxml2xslt.html">MacOsX binaries</a></li><li><a href="http://codespeak.net/lxml/">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"><table class="navigation" width="100%" summary="Navigation header" cellpadding="2" cellspacing="2"><tr valign="middle"><td><a accesskey="p" href="libxml-parser.html"><img src="left.png" width="24" height="24" border="0" alt="Prev" /></a></td><th align="left"><a href="libxml-parser.html">parser</a></th><td><a accesskey="u" href="index.html"><img src="up.png" width="24" height="24" border="0" alt="Up" /></a></td><th align="left"><a href="index.html">API documentation</a></th><td><a accesskey="h" href="../index.html"><img src="home.png" width="24" height="24" border="0" alt="Home" /></a></td><th align="center"><a href="../index.html">The XML C parser and toolkit of Gnome</a></th><th align="right"><a href="libxml-pattern.html">pattern</a></th><td><a accesskey="n" href="libxml-pattern.html"><img src="right.png" width="24" height="24" border="0" alt="Next" /></a></td></tr></table><p>this module exports a number of internal parsing routines they are not really all intended for applications but can prove useful doing low level processing. </p><h2>Table of Contents</h2><pre class="programlisting">#define <a href="#INPUT_CHUNK">INPUT_CHUNK</a></pre><pre class="programlisting">#define <a href="#IS_ASCII_DIGIT">IS_ASCII_DIGIT</a></pre><pre class="programlisting">#define <a href="#IS_ASCII_LETTER">IS_ASCII_LETTER</a></pre><pre class="programlisting">#define <a href="#IS_BASECHAR">IS_BASECHAR</a></pre><pre class="programlisting">#define <a href="#IS_BLANK">IS_BLANK</a></pre><pre class="programlisting">#define <a href="#IS_BLANK_CH">IS_BLANK_CH</a></pre><pre class="programlisting">#define <a href="#IS_BYTE_CHAR">IS_BYTE_CHAR</a></pre><pre class="programlisting">#define <a href="#IS_CHAR">IS_CHAR</a></pre><pre class="programlisting">#define <a href="#IS_CHAR_CH">IS_CHAR_CH</a></pre><pre class="programlisting">#define <a href="#IS_COMBINING">IS_COMBINING</a></pre><pre class="programlisting">#define <a href="#IS_COMBINING_CH">IS_COMBINING_CH</a></pre><pre class="programlisting">#define <a href="#IS_DIGIT">IS_DIGIT</a></pre><pre class="programlisting">#define <a href="#IS_DIGIT_CH">IS_DIGIT_CH</a></pre><pre class="programlisting">#define <a href="#IS_EXTENDER">IS_EXTENDER</a></pre><pre class="programlisting">#define <a href="#IS_EXTENDER_CH">IS_EXTENDER_CH</a></pre><pre class="programlisting">#define <a href="#IS_IDEOGRAPHIC">IS_IDEOGRAPHIC</a></pre><pre class="programlisting">#define <a href="#IS_LETTER">IS_LETTER</a></pre><pre class="programlisting">#define <a href="#IS_LETTER_CH">IS_LETTER_CH</a></pre><pre class="programlisting">#define <a href="#IS_PUBIDCHAR">IS_PUBIDCHAR</a></pre><pre class="programlisting">#define <a href="#IS_PUBIDCHAR_CH">IS_PUBIDCHAR_CH</a></pre><pre class="programlisting">#define <a href="#MOVETO_ENDTAG">MOVETO_ENDTAG</a></pre><pre class="programlisting">#define <a href="#MOVETO_STARTTAG">MOVETO_STARTTAG</a></pre><pre class="programlisting">#define <a href="#SKIP_EOL">SKIP_EOL</a></pre><pre class="programlisting">#define <a href="#XML_MAX_NAMELEN">XML_MAX_NAMELEN</a></pre><pre class="programlisting">#define <a href="#XML_MAX_TEXT_LENGTH">XML_MAX_TEXT_LENGTH</a></pre><pre class="programlisting">#define <a href="#XML_SUBSTITUTE_BOTH">XML_SUBSTITUTE_BOTH</a></pre><pre class="programlisting">#define <a href="#XML_SUBSTITUTE_NONE">XML_SUBSTITUTE_NONE</a></pre><pre class="programlisting">#define <a href="#XML_SUBSTITUTE_PEREF">XML_SUBSTITUTE_PEREF</a></pre><pre class="programlisting">#define <a href="#XML_SUBSTITUTE_REF">XML_SUBSTITUTE_REF</a></pre><pre class="programlisting"><a href="libxml-HTMLparser.html#htmlParserCtxtPtr">htmlParserCtxtPtr</a> <a href="#htmlCreateFileParserCtxt">htmlCreateFileParserCtxt</a> (const char * filename, <br /> const char * encoding)</pre>
<pre class="programlisting">void <a href="#htmlInitAutoClose">htmlInitAutoClose</a> (void)</pre>
<pre class="programlisting"><a href="libxml-tree.html#xmlParserInputPtr">xmlParserInputPtr</a> <a href="#inputPop">inputPop</a> (<a href="libxml-tree.html#xmlParserCtxtPtr">xmlParserCtxtPtr</a> ctxt)</pre>
<pre class="programlisting">int <a href="#inputPush">inputPush</a> (<a href="libxml-tree.html#xmlParserCtxtPtr">xmlParserCtxtPtr</a> ctxt, <br /> <a href="libxml-tree.html#xmlParserInputPtr">xmlParserInputPtr</a> value)</pre>
@@ -128,6 +128,7 @@ void <a href="#xmlEntityReferenceFunc">xmlEntityReferenceFunc</a> (<a href="lib
<h3><a name="MOVETO_STARTTAG" id="MOVETO_STARTTAG"></a>Macro: MOVETO_STARTTAG</h3><pre>#define MOVETO_STARTTAG</pre><p>Skips to the next '&lt;' char.</p>
<h3><a name="SKIP_EOL" id="SKIP_EOL"></a>Macro: SKIP_EOL</h3><pre>#define SKIP_EOL</pre><p>Skips the end of line chars.</p>
<h3><a name="XML_MAX_NAMELEN" id="XML_MAX_NAMELEN"></a>Macro: XML_MAX_NAMELEN</h3><pre>#define XML_MAX_NAMELEN</pre><p>Identifiers can be longer, but this will be more costly at runtime.</p>
+<h3><a name="XML_MAX_TEXT_LENGTH" id="XML_MAX_TEXT_LENGTH"></a>Macro: XML_MAX_TEXT_LENGTH</h3><pre>#define XML_MAX_TEXT_LENGTH</pre><p>Maximum size allowed for a single text node when building a tree. This is not a limitation of the parser but a safety boundary feature, use <a href="libxml-parser.html#XML_PARSE_HUGE">XML_PARSE_HUGE</a> option to override it.</p>
<h3><a name="XML_SUBSTITUTE_BOTH" id="XML_SUBSTITUTE_BOTH"></a>Macro: XML_SUBSTITUTE_BOTH</h3><pre>#define XML_SUBSTITUTE_BOTH</pre><p>Both general and parameter entities need to be substituted.</p>
<h3><a name="XML_SUBSTITUTE_NONE" id="XML_SUBSTITUTE_NONE"></a>Macro: XML_SUBSTITUTE_NONE</h3><pre>#define XML_SUBSTITUTE_NONE</pre><p>If no entities need to be substituted.</p>
<h3><a name="XML_SUBSTITUTE_PEREF" id="XML_SUBSTITUTE_PEREF"></a>Macro: XML_SUBSTITUTE_PEREF</h3><pre>#define XML_SUBSTITUTE_PEREF</pre><p>Whether parameter entities need to be substituted.</p>
diff --git a/doc/html/libxml-tree.html b/doc/html/libxml-tree.html
index ab57566..87c415c 100644
--- a/doc/html/libxml-tree.html
+++ b/doc/html/libxml-tree.html
@@ -87,6 +87,7 @@ A:link, A:visited, A:active { text-decoration: underline }
<pre class="programlisting">void <a href="#xmlBufferWriteChar">xmlBufferWriteChar</a> (<a href="libxml-tree.html#xmlBufferPtr">xmlBufferPtr</a> buf, <br /> const char * string)</pre>
<pre class="programlisting">void <a href="#xmlBufferWriteQuotedString">xmlBufferWriteQuotedString</a> (<a href="libxml-tree.html#xmlBufferPtr">xmlBufferPtr</a> buf, <br /> const <a href="libxml-xmlstring.html#xmlChar">xmlChar</a> * string)</pre>
<pre class="programlisting"><a href="libxml-xmlstring.html#xmlChar">xmlChar</a> * <a href="#xmlBuildQName">xmlBuildQName</a> (const <a href="libxml-xmlstring.html#xmlChar">xmlChar</a> * ncname, <br /> const <a href="libxml-xmlstring.html#xmlChar">xmlChar</a> * prefix, <br /> <a href="libxml-xmlstring.html#xmlChar">xmlChar</a> * memory, <br /> int len)</pre>
+<pre class="programlisting">unsigned long <a href="#xmlChildElementCount">xmlChildElementCount</a> (<a href="libxml-tree.html#xmlNodePtr">xmlNodePtr</a> parent)</pre>
<pre class="programlisting"><a href="libxml-tree.html#xmlDocPtr">xmlDocPtr</a> <a href="#xmlCopyDoc">xmlCopyDoc</a> (<a href="libxml-tree.html#xmlDocPtr">xmlDocPtr</a> doc, <br /> int recursive)</pre>
<pre class="programlisting"><a href="libxml-tree.html#xmlDtdPtr">xmlDtdPtr</a> <a href="#xmlCopyDtd">xmlCopyDtd</a> (<a href="libxml-tree.html#xmlDtdPtr">xmlDtdPtr</a> dtd)</pre>
<pre class="programlisting"><a href="libxml-tree.html#xmlNsPtr">xmlNsPtr</a> <a href="#xmlCopyNamespace">xmlCopyNamespace</a> (<a href="libxml-tree.html#xmlNsPtr">xmlNsPtr</a> cur)</pre>
@@ -116,6 +117,7 @@ A:link, A:visited, A:active { text-decoration: underline }
<pre class="programlisting"><a href="libxml-tree.html#xmlNodePtr">xmlNodePtr</a> <a href="#xmlDocGetRootElement">xmlDocGetRootElement</a> (<a href="libxml-tree.html#xmlDocPtr">xmlDocPtr</a> doc)</pre>
<pre class="programlisting"><a href="libxml-tree.html#xmlNodePtr">xmlNodePtr</a> <a href="#xmlDocSetRootElement">xmlDocSetRootElement</a> (<a href="libxml-tree.html#xmlDocPtr">xmlDocPtr</a> doc, <br /> <a href="libxml-tree.html#xmlNodePtr">xmlNodePtr</a> root)</pre>
<pre class="programlisting">void <a href="#xmlElemDump">xmlElemDump</a> (FILE * f, <br /> <a href="libxml-tree.html#xmlDocPtr">xmlDocPtr</a> doc, <br /> <a href="libxml-tree.html#xmlNodePtr">xmlNodePtr</a> cur)</pre>
+<pre class="programlisting"><a href="libxml-tree.html#xmlNodePtr">xmlNodePtr</a> <a href="#xmlFirstElementChild">xmlFirstElementChild</a> (<a href="libxml-tree.html#xmlNodePtr">xmlNodePtr</a> parent)</pre>
<pre class="programlisting">void <a href="#xmlFreeDoc">xmlFreeDoc</a> (<a href="libxml-tree.html#xmlDocPtr">xmlDocPtr</a> cur)</pre>
<pre class="programlisting">void <a href="#xmlFreeDtd">xmlFreeDtd</a> (<a href="libxml-tree.html#xmlDtdPtr">xmlDtdPtr</a> cur)</pre>
<pre class="programlisting">void <a href="#xmlFreeNode">xmlFreeNode</a> (<a href="libxml-tree.html#xmlNodePtr">xmlNodePtr</a> cur)</pre>
@@ -139,6 +141,7 @@ A:link, A:visited, A:active { text-decoration: underline }
<pre class="programlisting"><a href="libxml-tree.html#xmlAttrPtr">xmlAttrPtr</a> <a href="#xmlHasProp">xmlHasProp</a> (<a href="libxml-tree.html#xmlNodePtr">xmlNodePtr</a> node, <br /> const <a href="libxml-xmlstring.html#xmlChar">xmlChar</a> * name)</pre>
<pre class="programlisting">int <a href="#xmlIsBlankNode">xmlIsBlankNode</a> (<a href="libxml-tree.html#xmlNodePtr">xmlNodePtr</a> node)</pre>
<pre class="programlisting">int <a href="#xmlIsXHTML">xmlIsXHTML</a> (const <a href="libxml-xmlstring.html#xmlChar">xmlChar</a> * systemID, <br /> const <a href="libxml-xmlstring.html#xmlChar">xmlChar</a> * publicID)</pre>
+<pre class="programlisting"><a href="libxml-tree.html#xmlNodePtr">xmlNodePtr</a> <a href="#xmlLastElementChild">xmlLastElementChild</a> (<a href="libxml-tree.html#xmlNodePtr">xmlNodePtr</a> parent)</pre>
<pre class="programlisting"><a href="libxml-tree.html#xmlNodePtr">xmlNodePtr</a> <a href="#xmlNewCDataBlock">xmlNewCDataBlock</a> (<a href="libxml-tree.html#xmlDocPtr">xmlDocPtr</a> doc, <br /> const <a href="libxml-xmlstring.html#xmlChar">xmlChar</a> * content, <br /> int len)</pre>
<pre class="programlisting"><a href="libxml-tree.html#xmlNodePtr">xmlNodePtr</a> <a href="#xmlNewCharRef">xmlNewCharRef</a> (<a href="libxml-tree.html#xmlDocPtr">xmlDocPtr</a> doc, <br /> const <a href="libxml-xmlstring.html#xmlChar">xmlChar</a> * name)</pre>
<pre class="programlisting"><a href="libxml-tree.html#xmlNodePtr">xmlNodePtr</a> <a href="#xmlNewChild">xmlNewChild</a> (<a href="libxml-tree.html#xmlNodePtr">xmlNodePtr</a> parent, <br /> <a href="libxml-tree.html#xmlNsPtr">xmlNsPtr</a> ns, <br /> const <a href="libxml-xmlstring.html#xmlChar">xmlChar</a> * name, <br /> const <a href="libxml-xmlstring.html#xmlChar">xmlChar</a> * content)</pre>
@@ -166,6 +169,7 @@ A:link, A:visited, A:active { text-decoration: underline }
<pre class="programlisting"><a href="libxml-tree.html#xmlNodePtr">xmlNodePtr</a> <a href="#xmlNewText">xmlNewText</a> (const <a href="libxml-xmlstring.html#xmlChar">xmlChar</a> * content)</pre>
<pre class="programlisting"><a href="libxml-tree.html#xmlNodePtr">xmlNodePtr</a> <a href="#xmlNewTextChild">xmlNewTextChild</a> (<a href="libxml-tree.html#xmlNodePtr">xmlNodePtr</a> parent, <br /> <a href="libxml-tree.html#xmlNsPtr">xmlNsPtr</a> ns, <br /> const <a href="libxml-xmlstring.html#xmlChar">xmlChar</a> * name, <br /> const <a href="libxml-xmlstring.html#xmlChar">xmlChar</a> * content)</pre>
<pre class="programlisting"><a href="libxml-tree.html#xmlNodePtr">xmlNodePtr</a> <a href="#xmlNewTextLen">xmlNewTextLen</a> (const <a href="libxml-xmlstring.html#xmlChar">xmlChar</a> * content, <br /> int len)</pre>
+<pre class="programlisting"><a href="libxml-tree.html#xmlNodePtr">xmlNodePtr</a> <a href="#xmlNextElementSibling">xmlNextElementSibling</a> (<a href="libxml-tree.html#xmlNodePtr">xmlNodePtr</a> node)</pre>
<pre class="programlisting">void <a href="#xmlNodeAddContent">xmlNodeAddContent</a> (<a href="libxml-tree.html#xmlNodePtr">xmlNodePtr</a> cur, <br /> const <a href="libxml-xmlstring.html#xmlChar">xmlChar</a> * content)</pre>
<pre class="programlisting">void <a href="#xmlNodeAddContentLen">xmlNodeAddContentLen</a> (<a href="libxml-tree.html#xmlNodePtr">xmlNodePtr</a> cur, <br /> const <a href="libxml-xmlstring.html#xmlChar">xmlChar</a> * content, <br /> int len)</pre>
<pre class="programlisting">int <a href="#xmlNodeBufGetContent">xmlNodeBufGetContent</a> (<a href="libxml-tree.html#xmlBufferPtr">xmlBufferPtr</a> buffer, <br /> <a href="libxml-tree.html#xmlNodePtr">xmlNodePtr</a> cur)</pre>
@@ -184,6 +188,7 @@ A:link, A:visited, A:active { text-decoration: underline }
<pre class="programlisting">void <a href="#xmlNodeSetLang">xmlNodeSetLang</a> (<a href="libxml-tree.html#xmlNodePtr">xmlNodePtr</a> cur, <br /> const <a href="libxml-xmlstring.html#xmlChar">xmlChar</a> * lang)</pre>
<pre class="programlisting">void <a href="#xmlNodeSetName">xmlNodeSetName</a> (<a href="libxml-tree.html#xmlNodePtr">xmlNodePtr</a> cur, <br /> const <a href="libxml-xmlstring.html#xmlChar">xmlChar</a> * name)</pre>
<pre class="programlisting">void <a href="#xmlNodeSetSpacePreserve">xmlNodeSetSpacePreserve</a> (<a href="libxml-tree.html#xmlNodePtr">xmlNodePtr</a> cur, <br /> int val)</pre>
+<pre class="programlisting"><a href="libxml-tree.html#xmlNodePtr">xmlNodePtr</a> <a href="#xmlPreviousElementSibling">xmlPreviousElementSibling</a> (<a href="libxml-tree.html#xmlNodePtr">xmlNodePtr</a> node)</pre>
<pre class="programlisting">int <a href="#xmlReconciliateNs">xmlReconciliateNs</a> (<a href="libxml-tree.html#xmlDocPtr">xmlDocPtr</a> doc, <br /> <a href="libxml-tree.html#xmlNodePtr">xmlNodePtr</a> tree)</pre>
<pre class="programlisting">int <a href="#xmlRemoveProp">xmlRemoveProp</a> (<a href="libxml-tree.html#xmlAttrPtr">xmlAttrPtr</a> cur)</pre>
<pre class="programlisting"><a href="libxml-tree.html#xmlNodePtr">xmlNodePtr</a> <a href="#xmlReplaceNode">xmlReplaceNode</a> (<a href="libxml-tree.html#xmlNodePtr">xmlNodePtr</a> old, <br /> <a href="libxml-tree.html#xmlNodePtr">xmlNodePtr</a> cur)</pre>
@@ -681,7 +686,9 @@ A:link, A:visited, A:active { text-decoration: underline }
</pre><p>routine which manage and grows an output buffer. This one writes a quoted or double quoted #xmlChar string, checking first if it holds quote or double-quotes internally</p>
<div class="variablelist"><table border="0"><col align="left" /><tbody><tr><td><span class="term"><i><tt>buf</tt></i>:</span></td><td>the XML buffer output</td></tr><tr><td><span class="term"><i><tt>string</tt></i>:</span></td><td>the string to add</td></tr></tbody></table></div><h3><a name="xmlBuildQName" id="xmlBuildQName"></a>Function: xmlBuildQName</h3><pre class="programlisting"><a href="libxml-xmlstring.html#xmlChar">xmlChar</a> * xmlBuildQName (const <a href="libxml-xmlstring.html#xmlChar">xmlChar</a> * ncname, <br /> const <a href="libxml-xmlstring.html#xmlChar">xmlChar</a> * prefix, <br /> <a href="libxml-xmlstring.html#xmlChar">xmlChar</a> * memory, <br /> int len)<br />
</pre><p>Builds the QName @prefix:@ncname in @memory if there is enough space and prefix is not NULL nor empty, otherwise allocate a new string. If prefix is NULL or empty it returns ncname.</p>
-<div class="variablelist"><table border="0"><col align="left" /><tbody><tr><td><span class="term"><i><tt>ncname</tt></i>:</span></td><td>the Name</td></tr><tr><td><span class="term"><i><tt>prefix</tt></i>:</span></td><td>the prefix</td></tr><tr><td><span class="term"><i><tt>memory</tt></i>:</span></td><td>preallocated memory</td></tr><tr><td><span class="term"><i><tt>len</tt></i>:</span></td><td>preallocated memory length</td></tr><tr><td><span class="term"><i><tt>Returns</tt></i>:</span></td><td>the new string which must be freed by the caller if different from @memory and @ncname or NULL in case of error</td></tr></tbody></table></div><h3><a name="xmlCopyDoc" id="xmlCopyDoc"></a>Function: xmlCopyDoc</h3><pre class="programlisting"><a href="libxml-tree.html#xmlDocPtr">xmlDocPtr</a> xmlCopyDoc (<a href="libxml-tree.html#xmlDocPtr">xmlDocPtr</a> doc, <br /> int recursive)<br />
+<div class="variablelist"><table border="0"><col align="left" /><tbody><tr><td><span class="term"><i><tt>ncname</tt></i>:</span></td><td>the Name</td></tr><tr><td><span class="term"><i><tt>prefix</tt></i>:</span></td><td>the prefix</td></tr><tr><td><span class="term"><i><tt>memory</tt></i>:</span></td><td>preallocated memory</td></tr><tr><td><span class="term"><i><tt>len</tt></i>:</span></td><td>preallocated memory length</td></tr><tr><td><span class="term"><i><tt>Returns</tt></i>:</span></td><td>the new string which must be freed by the caller if different from @memory and @ncname or NULL in case of error</td></tr></tbody></table></div><h3><a name="xmlChildElementCount" id="xmlChildElementCount"></a>Function: xmlChildElementCount</h3><pre class="programlisting">unsigned long xmlChildElementCount (<a href="libxml-tree.html#xmlNodePtr">xmlNodePtr</a> parent)<br />
+</pre><p>Finds the current number of child nodes of that element which are element nodes. Note the handling of entities references is different than in the W3C DOM element traversal spec since we don't have back <a href="libxml-SAX.html#reference">reference</a> from entities content to entities references.</p>
+<div class="variablelist"><table border="0"><col align="left" /><tbody><tr><td><span class="term"><i><tt>parent</tt></i>:</span></td><td>the parent node</td></tr><tr><td><span class="term"><i><tt>Returns</tt></i>:</span></td><td>the count of element child or 0 if not available</td></tr></tbody></table></div><h3><a name="xmlCopyDoc" id="xmlCopyDoc"></a>Function: xmlCopyDoc</h3><pre class="programlisting"><a href="libxml-tree.html#xmlDocPtr">xmlDocPtr</a> xmlCopyDoc (<a href="libxml-tree.html#xmlDocPtr">xmlDocPtr</a> doc, <br /> int recursive)<br />
</pre><p>Do a copy of the document info. If recursive, the content tree will be copied too as well as DTD, namespaces and entities.</p>
<div class="variablelist"><table border="0"><col align="left" /><tbody><tr><td><span class="term"><i><tt>doc</tt></i>:</span></td><td>the document</td></tr><tr><td><span class="term"><i><tt>recursive</tt></i>:</span></td><td>if not zero do a recursive copy.</td></tr><tr><td><span class="term"><i><tt>Returns</tt></i>:</span></td><td>a new #xmlDocPtr, or NULL in case of error.</td></tr></tbody></table></div><h3><a name="xmlCopyDtd" id="xmlCopyDtd"></a>Function: xmlCopyDtd</h3><pre class="programlisting"><a href="libxml-tree.html#xmlDtdPtr">xmlDtdPtr</a> xmlCopyDtd (<a href="libxml-tree.html#xmlDtdPtr">xmlDtdPtr</a> dtd)<br />
</pre><p>Do a copy of the dtd.</p>
@@ -736,7 +743,9 @@ A:link, A:visited, A:active { text-decoration: underline }
</pre><p>Set the root element of the document (doc-&gt;children is a list containing possibly comments, PIs, etc ...).</p>
<div class="variablelist"><table border="0"><col align="left" /><tbody><tr><td><span class="term"><i><tt>doc</tt></i>:</span></td><td>the document</td></tr><tr><td><span class="term"><i><tt>root</tt></i>:</span></td><td>the new document root element, if root is NULL no action is taken, to remove a node from a document use xmlUnlinkNode(root) instead.</td></tr><tr><td><span class="term"><i><tt>Returns</tt></i>:</span></td><td>the old root element if any was found, NULL if root was NULL</td></tr></tbody></table></div><h3><a name="xmlElemDump" id="xmlElemDump"></a>Function: xmlElemDump</h3><pre class="programlisting">void xmlElemDump (FILE * f, <br /> <a href="libxml-tree.html#xmlDocPtr">xmlDocPtr</a> doc, <br /> <a href="libxml-tree.html#xmlNodePtr">xmlNodePtr</a> cur)<br />
</pre><p>Dump an XML/HTML node, recursive behaviour, children are printed too.</p>
-<div class="variablelist"><table border="0"><col align="left" /><tbody><tr><td><span class="term"><i><tt>f</tt></i>:</span></td><td>the FILE * for the output</td></tr><tr><td><span class="term"><i><tt>doc</tt></i>:</span></td><td>the document</td></tr><tr><td><span class="term"><i><tt>cur</tt></i>:</span></td><td>the current node</td></tr></tbody></table></div><h3><a name="xmlFreeDoc" id="xmlFreeDoc"></a>Function: xmlFreeDoc</h3><pre class="programlisting">void xmlFreeDoc (<a href="libxml-tree.html#xmlDocPtr">xmlDocPtr</a> cur)<br />
+<div class="variablelist"><table border="0"><col align="left" /><tbody><tr><td><span class="term"><i><tt>f</tt></i>:</span></td><td>the FILE * for the output</td></tr><tr><td><span class="term"><i><tt>doc</tt></i>:</span></td><td>the document</td></tr><tr><td><span class="term"><i><tt>cur</tt></i>:</span></td><td>the current node</td></tr></tbody></table></div><h3><a name="xmlFirstElementChild" id="xmlFirstElementChild"></a>Function: xmlFirstElementChild</h3><pre class="programlisting"><a href="libxml-tree.html#xmlNodePtr">xmlNodePtr</a> xmlFirstElementChild (<a href="libxml-tree.html#xmlNodePtr">xmlNodePtr</a> parent)<br />
+</pre><p>Finds the first child node of that element which is a Element node Note the handling of entities references is different than in the W3C DOM element traversal spec since we don't have back <a href="libxml-SAX.html#reference">reference</a> from entities content to entities references.</p>
+<div class="variablelist"><table border="0"><col align="left" /><tbody><tr><td><span class="term"><i><tt>parent</tt></i>:</span></td><td>the parent node</td></tr><tr><td><span class="term"><i><tt>Returns</tt></i>:</span></td><td>the first element child or NULL if not available</td></tr></tbody></table></div><h3><a name="xmlFreeDoc" id="xmlFreeDoc"></a>Function: xmlFreeDoc</h3><pre class="programlisting">void xmlFreeDoc (<a href="libxml-tree.html#xmlDocPtr">xmlDocPtr</a> cur)<br />
</pre><p>Free up all the structures used by a document, tree included.</p>
<div class="variablelist"><table border="0"><col align="left" /><tbody><tr><td><span class="term"><i><tt>cur</tt></i>:</span></td><td>pointer to the document</td></tr></tbody></table></div><h3><a name="xmlFreeDtd" id="xmlFreeDtd"></a>Function: xmlFreeDtd</h3><pre class="programlisting">void xmlFreeDtd (<a href="libxml-tree.html#xmlDtdPtr">xmlDtdPtr</a> cur)<br />
</pre><p>Free a DTD structure.</p>
@@ -782,7 +791,9 @@ A:link, A:visited, A:active { text-decoration: underline }
</pre><p>Checks whether this node is an empty or whitespace only (and possibly ignorable) text-node.</p>
<div class="variablelist"><table border="0"><col align="left" /><tbody><tr><td><span class="term"><i><tt>node</tt></i>:</span></td><td>the node</td></tr><tr><td><span class="term"><i><tt>Returns</tt></i>:</span></td><td>1 yes, 0 no</td></tr></tbody></table></div><h3><a name="xmlIsXHTML" id="xmlIsXHTML"></a>Function: xmlIsXHTML</h3><pre class="programlisting">int xmlIsXHTML (const <a href="libxml-xmlstring.html#xmlChar">xmlChar</a> * systemID, <br /> const <a href="libxml-xmlstring.html#xmlChar">xmlChar</a> * publicID)<br />
</pre><p>Try to find if the document correspond to an XHTML DTD</p>
-<div class="variablelist"><table border="0"><col align="left" /><tbody><tr><td><span class="term"><i><tt>systemID</tt></i>:</span></td><td>the system identifier</td></tr><tr><td><span class="term"><i><tt>publicID</tt></i>:</span></td><td>the public identifier</td></tr><tr><td><span class="term"><i><tt>Returns</tt></i>:</span></td><td>1 if true, 0 if not and -1 in case of error</td></tr></tbody></table></div><h3><a name="xmlNewCDataBlock" id="xmlNewCDataBlock"></a>Function: xmlNewCDataBlock</h3><pre class="programlisting"><a href="libxml-tree.html#xmlNodePtr">xmlNodePtr</a> xmlNewCDataBlock (<a href="libxml-tree.html#xmlDocPtr">xmlDocPtr</a> doc, <br /> const <a href="libxml-xmlstring.html#xmlChar">xmlChar</a> * content, <br /> int len)<br />
+<div class="variablelist"><table border="0"><col align="left" /><tbody><tr><td><span class="term"><i><tt>systemID</tt></i>:</span></td><td>the system identifier</td></tr><tr><td><span class="term"><i><tt>publicID</tt></i>:</span></td><td>the public identifier</td></tr><tr><td><span class="term"><i><tt>Returns</tt></i>:</span></td><td>1 if true, 0 if not and -1 in case of error</td></tr></tbody></table></div><h3><a name="xmlLastElementChild" id="xmlLastElementChild"></a>Function: xmlLastElementChild</h3><pre class="programlisting"><a href="libxml-tree.html#xmlNodePtr">xmlNodePtr</a> xmlLastElementChild (<a href="libxml-tree.html#xmlNodePtr">xmlNodePtr</a> parent)<br />
+</pre><p>Finds the last child node of that element which is a Element node Note the handling of entities references is different than in the W3C DOM element traversal spec since we don't have back <a href="libxml-SAX.html#reference">reference</a> from entities content to entities references.</p>
+<div class="variablelist"><table border="0"><col align="left" /><tbody><tr><td><span class="term"><i><tt>parent</tt></i>:</span></td><td>the parent node</td></tr><tr><td><span class="term"><i><tt>Returns</tt></i>:</span></td><td>the last element child or NULL if not available</td></tr></tbody></table></div><h3><a name="xmlNewCDataBlock" id="xmlNewCDataBlock"></a>Function: xmlNewCDataBlock</h3><pre class="programlisting"><a href="libxml-tree.html#xmlNodePtr">xmlNodePtr</a> xmlNewCDataBlock (<a href="libxml-tree.html#xmlDocPtr">xmlDocPtr</a> doc, <br /> const <a href="libxml-xmlstring.html#xmlChar">xmlChar</a> * content, <br /> int len)<br />
</pre><p>Creation of a new node containing a CDATA block.</p>
<div class="variablelist"><table border="0"><col align="left" /><tbody><tr><td><span class="term"><i><tt>doc</tt></i>:</span></td><td>the document</td></tr><tr><td><span class="term"><i><tt>content</tt></i>:</span></td><td>the CDATA block content content</td></tr><tr><td><span class="term"><i><tt>len</tt></i>:</span></td><td>the length of the block</td></tr><tr><td><span class="term"><i><tt>Returns</tt></i>:</span></td><td>a pointer to the new node object.</td></tr></tbody></table></div><h3><a name="xmlNewCharRef" id="xmlNewCharRef"></a>Function: xmlNewCharRef</h3><pre class="programlisting"><a href="libxml-tree.html#xmlNodePtr">xmlNodePtr</a> xmlNewCharRef (<a href="libxml-tree.html#xmlDocPtr">xmlDocPtr</a> doc, <br /> const <a href="libxml-xmlstring.html#xmlChar">xmlChar</a> * name)<br />
</pre><p>Creation of a new character <a href="libxml-SAX.html#reference">reference</a> node.</p>
@@ -836,7 +847,9 @@ A:link, A:visited, A:active { text-decoration: underline }
</pre><p>Creation of a new child element, added at the end of @parent children list. @ns and @content parameters are optional (NULL). If @ns is NULL, the newly created element inherits the namespace of @parent. If @content is non NULL, a child TEXT node will be created containing the string @content. NOTE: Use xmlNewChild() if @content will contain entities that need to be preserved. Use this function, xmlNewTextChild(), if you need to ensure that reserved XML chars that might appear in @content, such as the ampersand, greater-than or less-than signs, are automatically replaced by their XML escaped entity representations.</p>
<div class="variablelist"><table border="0"><col align="left" /><tbody><tr><td><span class="term"><i><tt>parent</tt></i>:</span></td><td>the parent node</td></tr><tr><td><span class="term"><i><tt>ns</tt></i>:</span></td><td>a namespace if any</td></tr><tr><td><span class="term"><i><tt>name</tt></i>:</span></td><td>the name of the child</td></tr><tr><td><span class="term"><i><tt>content</tt></i>:</span></td><td>the text content of the child if any.</td></tr><tr><td><span class="term"><i><tt>Returns</tt></i>:</span></td><td>a pointer to the new node object.</td></tr></tbody></table></div><h3><a name="xmlNewTextLen" id="xmlNewTextLen"></a>Function: xmlNewTextLen</h3><pre class="programlisting"><a href="libxml-tree.html#xmlNodePtr">xmlNodePtr</a> xmlNewTextLen (const <a href="libxml-xmlstring.html#xmlChar">xmlChar</a> * content, <br /> int len)<br />
</pre><p>Creation of a new text node with an extra parameter for the content's length</p>
-<div class="variablelist"><table border="0"><col align="left" /><tbody><tr><td><span class="term"><i><tt>content</tt></i>:</span></td><td>the text content</td></tr><tr><td><span class="term"><i><tt>len</tt></i>:</span></td><td>the text len.</td></tr><tr><td><span class="term"><i><tt>Returns</tt></i>:</span></td><td>a pointer to the new node object.</td></tr></tbody></table></div><h3><a name="xmlNodeAddContent" id="xmlNodeAddContent"></a>Function: xmlNodeAddContent</h3><pre class="programlisting">void xmlNodeAddContent (<a href="libxml-tree.html#xmlNodePtr">xmlNodePtr</a> cur, <br /> const <a href="libxml-xmlstring.html#xmlChar">xmlChar</a> * content)<br />
+<div class="variablelist"><table border="0"><col align="left" /><tbody><tr><td><span class="term"><i><tt>content</tt></i>:</span></td><td>the text content</td></tr><tr><td><span class="term"><i><tt>len</tt></i>:</span></td><td>the text len.</td></tr><tr><td><span class="term"><i><tt>Returns</tt></i>:</span></td><td>a pointer to the new node object.</td></tr></tbody></table></div><h3><a name="xmlNextElementSibling" id="xmlNextElementSibling"></a>Function: xmlNextElementSibling</h3><pre class="programlisting"><a href="libxml-tree.html#xmlNodePtr">xmlNodePtr</a> xmlNextElementSibling (<a href="libxml-tree.html#xmlNodePtr">xmlNodePtr</a> node)<br />
+</pre><p>Finds the first closest next sibling of the node which is an element node. Note the handling of entities references is different than in the W3C DOM element traversal spec since we don't have back <a href="libxml-SAX.html#reference">reference</a> from entities content to entities references.</p>
+<div class="variablelist"><table border="0"><col align="left" /><tbody><tr><td><span class="term"><i><tt>node</tt></i>:</span></td><td>the current node</td></tr><tr><td><span class="term"><i><tt>Returns</tt></i>:</span></td><td>the next element sibling or NULL if not available</td></tr></tbody></table></div><h3><a name="xmlNodeAddContent" id="xmlNodeAddContent"></a>Function: xmlNodeAddContent</h3><pre class="programlisting">void xmlNodeAddContent (<a href="libxml-tree.html#xmlNodePtr">xmlNodePtr</a> cur, <br /> const <a href="libxml-xmlstring.html#xmlChar">xmlChar</a> * content)<br />
</pre><p>Append the extra substring to the node content. NOTE: In contrast to xmlNodeSetContent(), @content is supposed to be raw text, so unescaped XML special chars are allowed, entity references are not supported.</p>
<div class="variablelist"><table border="0"><col align="left" /><tbody><tr><td><span class="term"><i><tt>cur</tt></i>:</span></td><td>the node being modified</td></tr><tr><td><span class="term"><i><tt>content</tt></i>:</span></td><td>extra content</td></tr></tbody></table></div><h3><a name="xmlNodeAddContentLen" id="xmlNodeAddContentLen"></a>Function: xmlNodeAddContentLen</h3><pre class="programlisting">void xmlNodeAddContentLen (<a href="libxml-tree.html#xmlNodePtr">xmlNodePtr</a> cur, <br /> const <a href="libxml-xmlstring.html#xmlChar">xmlChar</a> * content, <br /> int len)<br />
</pre><p>Append the extra substring to the node content. NOTE: In contrast to xmlNodeSetContentLen(), @content is supposed to be raw text, so unescaped XML special chars are allowed, entity references are not supported.</p>
@@ -872,7 +885,9 @@ A:link, A:visited, A:active { text-decoration: underline }
</pre><p>Set (or reset) the name of a node.</p>
<div class="variablelist"><table border="0"><col align="left" /><tbody><tr><td><span class="term"><i><tt>cur</tt></i>:</span></td><td>the node being changed</td></tr><tr><td><span class="term"><i><tt>name</tt></i>:</span></td><td>the new tag name</td></tr></tbody></table></div><h3><a name="xmlNodeSetSpacePreserve" id="xmlNodeSetSpacePreserve"></a>Function: xmlNodeSetSpacePreserve</h3><pre class="programlisting">void xmlNodeSetSpacePreserve (<a href="libxml-tree.html#xmlNodePtr">xmlNodePtr</a> cur, <br /> int val)<br />
</pre><p>Set (or reset) the space preserving behaviour of a node, i.e. the value of the xml:space attribute.</p>
-<div class="variablelist"><table border="0"><col align="left" /><tbody><tr><td><span class="term"><i><tt>cur</tt></i>:</span></td><td>the node being changed</td></tr><tr><td><span class="term"><i><tt>val</tt></i>:</span></td><td>the xml:space value ("0": default, 1: "preserve")</td></tr></tbody></table></div><h3><a name="xmlReconciliateNs" id="xmlReconciliateNs"></a>Function: xmlReconciliateNs</h3><pre class="programlisting">int xmlReconciliateNs (<a href="libxml-tree.html#xmlDocPtr">xmlDocPtr</a> doc, <br /> <a href="libxml-tree.html#xmlNodePtr">xmlNodePtr</a> tree)<br />
+<div class="variablelist"><table border="0"><col align="left" /><tbody><tr><td><span class="term"><i><tt>cur</tt></i>:</span></td><td>the node being changed</td></tr><tr><td><span class="term"><i><tt>val</tt></i>:</span></td><td>the xml:space value ("0": default, 1: "preserve")</td></tr></tbody></table></div><h3><a name="xmlPreviousElementSibling" id="xmlPreviousElementSibling"></a>Function: xmlPreviousElementSibling</h3><pre class="programlisting"><a href="libxml-tree.html#xmlNodePtr">xmlNodePtr</a> xmlPreviousElementSibling (<a href="libxml-tree.html#xmlNodePtr">xmlNodePtr</a> node)<br />
+</pre><p>Finds the first closest previous sibling of the node which is an element node. Note the handling of entities references is different than in the W3C DOM element traversal spec since we don't have back <a href="libxml-SAX.html#reference">reference</a> from entities content to entities references.</p>
+<div class="variablelist"><table border="0"><col align="left" /><tbody><tr><td><span class="term"><i><tt>node</tt></i>:</span></td><td>the current node</td></tr><tr><td><span class="term"><i><tt>Returns</tt></i>:</span></td><td>the previous element sibling or NULL if not available</td></tr></tbody></table></div><h3><a name="xmlReconciliateNs" id="xmlReconciliateNs"></a>Function: xmlReconciliateNs</h3><pre class="programlisting">int xmlReconciliateNs (<a href="libxml-tree.html#xmlDocPtr">xmlDocPtr</a> doc, <br /> <a href="libxml-tree.html#xmlNodePtr">xmlNodePtr</a> tree)<br />
</pre><p>This function checks that all the namespaces declared within the given tree are properly declared. This is needed for example after Copy or Cut and then paste operations. The subtree may still hold pointers to namespace declarations outside the subtree or invalid/masked. As much as possible the function try to reuse the existing namespaces found in the new environment. If not possible the new namespaces are redeclared on @tree at the top of the given subtree.</p>
<div class="variablelist"><table border="0"><col align="left" /><tbody><tr><td><span class="term"><i><tt>doc</tt></i>:</span></td><td>the document</td></tr><tr><td><span class="term"><i><tt>tree</tt></i>:</span></td><td>a node defining the subtree to reconciliate</td></tr><tr><td><span class="term"><i><tt>Returns</tt></i>:</span></td><td>the number of namespace declarations created or -1 in case of error.</td></tr></tbody></table></div><h3><a name="xmlRemoveProp" id="xmlRemoveProp"></a>Function: xmlRemoveProp</h3><pre class="programlisting">int xmlRemoveProp (<a href="libxml-tree.html#xmlAttrPtr">xmlAttrPtr</a> cur)<br />
</pre><p>Unlink and free one attribute, all the content is freed too Note this doesn't work for namespace definition attributes</p>
diff --git a/doc/html/libxml-valid.html b/doc/html/libxml-valid.html
index eb9f667..30ef3cd 100644
--- a/doc/html/libxml-valid.html
+++ b/doc/html/libxml-valid.html
@@ -241,8 +241,8 @@ The content of this structure is not made public by the API.
<div class="variablelist"><table border="0"><col align="left" /><tbody><tr><td><span class="term"><i><tt>doc</tt></i>:</span></td><td>the document</td></tr><tr><td><span class="term"><i><tt>elem</tt></i>:</span></td><td>the parent</td></tr><tr><td><span class="term"><i><tt>name</tt></i>:</span></td><td>the <a href="libxml-SAX.html#attribute">attribute</a> name</td></tr><tr><td><span class="term"><i><tt>value</tt></i>:</span></td><td>the <a href="libxml-SAX.html#attribute">attribute</a> value</td></tr><tr><td><span class="term"><i><tt>Returns</tt></i>:</span></td><td>a new normalized string if normalization is needed, NULL otherwise the caller must free the returned value.</td></tr></tbody></table></div><h3><a name="xmlValidateAttributeDecl" id="xmlValidateAttributeDecl"></a>Function: xmlValidateAttributeDecl</h3><pre class="programlisting">int xmlValidateAttributeDecl (<a href="libxml-valid.html#xmlValidCtxtPtr">xmlValidCtxtPtr</a> ctxt, <br /> <a href="libxml-tree.html#xmlDocPtr">xmlDocPtr</a> doc, <br /> <a href="libxml-tree.html#xmlAttributePtr">xmlAttributePtr</a> attr)<br />
</pre><p>Try to validate a single <a href="libxml-SAX.html#attribute">attribute</a> definition basically it does the following checks as described by the XML-1.0 recommendation: - [ VC: Attribute Default Legal ] - [ VC: Enumeration ] - [ VC: ID Attribute Default ] The ID/IDREF uniqueness and matching are done separately</p>
<div class="variablelist"><table border="0"><col align="left" /><tbody><tr><td><span class="term"><i><tt>ctxt</tt></i>:</span></td><td>the validation context</td></tr><tr><td><span class="term"><i><tt>doc</tt></i>:</span></td><td>a document instance</td></tr><tr><td><span class="term"><i><tt>attr</tt></i>:</span></td><td>an <a href="libxml-SAX.html#attribute">attribute</a> definition</td></tr><tr><td><span class="term"><i><tt>Returns</tt></i>:</span></td><td>1 if valid or 0 otherwise</td></tr></tbody></table></div><h3><a name="xmlValidateAttributeValue" id="xmlValidateAttributeValue"></a>Function: xmlValidateAttributeValue</h3><pre class="programlisting">int xmlValidateAttributeValue (<a href="libxml-tree.html#xmlAttributeType">xmlAttributeType</a> type, <br /> const <a href="libxml-xmlstring.html#xmlChar">xmlChar</a> * value)<br />
-</pre><p></p>
-<div class="variablelist"><table border="0"><col align="left" /><tbody><tr><td><span class="term"><i><tt>type</tt></i>:</span></td><td></td></tr><tr><td><span class="term"><i><tt>value</tt></i>:</span></td><td></td></tr><tr><td><span class="term"><i><tt>Returns</tt></i>:</span></td><td></td></tr></tbody></table></div><h3><a name="xmlValidateDocument" id="xmlValidateDocument"></a>Function: xmlValidateDocument</h3><pre class="programlisting">int xmlValidateDocument (<a href="libxml-valid.html#xmlValidCtxtPtr">xmlValidCtxtPtr</a> ctxt, <br /> <a href="libxml-tree.html#xmlDocPtr">xmlDocPtr</a> doc)<br />
+</pre><p>Validate that the given <a href="libxml-SAX.html#attribute">attribute</a> value match the proper production [ VC: ID ] Values of type ID must match the Name production.... [ VC: IDREF ] Values of type IDREF must match the Name production, and values of type IDREFS must match Names ... [ VC: Entity Name ] Values of type ENTITY must match the Name production, values of type ENTITIES must match Names ... [ VC: Name Token ] Values of type NMTOKEN must match the Nmtoken production; values of type NMTOKENS must match Nmtokens.</p>
+<div class="variablelist"><table border="0"><col align="left" /><tbody><tr><td><span class="term"><i><tt>type</tt></i>:</span></td><td>an <a href="libxml-SAX.html#attribute">attribute</a> type</td></tr><tr><td><span class="term"><i><tt>value</tt></i>:</span></td><td>an <a href="libxml-SAX.html#attribute">attribute</a> value</td></tr><tr><td><span class="term"><i><tt>Returns</tt></i>:</span></td><td>1 if valid or 0 otherwise</td></tr></tbody></table></div><h3><a name="xmlValidateDocument" id="xmlValidateDocument"></a>Function: xmlValidateDocument</h3><pre class="programlisting">int xmlValidateDocument (<a href="libxml-valid.html#xmlValidCtxtPtr">xmlValidCtxtPtr</a> ctxt, <br /> <a href="libxml-tree.html#xmlDocPtr">xmlDocPtr</a> doc)<br />
</pre><p>Try to validate the document instance basically it does the all the checks described by the XML Rec i.e. validates the internal and external subset (if present) and validate the document tree.</p>
<div class="variablelist"><table border="0"><col align="left" /><tbody><tr><td><span class="term"><i><tt>ctxt</tt></i>:</span></td><td>the validation context</td></tr><tr><td><span class="term"><i><tt>doc</tt></i>:</span></td><td>a document instance</td></tr><tr><td><span class="term"><i><tt>Returns</tt></i>:</span></td><td>1 if valid or 0 otherwise</td></tr></tbody></table></div><h3><a name="xmlValidateDocumentFinal" id="xmlValidateDocumentFinal"></a>Function: xmlValidateDocumentFinal</h3><pre class="programlisting">int xmlValidateDocumentFinal (<a href="libxml-valid.html#xmlValidCtxtPtr">xmlValidCtxtPtr</a> ctxt, <br /> <a href="libxml-tree.html#xmlDocPtr">xmlDocPtr</a> doc)<br />
</pre><p>Does the final step for the document validation once all the incremental validation steps have been completed basically it does the following checks described by the XML Rec Check all the IDREF/IDREFS attributes definition for validity</p>
diff --git a/doc/html/libxml-xmlversion.html b/doc/html/libxml-xmlversion.html
index c76206c..3317c0a 100644
--- a/doc/html/libxml-xmlversion.html
+++ b/doc/html/libxml-xmlversion.html
@@ -10,8 +10,10 @@ A:link, A:visited, A:active { text-decoration: underline }
</style><style type="text/css">
div.deprecated pre.programlisting {border-style: double;border-color:red}
pre.programlisting {border-style: double;background: #EECFA1}
- </style><title>Module xmlversion from libxml2</title></head><body bgcolor="#8b7765" text="#000000" link="#a06060" vlink="#000000"><table border="0" width="100%" cellpadding="5" cellspacing="0" align="center"><tr><td width="120"><a href="http://swpat.ffii.org/"><img src="../epatents.png" alt="Action against software patents" /></a></td><td width="180"><a href="http://www.gnome.org/"><img src="../gnome2.png" alt="Gnome2 Logo" /></a><a href="http://www.w3.org/Status"><img src="../w3c.png" alt="W3C Logo" /></a><a href="http://www.redhat.com/"><img src="../redhat.gif" alt="Red Hat Logo" /></a><div align="left"><a href="http://xmlsoft.org/"><img src="../Libxml2-Logo-180x168.gif" alt="Made with Libxml2 Logo" /></a></div></td><td><table border="0" width="90%" cellpadding="2" cellspacing="0" align="center" bgcolor="#000000"><tr><td><table width="100%" border="0" cellspacing="1" cellpadding="3" bgcolor="#fffacd"><tr><td align="center"><h1></h1><h2>Module xmlversion from libxml2</h2></td></tr></table></td></tr></table></td></tr></table><table border="0" cellpadding="4" cellspacing="0" width="100%" align="center"><tr><td bgcolor="#8b7765"><table border="0" cellspacing="0" cellpadding="2" width="100%"><tr><td valign="top" width="200" bgcolor="#8b7765"><table border="0" cellspacing="0" cellpadding="1" width="100%" bgcolor="#000000"><tr><td><table width="100%" border="0" cellspacing="1" cellpadding="3"><tr><td colspan="1" bgcolor="#eecfa1" align="center"><center><b>API Menu</b></center></td></tr><tr><td bgcolor="#fffacd"><form action="../search.php" enctype="application/x-www-form-urlencoded" method="get"><input name="query" type="text" size="20" value="" /><input name="submit" type="submit" value="Search ..." /></form><ul><li><a style="font-weight:bold" href="../index.html">Main Menu</a></li><li><a style="font-weight:bold" href="../docs.html">Developer Menu</a></li><li><a style="font-weight:bold" href="../examples/index.html">Code Examples</a></li><li><a style="font-weight:bold" href="index.html">API Menu</a></li><li><a href="libxml-parser.html">Parser API</a></li><li><a href="libxml-tree.html">Tree API</a></li><li><a href="libxml-xmlreader.html">Reader API</a></li><li><a href="../guidelines.html">XML Guidelines</a></li><li><a href="../ChangeLog.html">ChangeLog</a></li></ul></td></tr></table><table width="100%" border="0" cellspacing="1" cellpadding="3"><tr><td colspan="1" bgcolor="#eecfa1" align="center"><center><b>API Indexes</b></center></td></tr><tr><td bgcolor="#fffacd"><ul><li><a href="../APIchunk0.html">Alphabetic</a></li><li><a href="../APIconstructors.html">Constructors</a></li><li><a href="../APIfunctions.html">Functions/Types</a></li><li><a href="../APIfiles.html">Modules</a></li><li><a href="../APIsymbols.html">Symbols</a></li></ul></td></tr></table><table width="100%" border="0" cellspacing="1" cellpadding="3"><tr><td colspan="1" bgcolor="#eecfa1" align="center"><center><b>Related links</b></center></td></tr><tr><td bgcolor="#fffacd"><ul><li><a href="http://mail.gnome.org/archives/xml/">Mail archive</a></li><li><a href="http://xmlsoft.org/XSLT/">XSLT libxslt</a></li><li><a href="http://phd.cs.unibo.it/gdome2/">DOM gdome2</a></li><li><a href="http://www.aleksey.com/xmlsec/">XML-DSig xmlsec</a></li><li><a href="ftp://xmlsoft.org/">FTP</a></li><li><a href="http://www.zlatkovic.com/projects/libxml/">Windows binaries</a></li><li><a href="http://www.blastwave.org/packages.php/libxml2">Solaris binaries</a></li><li><a href="http://www.explain.com.au/oss/libxml2xslt.html">MacOsX binaries</a></li><li><a href="http://codespeak.net/lxml/">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"><table class="navigation" width="100%" summary="Navigation header" cellpadding="2" cellspacing="2"><tr valign="middle"><td><a accesskey="p" href="libxml-xmlunicode.html"><img src="left.png" width="24" height="24" border="0" alt="Prev" /></a></td><th align="left"><a href="libxml-xmlunicode.html">xmlunicode</a></th><td><a accesskey="u" href="index.html"><img src="up.png" width="24" height="24" border="0" alt="Up" /></a></td><th align="left"><a href="index.html">API documentation</a></th><td><a accesskey="h" href="../index.html"><img src="home.png" width="24" height="24" border="0" alt="Home" /></a></td><th align="center"><a href="../index.html">The XML C parser and toolkit of Gnome</a></th><th align="right"><a href="libxml-xmlwriter.html">xmlwriter</a></th><td><a accesskey="n" href="libxml-xmlwriter.html"><img src="right.png" width="24" height="24" border="0" alt="Next" /></a></td></tr></table><p>compile-time version informations for the XML library </p><h2>Table of Contents</h2><pre class="programlisting">#define <a href="#ATTRIBUTE_UNUSED">ATTRIBUTE_UNUSED</a></pre><pre class="programlisting">#define <a href="#DEBUG_MEMORY_LOCATION">DEBUG_MEMORY_LOCATION</a></pre><pre class="programlisting">#define <a href="#LIBXML_AUTOMATA_ENABLED">LIBXML_AUTOMATA_ENABLED</a></pre><pre class="programlisting">#define <a href="#LIBXML_C14N_ENABLED">LIBXML_C14N_ENABLED</a></pre><pre class="programlisting">#define <a href="#LIBXML_CATALOG_ENABLED">LIBXML_CATALOG_ENABLED</a></pre><pre class="programlisting">#define <a href="#LIBXML_DEBUG_ENABLED">LIBXML_DEBUG_ENABLED</a></pre><pre class="programlisting">#define <a href="#LIBXML_DEBUG_RUNTIME">LIBXML_DEBUG_RUNTIME</a></pre><pre class="programlisting">#define <a href="#LIBXML_DOCB_ENABLED">LIBXML_DOCB_ENABLED</a></pre><pre class="programlisting">#define <a href="#LIBXML_DOTTED_VERSION">LIBXML_DOTTED_VERSION</a></pre><pre class="programlisting">#define <a href="#LIBXML_EXPR_ENABLED">LIBXML_EXPR_ENABLED</a></pre><pre class="programlisting">#define <a href="#LIBXML_FTP_ENABLED">LIBXML_FTP_ENABLED</a></pre><pre class="programlisting">#define <a href="#LIBXML_HTML_ENABLED">LIBXML_HTML_ENABLED</a></pre><pre class="programlisting">#define <a href="#LIBXML_HTTP_ENABLED">LIBXML_HTTP_ENABLED</a></pre><pre class="programlisting">#define <a href="#LIBXML_ICONV_ENABLED">LIBXML_ICONV_ENABLED</a></pre><pre class="programlisting">#define <a href="#LIBXML_ISO8859X_ENABLED">LIBXML_ISO8859X_ENABLED</a></pre><pre class="programlisting">#define <a href="#LIBXML_LEGACY_ENABLED">LIBXML_LEGACY_ENABLED</a></pre><pre class="programlisting">#define <a href="#LIBXML_MODULES_ENABLED">LIBXML_MODULES_ENABLED</a></pre><pre class="programlisting">#define <a href="#LIBXML_MODULE_EXTENSION">LIBXML_MODULE_EXTENSION</a></pre><pre class="programlisting">#define <a href="#LIBXML_OUTPUT_ENABLED">LIBXML_OUTPUT_ENABLED</a></pre><pre class="programlisting">#define <a href="#LIBXML_PATTERN_ENABLED">LIBXML_PATTERN_ENABLED</a></pre><pre class="programlisting">#define <a href="#LIBXML_PUSH_ENABLED">LIBXML_PUSH_ENABLED</a></pre><pre class="programlisting">#define <a href="#LIBXML_READER_ENABLED">LIBXML_READER_ENABLED</a></pre><pre class="programlisting">#define <a href="#LIBXML_REGEXP_ENABLED">LIBXML_REGEXP_ENABLED</a></pre><pre class="programlisting">#define <a href="#LIBXML_SAX1_ENABLED">LIBXML_SAX1_ENABLED</a></pre><pre class="programlisting">#define <a href="#LIBXML_SCHEMAS_ENABLED">LIBXML_SCHEMAS_ENABLED</a></pre><pre class="programlisting">#define <a href="#LIBXML_SCHEMATRON_ENABLED">LIBXML_SCHEMATRON_ENABLED</a></pre><pre class="programlisting">#define <a href="#LIBXML_TEST_VERSION">LIBXML_TEST_VERSION</a></pre><pre class="programlisting">#define <a href="#LIBXML_THREAD_ENABLED">LIBXML_THREAD_ENABLED</a></pre><pre class="programlisting">#define <a href="#LIBXML_TREE_ENABLED">LIBXML_TREE_ENABLED</a></pre><pre class="programlisting">#define <a href="#LIBXML_UNICODE_ENABLED">LIBXML_UNICODE_ENABLED</a></pre><pre class="programlisting">#define <a href="#LIBXML_VALID_ENABLED">LIBXML_VALID_ENABLED</a></pre><pre class="programlisting">#define <a href="#LIBXML_VERSION">LIBXML_VERSION</a></pre><pre class="programlisting">#define <a href="#LIBXML_VERSION_EXTRA">LIBXML_VERSION_EXTRA</a></pre><pre class="programlisting">#define <a href="#LIBXML_VERSION_STRING">LIBXML_VERSION_STRING</a></pre><pre class="programlisting">#define <a href="#LIBXML_WRITER_ENABLED">LIBXML_WRITER_ENABLED</a></pre><pre class="programlisting">#define <a href="#LIBXML_XINCLUDE_ENABLED">LIBXML_XINCLUDE_ENABLED</a></pre><pre class="programlisting">#define <a href="#LIBXML_XPATH_ENABLED">LIBXML_XPATH_ENABLED</a></pre><pre class="programlisting">#define <a href="#LIBXML_XPTR_ENABLED">LIBXML_XPTR_ENABLED</a></pre><pre class="programlisting">#define <a href="#LIBXML_ZLIB_ENABLED">LIBXML_ZLIB_ENABLED</a></pre><pre class="programlisting">#define <a href="#WITHOUT_TRIO">WITHOUT_TRIO</a></pre><pre class="programlisting">#define <a href="#WITH_TRIO">WITH_TRIO</a></pre><pre class="programlisting">void <a href="#xmlCheckVersion">xmlCheckVersion</a> (int version)</pre>
+ </style><title>Module xmlversion from libxml2</title></head><body bgcolor="#8b7765" text="#000000" link="#a06060" vlink="#000000"><table border="0" width="100%" cellpadding="5" cellspacing="0" align="center"><tr><td width="120"><a href="http://swpat.ffii.org/"><img src="../epatents.png" alt="Action against software patents" /></a></td><td width="180"><a href="http://www.gnome.org/"><img src="../gnome2.png" alt="Gnome2 Logo" /></a><a href="http://www.w3.org/Status"><img src="../w3c.png" alt="W3C Logo" /></a><a href="http://www.redhat.com/"><img src="../redhat.gif" alt="Red Hat Logo" /></a><div align="left"><a href="http://xmlsoft.org/"><img src="../Libxml2-Logo-180x168.gif" alt="Made with Libxml2 Logo" /></a></div></td><td><table border="0" width="90%" cellpadding="2" cellspacing="0" align="center" bgcolor="#000000"><tr><td><table width="100%" border="0" cellspacing="1" cellpadding="3" bgcolor="#fffacd"><tr><td align="center"><h1></h1><h2>Module xmlversion from libxml2</h2></td></tr></table></td></tr></table></td></tr></table><table border="0" cellpadding="4" cellspacing="0" width="100%" align="center"><tr><td bgcolor="#8b7765"><table border="0" cellspacing="0" cellpadding="2" width="100%"><tr><td valign="top" width="200" bgcolor="#8b7765"><table border="0" cellspacing="0" cellpadding="1" width="100%" bgcolor="#000000"><tr><td><table width="100%" border="0" cellspacing="1" cellpadding="3"><tr><td colspan="1" bgcolor="#eecfa1" align="center"><center><b>API Menu</b></center></td></tr><tr><td bgcolor="#fffacd"><form action="../search.php" enctype="application/x-www-form-urlencoded" method="get"><input name="query" type="text" size="20" value="" /><input name="submit" type="submit" value="Search ..." /></form><ul><li><a style="font-weight:bold" href="../index.html">Main Menu</a></li><li><a style="font-weight:bold" href="../docs.html">Developer Menu</a></li><li><a style="font-weight:bold" href="../examples/index.html">Code Examples</a></li><li><a style="font-weight:bold" href="index.html">API Menu</a></li><li><a href="libxml-parser.html">Parser API</a></li><li><a href="libxml-tree.html">Tree API</a></li><li><a href="libxml-xmlreader.html">Reader API</a></li><li><a href="../guidelines.html">XML Guidelines</a></li><li><a href="../ChangeLog.html">ChangeLog</a></li></ul></td></tr></table><table width="100%" border="0" cellspacing="1" cellpadding="3"><tr><td colspan="1" bgcolor="#eecfa1" align="center"><center><b>API Indexes</b></center></td></tr><tr><td bgcolor="#fffacd"><ul><li><a href="../APIchunk0.html">Alphabetic</a></li><li><a href="../APIconstructors.html">Constructors</a></li><li><a href="../APIfunctions.html">Functions/Types</a></li><li><a href="../APIfiles.html">Modules</a></li><li><a href="../APIsymbols.html">Symbols</a></li></ul></td></tr></table><table width="100%" border="0" cellspacing="1" cellpadding="3"><tr><td colspan="1" bgcolor="#eecfa1" align="center"><center><b>Related links</b></center></td></tr><tr><td bgcolor="#fffacd"><ul><li><a href="http://mail.gnome.org/archives/xml/">Mail archive</a></li><li><a href="http://xmlsoft.org/XSLT/">XSLT libxslt</a></li><li><a href="http://phd.cs.unibo.it/gdome2/">DOM gdome2</a></li><li><a href="http://www.aleksey.com/xmlsec/">XML-DSig xmlsec</a></li><li><a href="ftp://xmlsoft.org/">FTP</a></li><li><a href="http://www.zlatkovic.com/projects/libxml/">Windows binaries</a></li><li><a href="http://www.blastwave.org/packages.php/libxml2">Solaris binaries</a></li><li><a href="http://www.explain.com.au/oss/libxml2xslt.html">MacOsX binaries</a></li><li><a href="http://codespeak.net/lxml/">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"><table class="navigation" width="100%" summary="Navigation header" cellpadding="2" cellspacing="2"><tr valign="middle"><td><a accesskey="p" href="libxml-xmlunicode.html"><img src="left.png" width="24" height="24" border="0" alt="Prev" /></a></td><th align="left"><a href="libxml-xmlunicode.html">xmlunicode</a></th><td><a accesskey="u" href="index.html"><img src="up.png" width="24" height="24" border="0" alt="Up" /></a></td><th align="left"><a href="index.html">API documentation</a></th><td><a accesskey="h" href="../index.html"><img src="home.png" width="24" height="24" border="0" alt="Home" /></a></td><th align="center"><a href="../index.html">The XML C parser and toolkit of Gnome</a></th><th align="right"><a href="libxml-xmlwriter.html">xmlwriter</a></th><td><a accesskey="n" href="libxml-xmlwriter.html"><img src="right.png" width="24" height="24" border="0" alt="Next" /></a></td></tr></table><p>compile-time version informations for the XML library </p><h2>Table of Contents</h2><pre class="programlisting">#define <a href="#ATTRIBUTE_ALLOC_SIZE">ATTRIBUTE_ALLOC_SIZE</a></pre><pre class="programlisting">#define <a href="#ATTRIBUTE_PRINTF">ATTRIBUTE_PRINTF</a></pre><pre class="programlisting">#define <a href="#ATTRIBUTE_UNUSED">ATTRIBUTE_UNUSED</a></pre><pre class="programlisting">#define <a href="#DEBUG_MEMORY_LOCATION">DEBUG_MEMORY_LOCATION</a></pre><pre class="programlisting">#define <a href="#LIBXML_AUTOMATA_ENABLED">LIBXML_AUTOMATA_ENABLED</a></pre><pre class="programlisting">#define <a href="#LIBXML_C14N_ENABLED">LIBXML_C14N_ENABLED</a></pre><pre class="programlisting">#define <a href="#LIBXML_CATALOG_ENABLED">LIBXML_CATALOG_ENABLED</a></pre><pre class="programlisting">#define <a href="#LIBXML_DEBUG_ENABLED">LIBXML_DEBUG_ENABLED</a></pre><pre class="programlisting">#define <a href="#LIBXML_DEBUG_RUNTIME">LIBXML_DEBUG_RUNTIME</a></pre><pre class="programlisting">#define <a href="#LIBXML_DOCB_ENABLED">LIBXML_DOCB_ENABLED</a></pre><pre class="programlisting">#define <a href="#LIBXML_DOTTED_VERSION">LIBXML_DOTTED_VERSION</a></pre><pre class="programlisting">#define <a href="#LIBXML_EXPR_ENABLED">LIBXML_EXPR_ENABLED</a></pre><pre class="programlisting">#define <a href="#LIBXML_FTP_ENABLED">LIBXML_FTP_ENABLED</a></pre><pre class="programlisting">#define <a href="#LIBXML_HTML_ENABLED">LIBXML_HTML_ENABLED</a></pre><pre class="programlisting">#define <a href="#LIBXML_HTTP_ENABLED">LIBXML_HTTP_ENABLED</a></pre><pre class="programlisting">#define <a href="#LIBXML_ICONV_ENABLED">LIBXML_ICONV_ENABLED</a></pre><pre class="programlisting">#define <a href="#LIBXML_ISO8859X_ENABLED">LIBXML_ISO8859X_ENABLED</a></pre><pre class="programlisting">#define <a href="#LIBXML_LEGACY_ENABLED">LIBXML_LEGACY_ENABLED</a></pre><pre class="programlisting">#define <a href="#LIBXML_MODULES_ENABLED">LIBXML_MODULES_ENABLED</a></pre><pre class="programlisting">#define <a href="#LIBXML_MODULE_EXTENSION">LIBXML_MODULE_EXTENSION</a></pre><pre class="programlisting">#define <a href="#LIBXML_OUTPUT_ENABLED">LIBXML_OUTPUT_ENABLED</a></pre><pre class="programlisting">#define <a href="#LIBXML_PATTERN_ENABLED">LIBXML_PATTERN_ENABLED</a></pre><pre class="programlisting">#define <a href="#LIBXML_PUSH_ENABLED">LIBXML_PUSH_ENABLED</a></pre><pre class="programlisting">#define <a href="#LIBXML_READER_ENABLED">LIBXML_READER_ENABLED</a></pre><pre class="programlisting">#define <a href="#LIBXML_REGEXP_ENABLED">LIBXML_REGEXP_ENABLED</a></pre><pre class="programlisting">#define <a href="#LIBXML_SAX1_ENABLED">LIBXML_SAX1_ENABLED</a></pre><pre class="programlisting">#define <a href="#LIBXML_SCHEMAS_ENABLED">LIBXML_SCHEMAS_ENABLED</a></pre><pre class="programlisting">#define <a href="#LIBXML_SCHEMATRON_ENABLED">LIBXML_SCHEMATRON_ENABLED</a></pre><pre class="programlisting">#define <a href="#LIBXML_TEST_VERSION">LIBXML_TEST_VERSION</a></pre><pre class="programlisting">#define <a href="#LIBXML_THREAD_ENABLED">LIBXML_THREAD_ENABLED</a></pre><pre class="programlisting">#define <a href="#LIBXML_TREE_ENABLED">LIBXML_TREE_ENABLED</a></pre><pre class="programlisting">#define <a href="#LIBXML_UNICODE_ENABLED">LIBXML_UNICODE_ENABLED</a></pre><pre class="programlisting">#define <a href="#LIBXML_VALID_ENABLED">LIBXML_VALID_ENABLED</a></pre><pre class="programlisting">#define <a href="#LIBXML_VERSION">LIBXML_VERSION</a></pre><pre class="programlisting">#define <a href="#LIBXML_VERSION_EXTRA">LIBXML_VERSION_EXTRA</a></pre><pre class="programlisting">#define <a href="#LIBXML_VERSION_STRING">LIBXML_VERSION_STRING</a></pre><pre class="programlisting">#define <a href="#LIBXML_WRITER_ENABLED">LIBXML_WRITER_ENABLED</a></pre><pre class="programlisting">#define <a href="#LIBXML_XINCLUDE_ENABLED">LIBXML_XINCLUDE_ENABLED</a></pre><pre class="programlisting">#define <a href="#LIBXML_XPATH_ENABLED">LIBXML_XPATH_ENABLED</a></pre><pre class="programlisting">#define <a href="#LIBXML_XPTR_ENABLED">LIBXML_XPTR_ENABLED</a></pre><pre class="programlisting">#define <a href="#LIBXML_ZLIB_ENABLED">LIBXML_ZLIB_ENABLED</a></pre><pre class="programlisting">#define <a href="#WITHOUT_TRIO">WITHOUT_TRIO</a></pre><pre class="programlisting">#define <a href="#WITH_TRIO">WITH_TRIO</a></pre><pre class="programlisting">void <a href="#xmlCheckVersion">xmlCheckVersion</a> (int version)</pre>
<h2>Description</h2>
+<h3><a name="ATTRIBUTE_ALLOC_SIZE" id="ATTRIBUTE_ALLOC_SIZE"></a>Macro: ATTRIBUTE_ALLOC_SIZE</h3><pre>#define ATTRIBUTE_ALLOC_SIZE</pre><p>Macro used to indicate to GCC this is an allocator function</p>
+<h3><a name="ATTRIBUTE_PRINTF" id="ATTRIBUTE_PRINTF"></a>Macro: ATTRIBUTE_PRINTF</h3><pre>#define ATTRIBUTE_PRINTF</pre><p>Macro used to indicate to GCC the parameter are printf like</p>
<h3><a name="ATTRIBUTE_UNUSED" id="ATTRIBUTE_UNUSED"></a>Macro: ATTRIBUTE_UNUSED</h3><pre>#define ATTRIBUTE_UNUSED</pre><p>Macro used to signal to GCC unused function parameters</p>
<h3><a name="DEBUG_MEMORY_LOCATION" id="DEBUG_MEMORY_LOCATION"></a>Macro: DEBUG_MEMORY_LOCATION</h3><pre>#define DEBUG_MEMORY_LOCATION</pre><p>Whether the memory debugging is configured in</p>
<h3><a name="LIBXML_AUTOMATA_ENABLED" id="LIBXML_AUTOMATA_ENABLED"></a>Macro: LIBXML_AUTOMATA_ENABLED</h3><pre>#define LIBXML_AUTOMATA_ENABLED</pre><p>Whether the automata interfaces are compiled in</p>
diff --git a/doc/libxml2-api.xml b/doc/libxml2-api.xml
index b396c3e..30da57c 100644
--- a/doc/libxml2-api.xml
+++ b/doc/libxml2-api.xml
@@ -679,7 +679,7 @@
<exports symbol='XML_PARSE_UNKNOWN' type='enum'/>
<exports symbol='XML_WITH_XPATH' type='enum'/>
<exports symbol='XML_WITH_HTML' type='enum'/>
- <exports symbol='XML_WITH_FTP' type='enum'/>
+ <exports symbol='XML_PARSE_OLDSAX' type='enum'/>
<exports symbol='XML_WITH_WRITER' type='enum'/>
<exports symbol='XML_WITH_C14N' type='enum'/>
<exports symbol='XML_PARSE_PUSH_DOM' type='enum'/>
@@ -733,6 +733,7 @@
<exports symbol='XML_PARSER_START' type='enum'/>
<exports symbol='XML_WITH_DEBUG_MEM' type='enum'/>
<exports symbol='XML_PARSE_HUGE' type='enum'/>
+ <exports symbol='XML_WITH_FTP' type='enum'/>
<exports symbol='XML_PARSER_START_TAG' type='enum'/>
<exports symbol='XML_PARSER_IGNORE' type='enum'/>
<exports symbol='XML_PARSER_COMMENT' type='enum'/>
@@ -886,6 +887,7 @@
<exports symbol='IS_EXTENDER_CH' type='macro'/>
<exports symbol='IS_BLANK_CH' type='macro'/>
<exports symbol='IS_LETTER_CH' type='macro'/>
+ <exports symbol='XML_MAX_TEXT_LENGTH' type='macro'/>
<exports symbol='XML_SUBSTITUTE_NONE' type='macro'/>
<exports symbol='IS_COMBINING' type='macro'/>
<exports symbol='XML_MAX_NAMELEN' type='macro'/>
@@ -1543,11 +1545,12 @@
<exports symbol='xmlBufferAddHead' type='function'/>
<exports symbol='xmlNewPI' type='function'/>
<exports symbol='xmlDocDumpFormatMemoryEnc' type='function'/>
- <exports symbol='xmlUnsetNsProp' type='function'/>
+ <exports symbol='xmlChildElementCount' type='function'/>
<exports symbol='xmlElemDump' type='function'/>
<exports symbol='xmlSaveFormatFileTo' type='function'/>
<exports symbol='xmlGetIntSubset' type='function'/>
<exports symbol='xmlNodeBufGetContent' type='function'/>
+ <exports symbol='xmlNextElementSibling' type='function'/>
<exports symbol='xmlBufferWriteChar' type='function'/>
<exports symbol='xmlBufferFree' type='function'/>
<exports symbol='xmlDOMWrapCloneNode' type='function'/>
@@ -1577,6 +1580,8 @@
<exports symbol='xmlGetNodePath' type='function'/>
<exports symbol='xmlFreePropList' type='function'/>
<exports symbol='xmlNodeAddContent' type='function'/>
+ <exports symbol='xmlUnsetNsProp' type='function'/>
+ <exports symbol='xmlFirstElementChild' type='function'/>
<exports symbol='xmlAddNextSibling' type='function'/>
<exports symbol='xmlIsBlankNode' type='function'/>
<exports symbol='xmlNewGlobalNs' type='function'/>
@@ -1597,6 +1602,7 @@
<exports symbol='xmlTextConcat' type='function'/>
<exports symbol='xmlNodeGetSpacePreserve' type='function'/>
<exports symbol='xmlBufferShrink' type='function'/>
+ <exports symbol='xmlPreviousElementSibling' type='function'/>
<exports symbol='xmlNodeSetContentLen' type='function'/>
<exports symbol='xmlNodeAddContentLen' type='function'/>
<exports symbol='xmlBufferWriteQuotedString' type='function'/>
@@ -1611,6 +1617,7 @@
<exports symbol='xmlGetLineNo' type='function'/>
<exports symbol='xmlBufferContent' type='function'/>
<exports symbol='xmlRemoveProp' type='function'/>
+ <exports symbol='xmlLastElementChild' type='function'/>
<exports symbol='xmlNodeGetLang' type='function'/>
<exports symbol='xmlGetDocCompressMode' type='function'/>
<exports symbol='xmlGetNsProp' type='function'/>
@@ -3329,7 +3336,7 @@
<description>compile-time version informations for the XML library </description>
<author>Daniel Veillard </author>
<exports symbol='LIBXML_VERSION_EXTRA' type='macro'/>
- <exports symbol='LIBXML_MODULES_ENABLED' type='macro'/>
+ <exports symbol='LIBXML_DOCB_ENABLED' type='macro'/>
<exports symbol='LIBXML_LEGACY_ENABLED' type='macro'/>
<exports symbol='LIBXML_READER_ENABLED' type='macro'/>
<exports symbol='LIBXML_THREAD_ENABLED' type='macro'/>
@@ -3338,8 +3345,8 @@
<exports symbol='LIBXML_DEBUG_ENABLED' type='macro'/>
<exports symbol='LIBXML_XINCLUDE_ENABLED' type='macro'/>
<exports symbol='ATTRIBUTE_UNUSED' type='macro'/>
- <exports symbol='LIBXML_DOCB_ENABLED' type='macro'/>
- <exports symbol='LIBXML_PUSH_ENABLED' type='macro'/>
+ <exports symbol='LIBXML_MODULES_ENABLED' type='macro'/>
+ <exports symbol='ATTRIBUTE_PRINTF' type='macro'/>
<exports symbol='LIBXML_SAX1_ENABLED' type='macro'/>
<exports symbol='WITHOUT_TRIO' type='macro'/>
<exports symbol='LIBXML_SCHEMATRON_ENABLED' type='macro'/>
@@ -3355,11 +3362,13 @@
<exports symbol='LIBXML_MODULE_EXTENSION' type='macro'/>
<exports symbol='LIBXML_ICONV_ENABLED' type='macro'/>
<exports symbol='LIBXML_HTML_ENABLED' type='macro'/>
+ <exports symbol='LIBXML_WRITER_ENABLED' type='macro'/>
<exports symbol='LIBXML_UNICODE_ENABLED' type='macro'/>
<exports symbol='LIBXML_FTP_ENABLED' type='macro'/>
<exports symbol='LIBXML_AUTOMATA_ENABLED' type='macro'/>
<exports symbol='LIBXML_ZLIB_ENABLED' type='macro'/>
- <exports symbol='LIBXML_WRITER_ENABLED' type='macro'/>
+ <exports symbol='ATTRIBUTE_ALLOC_SIZE' type='macro'/>
+ <exports symbol='LIBXML_PUSH_ENABLED' type='macro'/>
<exports symbol='LIBXML_C14N_ENABLED' type='macro'/>
<exports symbol='LIBXML_SCHEMAS_ENABLED' type='macro'/>
<exports symbol='DEBUG_MEMORY_LOCATION' type='macro'/>
@@ -3759,6 +3768,12 @@
</file>
</files>
<symbols>
+ <macro name='ATTRIBUTE_ALLOC_SIZE' file='xmlversion'>
+ <info>Macro used to indicate to GCC this is an allocator function</info>
+ </macro>
+ <macro name='ATTRIBUTE_PRINTF' file='xmlversion'>
+ <info>Macro used to indicate to GCC the parameter are printf like</info>
+ </macro>
<macro name='ATTRIBUTE_UNUSED' file='xmlversion'>
<info>Macro used to signal to GCC unused function parameters</info>
</macro>
@@ -4101,6 +4116,9 @@
<macro name='XML_MAX_NAMELEN' file='parserInternals'>
<info>Identifiers can be longer, but this will be more costly at runtime.</info>
</macro>
+ <macro name='XML_MAX_TEXT_LENGTH' file='parserInternals'>
+ <info>Maximum size allowed for a single text node when building a tree. This is not a limitation of the parser but a safety boundary feature, use XML_PARSE_HUGE option to override it.</info>
+ </macro>
<macro name='XML_SAX2_MAGIC' file='parser'>
<info>Special constant found in SAX2 blocks initialized fields</info>
</macro>
@@ -5027,7 +5045,7 @@ crash if you try to modify the tree)'/>
<enum name='XML_PARSE_DTDATTR' file='parser' value='8' type='xmlParserOption' info='default DTD attributes'/>
<enum name='XML_PARSE_DTDLOAD' file='parser' value='4' type='xmlParserOption' info='load the external subset'/>
<enum name='XML_PARSE_DTDVALID' file='parser' value='16' type='xmlParserOption' info='validate with the DTD'/>
- <enum name='XML_PARSE_HUGE' file='parser' value='524288' type='xmlParserOption' info=' relax any hardcoded limit from the parser'/>
+ <enum name='XML_PARSE_HUGE' file='parser' value='524288' type='xmlParserOption' info='relax any hardcoded limit from the parser'/>
<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'/>
@@ -5039,6 +5057,7 @@ crash if you try to modify the tree)'/>
<enum name='XML_PARSE_NOXINCNODE' file='parser' value='32768' type='xmlParserOption' info='do not generate XINCLUDE START/END nodes'/>
<enum name='XML_PARSE_NSCLEAN' file='parser' value='8192' type='xmlParserOption' info='remove redundant namespaces declarations'/>
<enum name='XML_PARSE_OLD10' file='parser' value='131072' type='xmlParserOption' info='parse using XML-1.0 before update 5'/>
+ <enum name='XML_PARSE_OLDSAX' file='parser' value='1048576' type='xmlParserOption' info=' parse using SAX2 interface from before 2.7.0'/>
<enum name='XML_PARSE_PEDANTIC' file='parser' value='128' type='xmlParserOption' info='pedantic error reporting'/>
<enum name='XML_PARSE_PUSH_DOM' file='parser' value='3' type='xmlParserMode'/>
<enum name='XML_PARSE_PUSH_SAX' file='parser' value='4' type='xmlParserMode'/>
@@ -8824,6 +8843,12 @@ Could we use @subtypes for this?'/>
<return type='void'/>
<arg name='version' type='int' info='the include version number'/>
</function>
+ <function name='xmlChildElementCount' file='tree' module='tree'>
+ <cond>defined(LIBXML_TREE_ENABLED)</cond>
+ <info>Finds the current number of child nodes of that element which are element nodes. Note the handling of entities references is different than in the W3C DOM element traversal spec since we don&apos;t have back reference from entities content to entities references.</info>
+ <return type='unsigned long' info='the count of element child or 0 if not available'/>
+ <arg name='parent' type='xmlNodePtr' info='the parent node'/>
+ </function>
<function name='xmlCleanupCharEncodingHandlers' file='encoding' module='encoding'>
<info>Cleanup the memory allocated for the char encoding support, it unregisters all the encoding handlers and the aliases.</info>
<return type='void'/>
@@ -9718,6 +9743,12 @@ Could we use @subtypes for this?'/>
<return type='xmlCharEncodingHandlerPtr' info='the handler or NULL if not found'/>
<arg name='name' type='const char *' info='a string describing the char encoding.'/>
</function>
+ <function name='xmlFirstElementChild' file='tree' module='tree'>
+ <cond>defined(LIBXML_TREE_ENABLED)</cond>
+ <info>Finds the first child node of that element which is a Element node Note the handling of entities references is different than in the W3C DOM element traversal spec since we don&apos;t have back reference from entities content to entities references.</info>
+ <return type='xmlNodePtr' info='the first element child or NULL if not available'/>
+ <arg name='parent' type='xmlNodePtr' info='the parent node'/>
+ </function>
<function name='xmlFreeAttributeTable' file='valid' module='valid'>
<info>Deallocate the memory used by an entities hash table.</info>
<return type='void'/>
@@ -10550,6 +10581,12 @@ Could we use @subtypes for this?'/>
<return type='int' info='the last value for 0 for no substitution, 1 for substitution.'/>
<arg name='val' type='int' info='int 0 or 1'/>
</function>
+ <function name='xmlLastElementChild' file='tree' module='tree'>
+ <cond>defined(LIBXML_TREE_ENABLED)</cond>
+ <info>Finds the last child node of that element which is a Element node Note the handling of entities references is different than in the W3C DOM element traversal spec since we don&apos;t have back reference from entities content to entities references.</info>
+ <return type='xmlNodePtr' info='the last element child or NULL if not available'/>
+ <arg name='parent' type='xmlNodePtr' info='the parent node'/>
+ </function>
<function name='xmlLineNumbersDefault' file='parser' module='parserInternals'>
<info>Set and return the previous value for enabling line numbers in elements contents. This may break on old application and is turned off by default.</info>
<return type='int' info='the last value for 0 for no substitution, 1 for substitution.'/>
@@ -11515,6 +11552,12 @@ Could we use @subtypes for this?'/>
<return type='void'/>
<arg name='ctxt' type='xmlParserCtxtPtr' info='the XML parser context'/>
</function>
+ <function name='xmlNextElementSibling' file='tree' module='tree'>
+ <cond>defined(LIBXML_TREE_ENABLED)</cond>
+ <info>Finds the first closest next sibling of the node which is an element node. Note the handling of entities references is different than in the W3C DOM element traversal spec since we don&apos;t have back reference from entities content to entities references.</info>
+ <return type='xmlNodePtr' info='the next element sibling or NULL if not available'/>
+ <arg name='node' type='xmlNodePtr' info='the current node'/>
+ </function>
<function name='xmlNoNetExternalEntityLoader' file='xmlIO' module='xmlIO'>
<info>A specific entity loader disabling network accesses, though still allowing local catalog accesses for resolution.</info>
<return type='xmlParserInputPtr' info='a new allocated xmlParserInputPtr, or NULL.'/>
@@ -12375,6 +12418,12 @@ Could we use @subtypes for this?'/>
<info>Clear the top input callback from the input stack. this includes the compiled-in I/O.</info>
<return type='int' info='the number of input callback registered or -1 in case of error.'/>
</function>
+ <function name='xmlPreviousElementSibling' file='tree' module='tree'>
+ <cond>defined(LIBXML_TREE_ENABLED)</cond>
+ <info>Finds the first closest previous sibling of the node which is an element node. Note the handling of entities references is different than in the W3C DOM element traversal spec since we don&apos;t have back reference from entities content to entities references.</info>
+ <return type='xmlNodePtr' info='the previous element sibling or NULL if not available'/>
+ <arg name='node' type='xmlNodePtr' info='the current node'/>
+ </function>
<function name='xmlPrintURI' file='uri' module='uri'>
<info>Prints the URI in the stream @stream.</info>
<return type='void'/>
@@ -16744,10 +16793,10 @@ Could we use @subtypes for this?'/>
</function>
<function name='xmlValidateAttributeValue' file='valid' module='valid'>
<cond>defined(LIBXML_VALID_ENABLED)</cond>
- <info></info>
- <return type='int' info=''/>
- <arg name='type' type='xmlAttributeType' info=''/>
- <arg name='value' type='const xmlChar *' info=''/>
+ <info>Validate that the given attribute value match the proper production [ VC: ID ] Values of type ID must match the Name production.... [ VC: IDREF ] Values of type IDREF must match the Name production, and values of type IDREFS must match Names ... [ VC: Entity Name ] Values of type ENTITY must match the Name production, values of type ENTITIES must match Names ... [ VC: Name Token ] Values of type NMTOKEN must match the Nmtoken production; values of type NMTOKENS must match Nmtokens.</info>
+ <return type='int' info='1 if valid or 0 otherwise'/>
+ <arg name='type' type='xmlAttributeType' info='an attribute type'/>
+ <arg name='value' type='const xmlChar *' info='an attribute value'/>
</function>
<function name='xmlValidateDocument' file='valid' module='valid'>
<cond>defined(LIBXML_VALID_ENABLED)</cond>
diff --git a/doc/libxml2.xsa b/doc/libxml2.xsa
index 5a673bb..73f12e3 100644
--- a/doc/libxml2.xsa
+++ b/doc/libxml2.xsa
@@ -8,14 +8,17 @@
</vendor>
<product id="libxml2">
<name>libxml2</name>
- <version>2.7.1</version>
- <last-release> Sep 1 2008</last-release>
+ <version>2.7.2</version>
+ <last-release> Oct 3 2008</last-release>
<info-url>http://xmlsoft.org/</info-url>
- <changes> - Portability fix: Borland C fix (Moritz Both)
- - Bug fixes: python serialization wrappers, XPath QName corner
- case handking and leaks (Martin)
- - Improvement: extend the xmlSave to handle HTML documents and trees
- - Cleanup: python serialization wrappers
+ <changes> - Portability fix: fix solaris compilation problem, fix compilation
+ if XPath is not configured in
+ - Bug fixes: nasty entity bug introduced in 2.7.0, restore old behaviour
+ when saving an HTML doc with an xml dump function, HTML UTF-8 parsing
+ bug, fix reader custom error handlers (Riccardo Scussat)
+
+ - Improvement: xmlSave options for more flexibility to save as
+ XML/HTML/XHTML, handle leading BOM in HTML documents
</changes>
</product>
diff --git a/doc/news.html b/doc/news.html
index 31a0cf0..50d59a1 100644
--- a/doc/news.html
+++ b/doc/news.html
@@ -12,7 +12,19 @@ to help those</p><ul><li>More testing on RelaxNG</li>
<li>Finishing up <a href="http://www.w3.org/TR/xmlschema-1/">XML
Schemas</a></li>
</ul><p>The <a href="ChangeLog.html">change log</a> describes the recents commits
-to the <a href="http://svn.gnome.org/viewcvs/libxml2/trunk/">SVN</a> code base.</p><p>Here is the list of public releases:</p><h3>2.7.2: Oct 3 2008</h3><ul><li>Portability fix: fix solaris compilation problem, fix compilation
+to the <a href="http://svn.gnome.org/viewcvs/libxml2/trunk/">SVN</a> code base.</p><p>Here is the list of public releases:</p><h3>2.7.3: Jan 18 2009</h3><ul><li>Build fix: fix build when HTML support is not included.</li>
+ <li>Bug fixes: avoid memory overflow in gigantic text nodes,
+ indentation problem on the writed (Rob Richards),
+ xmlAddChildList pointer problem (Rob Richards and Kevin Milburn),
+ xmlAddChild problem with attribute (Rob Richards and Kris Breuker),
+ avoid a memory leak in an edge case (Daniel Zimmermann),
+ deallocate some pthread data (Alex Ott).</li>
+ <li>Improvements: configure option to avoid rebuilding docs (Adrian Bunk),
+ limit text nodes to 10MB max by default, add element traversal
+ APIs, add a parser option to enable pre 2.7 SAX behavior (Rob Richards),
+ add gcc malloc checking (Marcus Meissner), add gcc printf like functions
+ parameters checking (Marcus Meissner).</li>
+</ul><h3>2.7.2: Oct 3 2008</h3><ul><li>Portability fix: fix solaris compilation problem, fix compilation
if XPath is not configured in</li>
<li>Bug fixes: nasty entity bug introduced in 2.7.0, restore old behaviour
when saving an HTML doc with an xml dump function, HTML UTF-8 parsing
diff --git a/doc/xml.html b/doc/xml.html
index b443229..c28c31d 100644
--- a/doc/xml.html
+++ b/doc/xml.html
@@ -727,6 +727,21 @@ to the <a href="http://svn.gnome.org/viewcvs/libxml2/trunk/">SVN</a> code base.<
<p>Here is the list of public releases:</p>
+<h3>2.7.3: Jan 18 2009</h3>
+<ul>
+ <li>Build fix: fix build when HTML support is not included.</li>
+ <li>Bug fixes: avoid memory overflow in gigantic text nodes,
+ indentation problem on the writed (Rob Richards),
+ xmlAddChildList pointer problem (Rob Richards and Kevin Milburn),
+ xmlAddChild problem with attribute (Rob Richards and Kris Breuker),
+ avoid a memory leak in an edge case (Daniel Zimmermann),
+ deallocate some pthread data (Alex Ott).</li>
+ <li>Improvements: configure option to avoid rebuilding docs (Adrian Bunk),
+ limit text nodes to 10MB max by default, add element traversal
+ APIs, add a parser option to enable pre 2.7 SAX behavior (Rob Richards),
+ add gcc malloc checking (Marcus Meissner), add gcc printf like functions
+ parameters checking (Marcus Meissner).</li>
+</ul>
<h3>2.7.2: Oct 3 2008</h3>
<ul>
<li>Portability fix: fix solaris compilation problem, fix compilation
diff --git a/elfgcchack.h b/elfgcchack.h
index a747fca..14cad6d 100644
--- a/elfgcchack.h
+++ b/elfgcchack.h
@@ -1991,6 +1991,18 @@ extern __typeof (xmlCheckVersion) xmlCheckVersion__internal_alias __attribute((v
#endif
#endif
+#if defined(LIBXML_TREE_ENABLED)
+#ifdef bottom_tree
+#undef xmlChildElementCount
+extern __typeof (xmlChildElementCount) xmlChildElementCount __attribute((alias("xmlChildElementCount__internal_alias")));
+#else
+#ifndef xmlChildElementCount
+extern __typeof (xmlChildElementCount) xmlChildElementCount__internal_alias __attribute((visibility("hidden")));
+#define xmlChildElementCount xmlChildElementCount__internal_alias
+#endif
+#endif
+#endif
+
#ifdef bottom_encoding
#undef xmlCleanupCharEncodingHandlers
extern __typeof (xmlCleanupCharEncodingHandlers) xmlCleanupCharEncodingHandlers __attribute((alias("xmlCleanupCharEncodingHandlers__internal_alias")));
@@ -3419,6 +3431,18 @@ extern __typeof (xmlFindCharEncodingHandler) xmlFindCharEncodingHandler__interna
#endif
#endif
+#if defined(LIBXML_TREE_ENABLED)
+#ifdef bottom_tree
+#undef xmlFirstElementChild
+extern __typeof (xmlFirstElementChild) xmlFirstElementChild __attribute((alias("xmlFirstElementChild__internal_alias")));
+#else
+#ifndef xmlFirstElementChild
+extern __typeof (xmlFirstElementChild) xmlFirstElementChild__internal_alias __attribute((visibility("hidden")));
+#define xmlFirstElementChild xmlFirstElementChild__internal_alias
+#endif
+#endif
+#endif
+
#ifdef bottom_valid
#undef xmlFreeAttributeTable
extern __typeof (xmlFreeAttributeTable) xmlFreeAttributeTable __attribute((alias("xmlFreeAttributeTable__internal_alias")));
@@ -4759,6 +4783,18 @@ extern __typeof (xmlKeepBlanksDefault) xmlKeepBlanksDefault__internal_alias __at
#endif
#endif
+#if defined(LIBXML_TREE_ENABLED)
+#ifdef bottom_tree
+#undef xmlLastElementChild
+extern __typeof (xmlLastElementChild) xmlLastElementChild __attribute((alias("xmlLastElementChild__internal_alias")));
+#else
+#ifndef xmlLastElementChild
+extern __typeof (xmlLastElementChild) xmlLastElementChild__internal_alias __attribute((visibility("hidden")));
+#define xmlLastElementChild xmlLastElementChild__internal_alias
+#endif
+#endif
+#endif
+
#ifdef bottom_parserInternals
#undef xmlLineNumbersDefault
extern __typeof (xmlLineNumbersDefault) xmlLineNumbersDefault __attribute((alias("xmlLineNumbersDefault__internal_alias")));
@@ -5162,6 +5198,16 @@ extern __typeof (xmlMemDisplay) xmlMemDisplay__internal_alias __attribute((visib
#endif
#ifdef bottom_xmlmemory
+#undef xmlMemDisplayLast
+extern __typeof (xmlMemDisplayLast) xmlMemDisplayLast __attribute((alias("xmlMemDisplayLast__internal_alias")));
+#else
+#ifndef xmlMemDisplayLast
+extern __typeof (xmlMemDisplayLast) xmlMemDisplayLast__internal_alias __attribute((visibility("hidden")));
+#define xmlMemDisplayLast xmlMemDisplayLast__internal_alias
+#endif
+#endif
+
+#ifdef bottom_xmlmemory
#undef xmlMemFree
extern __typeof (xmlMemFree) xmlMemFree __attribute((alias("xmlMemFree__internal_alias")));
#else
@@ -6043,6 +6089,16 @@ extern __typeof (xmlNewElementContent) xmlNewElementContent__internal_alias __at
#endif
#endif
+#ifdef bottom_entities
+#undef xmlNewEntity
+extern __typeof (xmlNewEntity) xmlNewEntity __attribute((alias("xmlNewEntity__internal_alias")));
+#else
+#ifndef xmlNewEntity
+extern __typeof (xmlNewEntity) xmlNewEntity__internal_alias __attribute((visibility("hidden")));
+#define xmlNewEntity xmlNewEntity__internal_alias
+#endif
+#endif
+
#ifdef bottom_parserInternals
#undef xmlNewEntityInputStream
extern __typeof (xmlNewEntityInputStream) xmlNewEntityInputStream __attribute((alias("xmlNewEntityInputStream__internal_alias")));
@@ -6367,6 +6423,18 @@ extern __typeof (xmlNextChar) xmlNextChar__internal_alias __attribute((visibilit
#endif
#endif
+#if defined(LIBXML_TREE_ENABLED)
+#ifdef bottom_tree
+#undef xmlNextElementSibling
+extern __typeof (xmlNextElementSibling) xmlNextElementSibling __attribute((alias("xmlNextElementSibling__internal_alias")));
+#else
+#ifndef xmlNextElementSibling
+extern __typeof (xmlNextElementSibling) xmlNextElementSibling__internal_alias __attribute((visibility("hidden")));
+#define xmlNextElementSibling xmlNextElementSibling__internal_alias
+#endif
+#endif
+#endif
+
#ifdef bottom_xmlIO
#undef xmlNoNetExternalEntityLoader
extern __typeof (xmlNoNetExternalEntityLoader) xmlNoNetExternalEntityLoader __attribute((alias("xmlNoNetExternalEntityLoader__internal_alias")));
@@ -7769,6 +7837,18 @@ extern __typeof (xmlPopInputCallbacks) xmlPopInputCallbacks__internal_alias __at
#endif
#endif
+#if defined(LIBXML_TREE_ENABLED)
+#ifdef bottom_tree
+#undef xmlPreviousElementSibling
+extern __typeof (xmlPreviousElementSibling) xmlPreviousElementSibling __attribute((alias("xmlPreviousElementSibling__internal_alias")));
+#else
+#ifndef xmlPreviousElementSibling
+extern __typeof (xmlPreviousElementSibling) xmlPreviousElementSibling__internal_alias __attribute((visibility("hidden")));
+#define xmlPreviousElementSibling xmlPreviousElementSibling__internal_alias
+#endif
+#endif
+#endif
+
#ifdef bottom_uri
#undef xmlPrintURI
extern __typeof (xmlPrintURI) xmlPrintURI __attribute((alias("xmlPrintURI__internal_alias")));
diff --git a/include/libxml/parser.h b/include/libxml/parser.h
index 24d5cf9..567addb 100644
--- a/include/libxml/parser.h
+++ b/include/libxml/parser.h
@@ -594,7 +594,7 @@ typedef void (*cdataBlockSAXFunc) (
* Display and format a warning messages, callback.
*/
typedef void (XMLCDECL *warningSAXFunc) (void *ctx,
- const char *msg, ...);
+ const char *msg, ...) ATTRIBUTE_PRINTF(2,3);
/**
* errorSAXFunc:
* @ctx: an XML parser context
@@ -604,7 +604,7 @@ typedef void (XMLCDECL *warningSAXFunc) (void *ctx,
* Display and format an error messages, callback.
*/
typedef void (XMLCDECL *errorSAXFunc) (void *ctx,
- const char *msg, ...);
+ const char *msg, ...) ATTRIBUTE_PRINTF(2,3);
/**
* fatalErrorSAXFunc:
* @ctx: an XML parser context
@@ -616,7 +616,7 @@ typedef void (XMLCDECL *errorSAXFunc) (void *ctx,
* get all the callbacks for errors.
*/
typedef void (XMLCDECL *fatalErrorSAXFunc) (void *ctx,
- const char *msg, ...);
+ const char *msg, ...) ATTRIBUTE_PRINTF(2,3);
/**
* isStandaloneSAXFunc:
* @ctx: the user data (XML parser context)
@@ -1096,7 +1096,8 @@ typedef enum {
crash if you try to modify the tree) */
XML_PARSE_OLD10 = 1<<17,/* parse using XML-1.0 before update 5 */
XML_PARSE_NOBASEFIX = 1<<18,/* do not fixup XINCLUDE xml:base uris */
- XML_PARSE_HUGE = 1<<19 /* relax any hardcoded limit from the parser */
+ XML_PARSE_HUGE = 1<<19, /* relax any hardcoded limit from the parser */
+ XML_PARSE_OLDSAX = 1<<20 /* parse using SAX2 interface from before 2.7.0 */
} xmlParserOption;
XMLPUBFUN void XMLCALL
diff --git a/include/libxml/parserInternals.h b/include/libxml/parserInternals.h
index fddcd27..a5e75b5 100644
--- a/include/libxml/parserInternals.h
+++ b/include/libxml/parserInternals.h
@@ -24,18 +24,27 @@ extern "C" {
/**
* xmlParserMaxDepth:
*
- * arbitrary depth limit for the XML documents that we allow to
- * process. This is not a limitation of the parser but a safety
- * boundary feature.
+ * arbitrary depth limit for the XML documents that we allow to
+ * process. This is not a limitation of the parser but a safety
+ * boundary feature, use XML_PARSE_HUGE option to override it.
*/
XMLPUBVAR unsigned int xmlParserMaxDepth;
- /**
- * XML_MAX_NAMELEN:
- *
- * Identifiers can be longer, but this will be more costly
- * at runtime.
- */
+/**
+ * XML_MAX_TEXT_LENGTH:
+ *
+ * Maximum size allowed for a single text node when building a tree.
+ * This is not a limitation of the parser but a safety boundary feature,
+ * use XML_PARSE_HUGE option to override it.
+ */
+#define XML_MAX_TEXT_LENGTH 10000000
+
+/**
+ * XML_MAX_NAMELEN:
+ *
+ * Identifiers can be longer, but this will be more costly
+ * at runtime.
+ */
#define XML_MAX_NAMELEN 100
/**
diff --git a/include/libxml/relaxng.h b/include/libxml/relaxng.h
index 29c91c7..d3e39e0 100644
--- a/include/libxml/relaxng.h
+++ b/include/libxml/relaxng.h
@@ -32,7 +32,7 @@ typedef xmlRelaxNG *xmlRelaxNGPtr;
*
* Signature of an error callback from a Relax-NG validation
*/
-typedef void (XMLCDECL *xmlRelaxNGValidityErrorFunc) (void *ctx, const char *msg, ...);
+typedef void (XMLCDECL *xmlRelaxNGValidityErrorFunc) (void *ctx, const char *msg, ...) ATTRIBUTE_PRINTF(2,3);
/**
* xmlRelaxNGValidityWarningFunc:
@@ -42,7 +42,7 @@ typedef void (XMLCDECL *xmlRelaxNGValidityErrorFunc) (void *ctx, const char *msg
*
* Signature of a warning callback from a Relax-NG validation
*/
-typedef void (XMLCDECL *xmlRelaxNGValidityWarningFunc) (void *ctx, const char *msg, ...);
+typedef void (XMLCDECL *xmlRelaxNGValidityWarningFunc) (void *ctx, const char *msg, ...) ATTRIBUTE_PRINTF(2,3);
/**
* A schemas validation context
@@ -114,27 +114,27 @@ typedef enum {
XMLPUBFUN int XMLCALL
xmlRelaxNGInitTypes (void);
-XMLPUBFUN void XMLCALL
+XMLPUBFUN void XMLCALL
xmlRelaxNGCleanupTypes (void);
/*
* Interfaces for parsing.
*/
-XMLPUBFUN xmlRelaxNGParserCtxtPtr XMLCALL
+XMLPUBFUN xmlRelaxNGParserCtxtPtr XMLCALL
xmlRelaxNGNewParserCtxt (const char *URL);
-XMLPUBFUN xmlRelaxNGParserCtxtPtr XMLCALL
+XMLPUBFUN xmlRelaxNGParserCtxtPtr XMLCALL
xmlRelaxNGNewMemParserCtxt (const char *buffer,
int size);
-XMLPUBFUN xmlRelaxNGParserCtxtPtr XMLCALL
+XMLPUBFUN xmlRelaxNGParserCtxtPtr XMLCALL
xmlRelaxNGNewDocParserCtxt (xmlDocPtr doc);
XMLPUBFUN int XMLCALL
xmlRelaxParserSetFlag (xmlRelaxNGParserCtxtPtr ctxt,
- int flag);
+ int flag);
-XMLPUBFUN void XMLCALL
+XMLPUBFUN void XMLCALL
xmlRelaxNGFreeParserCtxt (xmlRelaxNGParserCtxtPtr ctxt);
-XMLPUBFUN void XMLCALL
+XMLPUBFUN void XMLCALL
xmlRelaxNGSetParserErrors(xmlRelaxNGParserCtxtPtr ctxt,
xmlRelaxNGValidityErrorFunc err,
xmlRelaxNGValidityWarningFunc warn,
@@ -149,12 +149,12 @@ XMLPUBFUN void XMLCALL
xmlRelaxNGParserCtxtPtr ctxt,
xmlStructuredErrorFunc serror,
void *ctx);
-XMLPUBFUN xmlRelaxNGPtr XMLCALL
+XMLPUBFUN xmlRelaxNGPtr XMLCALL
xmlRelaxNGParse (xmlRelaxNGParserCtxtPtr ctxt);
-XMLPUBFUN void XMLCALL
+XMLPUBFUN void XMLCALL
xmlRelaxNGFree (xmlRelaxNGPtr schema);
#ifdef LIBXML_OUTPUT_ENABLED
-XMLPUBFUN void XMLCALL
+XMLPUBFUN void XMLCALL
xmlRelaxNGDump (FILE *output,
xmlRelaxNGPtr schema);
XMLPUBFUN void XMLCALL
@@ -164,12 +164,12 @@ XMLPUBFUN void XMLCALL
/*
* Interfaces for validating
*/
-XMLPUBFUN void XMLCALL
+XMLPUBFUN void XMLCALL
xmlRelaxNGSetValidErrors(xmlRelaxNGValidCtxtPtr ctxt,
xmlRelaxNGValidityErrorFunc err,
xmlRelaxNGValidityWarningFunc warn,
void *ctx);
-XMLPUBFUN int XMLCALL
+XMLPUBFUN int XMLCALL
xmlRelaxNGGetValidErrors(xmlRelaxNGValidCtxtPtr ctxt,
xmlRelaxNGValidityErrorFunc *err,
xmlRelaxNGValidityWarningFunc *warn,
@@ -177,29 +177,29 @@ XMLPUBFUN int XMLCALL
XMLPUBFUN void XMLCALL
xmlRelaxNGSetValidStructuredErrors(xmlRelaxNGValidCtxtPtr ctxt,
xmlStructuredErrorFunc serror, void *ctx);
-XMLPUBFUN xmlRelaxNGValidCtxtPtr XMLCALL
+XMLPUBFUN xmlRelaxNGValidCtxtPtr XMLCALL
xmlRelaxNGNewValidCtxt (xmlRelaxNGPtr schema);
-XMLPUBFUN void XMLCALL
+XMLPUBFUN void XMLCALL
xmlRelaxNGFreeValidCtxt (xmlRelaxNGValidCtxtPtr ctxt);
-XMLPUBFUN int XMLCALL
+XMLPUBFUN int XMLCALL
xmlRelaxNGValidateDoc (xmlRelaxNGValidCtxtPtr ctxt,
- xmlDocPtr doc);
+ xmlDocPtr doc);
/*
* Interfaces for progressive validation when possible
*/
-XMLPUBFUN int XMLCALL
+XMLPUBFUN int XMLCALL
xmlRelaxNGValidatePushElement (xmlRelaxNGValidCtxtPtr ctxt,
xmlDocPtr doc,
xmlNodePtr elem);
-XMLPUBFUN int XMLCALL
+XMLPUBFUN int XMLCALL
xmlRelaxNGValidatePushCData (xmlRelaxNGValidCtxtPtr ctxt,
const xmlChar *data,
int len);
-XMLPUBFUN int XMLCALL
+XMLPUBFUN int XMLCALL
xmlRelaxNGValidatePopElement (xmlRelaxNGValidCtxtPtr ctxt,
xmlDocPtr doc,
xmlNodePtr elem);
-XMLPUBFUN int XMLCALL
+XMLPUBFUN int XMLCALL
xmlRelaxNGValidateFullElement (xmlRelaxNGValidCtxtPtr ctxt,
xmlDocPtr doc,
xmlNodePtr elem);
diff --git a/include/libxml/tree.h b/include/libxml/tree.h
index 6a6a09d..b733589 100644
--- a/include/libxml/tree.h
+++ b/include/libxml/tree.h
@@ -1225,6 +1225,22 @@ XMLPUBFUN int XMLCALL
int deep,
int options);
+#ifdef LIBXML_TREE_ENABLED
+/*
+ * 5 interfaces from DOM ElementTraversal, but different in entities
+ * traversal.
+ */
+XMLPUBFUN unsigned long XMLCALL
+ xmlChildElementCount (xmlNodePtr parent);
+XMLPUBFUN xmlNodePtr XMLCALL
+ xmlNextElementSibling (xmlNodePtr node);
+XMLPUBFUN xmlNodePtr XMLCALL
+ xmlFirstElementChild (xmlNodePtr parent);
+XMLPUBFUN xmlNodePtr XMLCALL
+ xmlLastElementChild (xmlNodePtr parent);
+XMLPUBFUN xmlNodePtr XMLCALL
+ xmlPreviousElementSibling (xmlNodePtr node);
+#endif
#ifdef __cplusplus
}
#endif
diff --git a/include/libxml/valid.h b/include/libxml/valid.h
index 7492d28..f1892b0 100644
--- a/include/libxml/valid.h
+++ b/include/libxml/valid.h
@@ -41,7 +41,7 @@ typedef xmlValidState *xmlValidStatePtr;
*/
typedef void (XMLCDECL *xmlValidityErrorFunc) (void *ctx,
const char *msg,
- ...);
+ ...) ATTRIBUTE_PRINTF(2,3);
/**
* xmlValidityWarningFunc:
@@ -56,7 +56,7 @@ typedef void (XMLCDECL *xmlValidityErrorFunc) (void *ctx,
*/
typedef void (XMLCDECL *xmlValidityWarningFunc) (void *ctx,
const char *msg,
- ...);
+ ...) ATTRIBUTE_PRINTF(2,3);
#ifdef IN_LIBXML
/**
diff --git a/include/libxml/xmlerror.h b/include/libxml/xmlerror.h
index c9336b9..7cce9c3 100644
--- a/include/libxml/xmlerror.h
+++ b/include/libxml/xmlerror.h
@@ -61,7 +61,7 @@ typedef enum {
XML_FROM_CHECK, /* The error checking module */
XML_FROM_WRITER, /* The xmlwriter module */
XML_FROM_MODULE, /* The dynamically loaded module module*/
- XML_FROM_I18N, /* The module handling character conversion */
+ XML_FROM_I18N, /* The module handling character conversion */
XML_FROM_SCHEMATRONV /* The Schematron validator module */
} xmlErrorDomain;
@@ -645,7 +645,7 @@ typedef enum {
XML_SCHEMAV_CVC_ELT_4_3, /* 1852 */
XML_SCHEMAV_CVC_ELT_5_1_1, /* 1853 */
XML_SCHEMAV_CVC_ELT_5_1_2, /* 1854 */
- XML_SCHEMAV_CVC_ELT_5_2_1, /* 1855 */
+ XML_SCHEMAV_CVC_ELT_5_2_1, /* 1855 */
XML_SCHEMAV_CVC_ELT_5_2_2_1, /* 1856 */
XML_SCHEMAV_CVC_ELT_5_2_2_2_1, /* 1857 */
XML_SCHEMAV_CVC_ELT_5_2_2_2_2, /* 1858 */
@@ -670,7 +670,7 @@ typedef enum {
XML_SCHEMAV_CVC_IDC, /* 1877 */
XML_SCHEMAV_CVC_WILDCARD, /* 1878 */
XML_SCHEMAV_MISC, /* 1879 */
- XML_XPTR_UNKNOWN_SCHEME = 1900,
+ XML_XPTR_UNKNOWN_SCHEME = 1900,
XML_XPTR_CHILDSEQ_START, /* 1901 */
XML_XPTR_EVAL_FAILED, /* 1902 */
XML_XPTR_EXTRA_OBJECTS, /* 1903 */
@@ -691,15 +691,15 @@ typedef enum {
XML_SCHEMAP_SRC_SIMPLE_TYPE_2, /* 3001 */
XML_SCHEMAP_SRC_SIMPLE_TYPE_3, /* 3002 */
XML_SCHEMAP_SRC_SIMPLE_TYPE_4, /* 3003 */
- XML_SCHEMAP_SRC_RESOLVE, /* 3004 */
+ XML_SCHEMAP_SRC_RESOLVE, /* 3004 */
XML_SCHEMAP_SRC_RESTRICTION_BASE_OR_SIMPLETYPE, /* 3005 */
XML_SCHEMAP_SRC_LIST_ITEMTYPE_OR_SIMPLETYPE, /* 3006 */
XML_SCHEMAP_SRC_UNION_MEMBERTYPES_OR_SIMPLETYPES, /* 3007 */
XML_SCHEMAP_ST_PROPS_CORRECT_1, /* 3008 */
XML_SCHEMAP_ST_PROPS_CORRECT_2, /* 3009 */
- XML_SCHEMAP_ST_PROPS_CORRECT_3, /* 3010 */
+ XML_SCHEMAP_ST_PROPS_CORRECT_3, /* 3010 */
XML_SCHEMAP_COS_ST_RESTRICTS_1_1, /* 3011 */
- XML_SCHEMAP_COS_ST_RESTRICTS_1_2, /* 3012 */
+ XML_SCHEMAP_COS_ST_RESTRICTS_1_2, /* 3012 */
XML_SCHEMAP_COS_ST_RESTRICTS_1_3_1, /* 3013 */
XML_SCHEMAP_COS_ST_RESTRICTS_1_3_2, /* 3014 */
XML_SCHEMAP_COS_ST_RESTRICTS_2_1, /* 3015 */
@@ -718,7 +718,7 @@ typedef enum {
XML_SCHEMAP_COS_ST_RESTRICTS_3_3_2_3, /* 3028 */
XML_SCHEMAP_COS_ST_RESTRICTS_3_3_2_4, /* 3029 */
XML_SCHEMAP_COS_ST_RESTRICTS_3_3_2_5, /* 3030 */
- XML_SCHEMAP_COS_ST_DERIVED_OK_2_1, /* 3031 */
+ XML_SCHEMAP_COS_ST_DERIVED_OK_2_1, /* 3031 */
XML_SCHEMAP_COS_ST_DERIVED_OK_2_2, /* 3032 */
XML_SCHEMAP_S4S_ELEM_NOT_ALLOWED, /* 3033 */
XML_SCHEMAP_S4S_ELEM_MISSING, /* 3034 */
@@ -737,14 +737,14 @@ typedef enum {
XML_SCHEMAP_E_PROPS_CORRECT_4, /* 3047 */
XML_SCHEMAP_E_PROPS_CORRECT_5, /* 3048 */
XML_SCHEMAP_E_PROPS_CORRECT_6, /* 3049 */
- XML_SCHEMAP_SRC_INCLUDE, /* 3050 */
+ XML_SCHEMAP_SRC_INCLUDE, /* 3050 */
XML_SCHEMAP_SRC_ATTRIBUTE_1, /* 3051 */
XML_SCHEMAP_SRC_ATTRIBUTE_2, /* 3052 */
XML_SCHEMAP_SRC_ATTRIBUTE_3_1, /* 3053 */
XML_SCHEMAP_SRC_ATTRIBUTE_3_2, /* 3054 */
XML_SCHEMAP_SRC_ATTRIBUTE_4, /* 3055 */
XML_SCHEMAP_NO_XMLNS, /* 3056 */
- XML_SCHEMAP_NO_XSI, /* 3057 */
+ XML_SCHEMAP_NO_XSI, /* 3057 */
XML_SCHEMAP_COS_VALID_DEFAULT_1, /* 3058 */
XML_SCHEMAP_COS_VALID_DEFAULT_2_1, /* 3059 */
XML_SCHEMAP_COS_VALID_DEFAULT_2_2_1, /* 3060 */
@@ -843,7 +843,7 @@ typedef enum {
*/
typedef void (XMLCDECL *xmlGenericErrorFunc) (void *ctx,
const char *msg,
- ...);
+ ...) ATTRIBUTE_PRINTF(2,3);
/**
* xmlStructuredErrorFunc:
* @userData: user provided data for the error callback
@@ -858,38 +858,38 @@ typedef void (XMLCALL *xmlStructuredErrorFunc) (void *userData, xmlErrorPtr erro
* Use the following function to reset the two global variables
* xmlGenericError and xmlGenericErrorContext.
*/
-XMLPUBFUN void XMLCALL
+XMLPUBFUN void XMLCALL
xmlSetGenericErrorFunc (void *ctx,
xmlGenericErrorFunc handler);
-XMLPUBFUN void XMLCALL
+XMLPUBFUN void XMLCALL
initGenericErrorDefaultFunc (xmlGenericErrorFunc *handler);
-XMLPUBFUN void XMLCALL
+XMLPUBFUN void XMLCALL
xmlSetStructuredErrorFunc (void *ctx,
xmlStructuredErrorFunc handler);
/*
* Default message routines used by SAX and Valid context for error
* and warning reporting.
*/
-XMLPUBFUN void XMLCDECL
+XMLPUBFUN void XMLCDECL
xmlParserError (void *ctx,
const char *msg,
- ...);
-XMLPUBFUN void XMLCDECL
+ ...) ATTRIBUTE_PRINTF(2,3);
+XMLPUBFUN void XMLCDECL
xmlParserWarning (void *ctx,
const char *msg,
- ...);
-XMLPUBFUN void XMLCDECL
+ ...) ATTRIBUTE_PRINTF(2,3);
+XMLPUBFUN void XMLCDECL
xmlParserValidityError (void *ctx,
const char *msg,
- ...);
-XMLPUBFUN void XMLCDECL
+ ...) ATTRIBUTE_PRINTF(2,3);
+XMLPUBFUN void XMLCDECL
xmlParserValidityWarning (void *ctx,
const char *msg,
- ...);
-XMLPUBFUN void XMLCALL
+ ...) ATTRIBUTE_PRINTF(2,3);
+XMLPUBFUN void XMLCALL
xmlParserPrintFileInfo (xmlParserInputPtr input);
-XMLPUBFUN void XMLCALL
+XMLPUBFUN void XMLCALL
xmlParserPrintFileContext (xmlParserInputPtr input);
/*
@@ -907,19 +907,19 @@ XMLPUBFUN void XMLCALL
xmlResetError (xmlErrorPtr err);
XMLPUBFUN int XMLCALL
xmlCopyError (xmlErrorPtr from,
- xmlErrorPtr to);
+ xmlErrorPtr to);
#ifdef IN_LIBXML
/*
* Internal callback reporting routine
*/
-XMLPUBFUN void XMLCALL
+XMLPUBFUN void XMLCALL
__xmlRaiseError (xmlStructuredErrorFunc schannel,
- xmlGenericErrorFunc channel,
- void *data,
+ xmlGenericErrorFunc channel,
+ void *data,
void *ctx,
- void *node,
- int domain,
+ void *node,
+ int domain,
int code,
xmlErrorLevel level,
const char *file,
@@ -930,10 +930,10 @@ XMLPUBFUN void XMLCALL
int int1,
int col,
const char *msg,
- ...);
-XMLPUBFUN void XMLCALL
+ ...) ATTRIBUTE_PRINTF(16,17);
+XMLPUBFUN void XMLCALL
__xmlSimpleError (int domain,
- int code,
+ int code,
xmlNodePtr node,
const char *msg,
const char *extra);
diff --git a/include/libxml/xmlmemory.h b/include/libxml/xmlmemory.h
index ee8328a..8f3b109 100644
--- a/include/libxml/xmlmemory.h
+++ b/include/libxml/xmlmemory.h
@@ -63,7 +63,7 @@ typedef void (XMLCALL *xmlFreeFunc)(void *mem);
*
* Returns a pointer to the newly allocated block or NULL in case of error.
*/
-typedef void *(XMLCALL *xmlMallocFunc)(size_t size);
+typedef void *(ATTRIBUTE_ALLOC_SIZE(1) XMLCALL *xmlMallocFunc)(size_t size);
/**
* xmlReallocFunc:
@@ -150,7 +150,7 @@ XMLPUBFUN void XMLCALL
XMLPUBFUN void XMLCALL
xmlMemoryDump (void);
XMLPUBFUN void * XMLCALL
- xmlMemMalloc (size_t size);
+ xmlMemMalloc (size_t size) ATTRIBUTE_ALLOC_SIZE(1);
XMLPUBFUN void * XMLCALL
xmlMemRealloc (void *ptr,size_t size);
XMLPUBFUN void XMLCALL
@@ -158,11 +158,11 @@ XMLPUBFUN void XMLCALL
XMLPUBFUN char * XMLCALL
xmlMemoryStrdup (const char *str);
XMLPUBFUN void * XMLCALL
- xmlMallocLoc (size_t size, const char *file, int line);
+ xmlMallocLoc (size_t size, const char *file, int line) ATTRIBUTE_ALLOC_SIZE(1);
XMLPUBFUN void * XMLCALL
xmlReallocLoc (void *ptr, size_t size, const char *file, int line);
XMLPUBFUN void * XMLCALL
- xmlMallocAtomicLoc (size_t size, const char *file, int line);
+ xmlMallocAtomicLoc (size_t size, const char *file, int line) ATTRIBUTE_ALLOC_SIZE(1);
XMLPUBFUN char * XMLCALL
xmlMemStrdupLoc (const char *str, const char *file, int line);
diff --git a/include/libxml/xmlschemas.h b/include/libxml/xmlschemas.h
index 556ef89..ebef3a7 100644
--- a/include/libxml/xmlschemas.h
+++ b/include/libxml/xmlschemas.h
@@ -92,7 +92,7 @@ typedef xmlSchema *xmlSchemaPtr;
*
* Signature of an error callback from an XSD validation
*/
-typedef void (XMLCDECL *xmlSchemaValidityErrorFunc) (void *ctx, const char *msg, ...);
+typedef void (XMLCDECL *xmlSchemaValidityErrorFunc) (void *ctx, const char *msg, ...) ATTRIBUTE_PRINTF(2,3);
/**
* xmlSchemaValidityWarningFunc:
@@ -102,7 +102,7 @@ typedef void (XMLCDECL *xmlSchemaValidityErrorFunc) (void *ctx, const char *msg,
*
* Signature of a warning callback from an XSD validation
*/
-typedef void (XMLCDECL *xmlSchemaValidityWarningFunc) (void *ctx, const char *msg, ...);
+typedef void (XMLCDECL *xmlSchemaValidityWarningFunc) (void *ctx, const char *msg, ...) ATTRIBUTE_PRINTF(2,3);
/**
* A schemas validation context
diff --git a/include/libxml/xmlversion.h b/include/libxml/xmlversion.h
index 6c5d342..e960f09 100644
--- a/include/libxml/xmlversion.h
+++ b/include/libxml/xmlversion.h
@@ -29,21 +29,21 @@ XMLPUBFUN void XMLCALL xmlCheckVersion(int version);
*
* the version string like "1.2.3"
*/
-#define LIBXML_DOTTED_VERSION "2.7.2"
+#define LIBXML_DOTTED_VERSION "2.7.3"
/**
* LIBXML_VERSION:
*
* the version number: 1.2.3 value is 10203
*/
-#define LIBXML_VERSION 20702
+#define LIBXML_VERSION 20703
/**
* LIBXML_VERSION_STRING:
*
* the version number string, 1.2.3 value is "10203"
*/
-#define LIBXML_VERSION_STRING "20702"
+#define LIBXML_VERSION_STRING "20703"
/**
* LIBXML_VERSION_EXTRA:
@@ -58,7 +58,7 @@ XMLPUBFUN void XMLCALL xmlCheckVersion(int version);
* Macro to check that the libxml version in use is compatible with
* the version the software has been compiled against
*/
-#define LIBXML_TEST_VERSION xmlCheckVersion(20702);
+#define LIBXML_TEST_VERSION xmlCheckVersion(20703);
#ifndef VMS
#if 0
@@ -382,22 +382,74 @@ XMLPUBFUN void XMLCALL xmlCheckVersion(int version);
#define LIBXML_ZLIB_ENABLED
#endif
+#ifdef __GNUC__
+#ifdef HAVE_ANSIDECL_H
+#include <ansidecl.h>
+#endif
+
/**
* ATTRIBUTE_UNUSED:
*
* Macro used to signal to GCC unused function parameters
*/
-#ifdef __GNUC__
-#ifdef HAVE_ANSIDECL_H
-#include <ansidecl.h>
-#endif
+
#ifndef ATTRIBUTE_UNUSED
#define ATTRIBUTE_UNUSED __attribute__((unused))
#endif
+
+/**
+ * ATTRIBUTE_ALLOC_SIZE:
+ *
+ * Macro used to indicate to GCC this is an allocator function
+ */
+
+#ifndef ATTRIBUTE_ALLOC_SIZE
+# if ((__GNUC__ > 4) || ((__GNUC__ == 4) && (__GNUC_MINOR__ >= 3)))
+# define ATTRIBUTE_ALLOC_SIZE(x) __attribute__((alloc_size(x)))
+# else
+# define ATTRIBUTE_ALLOC_SIZE(x)
+# endif
#else
-#define ATTRIBUTE_UNUSED
+# define ATTRIBUTE_ALLOC_SIZE(x)
+#endif
+
+/**
+ * ATTRIBUTE_PRINTF:
+ *
+ * Macro used to indicate to GCC the parameter are printf like
+ */
+
+#ifndef ATTRIBUTE_PRINTF
+# if ((__GNUC__ > 3) || ((__GNUC__ == 3) && (__GNUC_MINOR__ >= 3)))
+# define ATTRIBUTE_PRINTF(fmt,args) __attribute__((__format__(__printf__,fmt,args)))
+# else
+# define ATTRIBUTE_PRINTF(fmt,args)
+# endif
+#else
+# define ATTRIBUTE_PRINTF(fmt,args)
#endif
+#else /* ! __GNUC__ */
+/**
+ * ATTRIBUTE_UNUSED:
+ *
+ * Macro used to signal to GCC unused function parameters
+ */
+#define ATTRIBUTE_UNUSED
+/**
+ * ATTRIBUTE_ALLOC_SIZE:
+ *
+ * Macro used to indicate to GCC this is an allocator function
+ */
+#define ATTRIBUTE_ALLOC_SIZE(x)
+/**
+ * ATTRIBUTE_PRINTF:
+ *
+ * Macro used to indicate to GCC the parameter are printf like
+ */
+#define ATTRIBUTE_PRINTF(fmt,args)
+#endif /* __GNUC__ */
+
#ifdef __cplusplus
}
#endif /* __cplusplus */
diff --git a/include/libxml/xmlversion.h.in b/include/libxml/xmlversion.h.in
index 29cef74..05c9f29 100644
--- a/include/libxml/xmlversion.h.in
+++ b/include/libxml/xmlversion.h.in
@@ -382,22 +382,74 @@ XMLPUBFUN void XMLCALL xmlCheckVersion(int version);
#define LIBXML_ZLIB_ENABLED
#endif
+#ifdef __GNUC__
+#ifdef HAVE_ANSIDECL_H
+#include <ansidecl.h>
+#endif
+
/**
* ATTRIBUTE_UNUSED:
*
* Macro used to signal to GCC unused function parameters
*/
-#ifdef __GNUC__
-#ifdef HAVE_ANSIDECL_H
-#include <ansidecl.h>
-#endif
+
#ifndef ATTRIBUTE_UNUSED
#define ATTRIBUTE_UNUSED __attribute__((unused))
#endif
+
+/**
+ * ATTRIBUTE_ALLOC_SIZE:
+ *
+ * Macro used to indicate to GCC this is an allocator function
+ */
+
+#ifndef ATTRIBUTE_ALLOC_SIZE
+# if ((__GNUC__ > 4) || ((__GNUC__ == 4) && (__GNUC_MINOR__ >= 3)))
+# define ATTRIBUTE_ALLOC_SIZE(x) __attribute__((alloc_size(x)))
+# else
+# define ATTRIBUTE_ALLOC_SIZE(x)
+# endif
#else
-#define ATTRIBUTE_UNUSED
+# define ATTRIBUTE_ALLOC_SIZE(x)
+#endif
+
+/**
+ * ATTRIBUTE_PRINTF:
+ *
+ * Macro used to indicate to GCC the parameter are printf like
+ */
+
+#ifndef ATTRIBUTE_PRINTF
+# if ((__GNUC__ > 3) || ((__GNUC__ == 3) && (__GNUC_MINOR__ >= 3)))
+# define ATTRIBUTE_PRINTF(fmt,args) __attribute__((__format__(__printf__,fmt,args)))
+# else
+# define ATTRIBUTE_PRINTF(fmt,args)
+# endif
+#else
+# define ATTRIBUTE_PRINTF(fmt,args)
#endif
+#else /* ! __GNUC__ */
+/**
+ * ATTRIBUTE_UNUSED:
+ *
+ * Macro used to signal to GCC unused function parameters
+ */
+#define ATTRIBUTE_UNUSED
+/**
+ * ATTRIBUTE_ALLOC_SIZE:
+ *
+ * Macro used to indicate to GCC this is an allocator function
+ */
+#define ATTRIBUTE_ALLOC_SIZE(x)
+/**
+ * ATTRIBUTE_PRINTF:
+ *
+ * Macro used to indicate to GCC the parameter are printf like
+ */
+#define ATTRIBUTE_PRINTF(fmt,args)
+#endif /* __GNUC__ */
+
#ifdef __cplusplus
}
#endif /* __cplusplus */
diff --git a/include/libxml/xmlwriter.h b/include/libxml/xmlwriter.h
index 31ceb5f..df4509d 100644
--- a/include/libxml/xmlwriter.h
+++ b/include/libxml/xmlwriter.h
@@ -69,11 +69,13 @@ extern "C" {
XMLPUBFUN int XMLCALL xmlTextWriterEndComment(xmlTextWriterPtr writer);
XMLPUBFUN int XMLCALL
xmlTextWriterWriteFormatComment(xmlTextWriterPtr writer,
- const char *format, ...);
+ const char *format, ...)
+ ATTRIBUTE_PRINTF(2,3);
XMLPUBFUN int XMLCALL
xmlTextWriterWriteVFormatComment(xmlTextWriterPtr writer,
const char *format,
- va_list argptr);
+ va_list argptr)
+ ATTRIBUTE_PRINTF(2,0);
XMLPUBFUN int XMLCALL xmlTextWriterWriteComment(xmlTextWriterPtr
writer,
const xmlChar *
@@ -102,12 +104,14 @@ extern "C" {
XMLPUBFUN int XMLCALL
xmlTextWriterWriteFormatElement(xmlTextWriterPtr writer,
const xmlChar * name,
- const char *format, ...);
+ const char *format, ...)
+ ATTRIBUTE_PRINTF(3,4);
XMLPUBFUN int XMLCALL
xmlTextWriterWriteVFormatElement(xmlTextWriterPtr writer,
const xmlChar * name,
const char *format,
- va_list argptr);
+ va_list argptr)
+ ATTRIBUTE_PRINTF(3,0);
XMLPUBFUN int XMLCALL xmlTextWriterWriteElement(xmlTextWriterPtr
writer,
const xmlChar * name,
@@ -118,14 +122,16 @@ extern "C" {
const xmlChar * prefix,
const xmlChar * name,
const xmlChar * namespaceURI,
- const char *format, ...);
+ const char *format, ...)
+ ATTRIBUTE_PRINTF(5,6);
XMLPUBFUN int XMLCALL
xmlTextWriterWriteVFormatElementNS(xmlTextWriterPtr writer,
const xmlChar * prefix,
const xmlChar * name,
const xmlChar * namespaceURI,
const char *format,
- va_list argptr);
+ va_list argptr)
+ ATTRIBUTE_PRINTF(5,0);
XMLPUBFUN int XMLCALL xmlTextWriterWriteElementNS(xmlTextWriterPtr
writer,
const xmlChar *
@@ -141,10 +147,12 @@ extern "C" {
*/
XMLPUBFUN int XMLCALL
xmlTextWriterWriteFormatRaw(xmlTextWriterPtr writer,
- const char *format, ...);
+ const char *format, ...)
+ ATTRIBUTE_PRINTF(2,3);
XMLPUBFUN int XMLCALL
xmlTextWriterWriteVFormatRaw(xmlTextWriterPtr writer,
- const char *format, va_list argptr);
+ const char *format, va_list argptr)
+ ATTRIBUTE_PRINTF(2,0);
XMLPUBFUN int XMLCALL
xmlTextWriterWriteRawLen(xmlTextWriterPtr writer,
const xmlChar * content, int len);
@@ -154,12 +162,14 @@ extern "C" {
XMLPUBFUN int XMLCALL xmlTextWriterWriteFormatString(xmlTextWriterPtr
writer,
const char
- *format, ...);
+ *format, ...)
+ ATTRIBUTE_PRINTF(2,3);
XMLPUBFUN int XMLCALL xmlTextWriterWriteVFormatString(xmlTextWriterPtr
writer,
const char
*format,
- va_list argptr);
+ va_list argptr)
+ ATTRIBUTE_PRINTF(2,0);
XMLPUBFUN int XMLCALL xmlTextWriterWriteString(xmlTextWriterPtr writer,
const xmlChar *
content);
@@ -193,12 +203,14 @@ extern "C" {
XMLPUBFUN int XMLCALL
xmlTextWriterWriteFormatAttribute(xmlTextWriterPtr writer,
const xmlChar * name,
- const char *format, ...);
+ const char *format, ...)
+ ATTRIBUTE_PRINTF(3,4);
XMLPUBFUN int XMLCALL
xmlTextWriterWriteVFormatAttribute(xmlTextWriterPtr writer,
const xmlChar * name,
const char *format,
- va_list argptr);
+ va_list argptr)
+ ATTRIBUTE_PRINTF(3,0);
XMLPUBFUN int XMLCALL xmlTextWriterWriteAttribute(xmlTextWriterPtr
writer,
const xmlChar * name,
@@ -209,14 +221,16 @@ extern "C" {
const xmlChar * prefix,
const xmlChar * name,
const xmlChar * namespaceURI,
- const char *format, ...);
+ const char *format, ...)
+ ATTRIBUTE_PRINTF(5,6);
XMLPUBFUN int XMLCALL
xmlTextWriterWriteVFormatAttributeNS(xmlTextWriterPtr writer,
const xmlChar * prefix,
const xmlChar * name,
const xmlChar * namespaceURI,
const char *format,
- va_list argptr);
+ va_list argptr)
+ ATTRIBUTE_PRINTF(5,0);
XMLPUBFUN int XMLCALL xmlTextWriterWriteAttributeNS(xmlTextWriterPtr
writer,
const xmlChar *
@@ -242,11 +256,13 @@ extern "C" {
XMLPUBFUN int XMLCALL
xmlTextWriterWriteFormatPI(xmlTextWriterPtr writer,
const xmlChar * target,
- const char *format, ...);
+ const char *format, ...)
+ ATTRIBUTE_PRINTF(3,4);
XMLPUBFUN int XMLCALL
xmlTextWriterWriteVFormatPI(xmlTextWriterPtr writer,
const xmlChar * target,
- const char *format, va_list argptr);
+ const char *format, va_list argptr)
+ ATTRIBUTE_PRINTF(3,0);
XMLPUBFUN int XMLCALL
xmlTextWriterWritePI(xmlTextWriterPtr writer,
const xmlChar * target,
@@ -270,10 +286,12 @@ extern "C" {
*/
XMLPUBFUN int XMLCALL
xmlTextWriterWriteFormatCDATA(xmlTextWriterPtr writer,
- const char *format, ...);
+ const char *format, ...)
+ ATTRIBUTE_PRINTF(2,3);
XMLPUBFUN int XMLCALL
xmlTextWriterWriteVFormatCDATA(xmlTextWriterPtr writer,
- const char *format, va_list argptr);
+ const char *format, va_list argptr)
+ ATTRIBUTE_PRINTF(2,0);
XMLPUBFUN int XMLCALL
xmlTextWriterWriteCDATA(xmlTextWriterPtr writer,
const xmlChar * content);
@@ -296,13 +314,15 @@ extern "C" {
const xmlChar * name,
const xmlChar * pubid,
const xmlChar * sysid,
- const char *format, ...);
+ const char *format, ...)
+ ATTRIBUTE_PRINTF(5,6);
XMLPUBFUN int XMLCALL
xmlTextWriterWriteVFormatDTD(xmlTextWriterPtr writer,
const xmlChar * name,
const xmlChar * pubid,
const xmlChar * sysid,
- const char *format, va_list argptr);
+ const char *format, va_list argptr)
+ ATTRIBUTE_PRINTF(5,0);
XMLPUBFUN int XMLCALL
xmlTextWriterWriteDTD(xmlTextWriterPtr writer,
const xmlChar * name,
@@ -332,12 +352,14 @@ extern "C" {
XMLPUBFUN int XMLCALL
xmlTextWriterWriteFormatDTDElement(xmlTextWriterPtr writer,
const xmlChar * name,
- const char *format, ...);
+ const char *format, ...)
+ ATTRIBUTE_PRINTF(3,4);
XMLPUBFUN int XMLCALL
xmlTextWriterWriteVFormatDTDElement(xmlTextWriterPtr writer,
const xmlChar * name,
const char *format,
- va_list argptr);
+ va_list argptr)
+ ATTRIBUTE_PRINTF(3,0);
XMLPUBFUN int XMLCALL xmlTextWriterWriteDTDElement(xmlTextWriterPtr
writer,
const xmlChar *
@@ -360,12 +382,14 @@ extern "C" {
XMLPUBFUN int XMLCALL
xmlTextWriterWriteFormatDTDAttlist(xmlTextWriterPtr writer,
const xmlChar * name,
- const char *format, ...);
+ const char *format, ...)
+ ATTRIBUTE_PRINTF(3,4);
XMLPUBFUN int XMLCALL
xmlTextWriterWriteVFormatDTDAttlist(xmlTextWriterPtr writer,
const xmlChar * name,
const char *format,
- va_list argptr);
+ va_list argptr)
+ ATTRIBUTE_PRINTF(3,0);
XMLPUBFUN int XMLCALL xmlTextWriterWriteDTDAttlist(xmlTextWriterPtr
writer,
const xmlChar *
@@ -389,13 +413,15 @@ extern "C" {
xmlTextWriterWriteFormatDTDInternalEntity(xmlTextWriterPtr writer,
int pe,
const xmlChar * name,
- const char *format, ...);
+ const char *format, ...)
+ ATTRIBUTE_PRINTF(4,5);
XMLPUBFUN int XMLCALL
xmlTextWriterWriteVFormatDTDInternalEntity(xmlTextWriterPtr writer,
int pe,
const xmlChar * name,
const char *format,
- va_list argptr);
+ va_list argptr)
+ ATTRIBUTE_PRINTF(4,0);
XMLPUBFUN int XMLCALL
xmlTextWriterWriteDTDInternalEntity(xmlTextWriterPtr writer,
int pe,
diff --git a/libxml2.spec b/libxml2.spec
index a6da308..ace05f6 100644
--- a/libxml2.spec
+++ b/libxml2.spec
@@ -1,6 +1,6 @@
Summary: Library providing XML and HTML support
Name: libxml2
-Version: 2.7.2
+Version: 2.7.3
Release: 1
License: MIT
Group: Development/Libraries
@@ -128,6 +128,6 @@ rm -fr %{buildroot}
%doc doc/python.html
%changelog
-* Fri Oct 3 2008 Daniel Veillard <veillard@redhat.com>
-- upstream release 2.7.2 see http://xmlsoft.org/news.html
+* Sun Jan 18 2009 Daniel Veillard <veillard@redhat.com>
+- upstream release 2.7.3 see http://xmlsoft.org/news.html
diff --git a/macos/src/XMLTestPrefix.h.orig b/macos/src/XMLTestPrefix.h.orig
new file mode 100644
index 0000000..3e84255
--- /dev/null
+++ b/macos/src/XMLTestPrefix.h.orig
@@ -0,0 +1 @@
+int test_main(int argc, char **argv); #define main(X,Y) test_main(X,Y) \ No newline at end of file
diff --git a/parser.c b/parser.c
index 4b7b758..9db664f 100644
--- a/parser.c
+++ b/parser.c
@@ -4142,6 +4142,9 @@ get_more:
line = ctxt->input->line;
col = ctxt->input->col;
}
+ /* something really bad happened in the SAX callback */
+ if (ctxt->instate != XML_PARSER_CONTENT)
+ return;
}
ctxt->input->cur = in;
if (*in == 0xD) {
@@ -4222,6 +4225,9 @@ xmlParseCharDataComplex(xmlParserCtxtPtr ctxt, int cdata) {
}
}
nbchar = 0;
+ /* something really bad happened in the SAX callback */
+ if (ctxt->instate != XML_PARSER_CONTENT)
+ return;
}
count++;
if (count > 50) {
@@ -7041,9 +7047,11 @@ xmlParseEntityRef(xmlParserCtxtPtr ctxt) {
/*
* Predefined entites override any extra definition
*/
- ent = xmlGetPredefinedEntity(name);
- if (ent != NULL)
- return(ent);
+ if ((ctxt->options & XML_PARSE_OLDSAX) == 0) {
+ ent = xmlGetPredefinedEntity(name);
+ if (ent != NULL)
+ return(ent);
+ }
/*
* Increate the number of entity references parsed
@@ -7057,6 +7065,9 @@ xmlParseEntityRef(xmlParserCtxtPtr ctxt) {
if (ctxt->sax != NULL) {
if (ctxt->sax->getEntity != NULL)
ent = ctxt->sax->getEntity(ctxt->userData, name);
+ if ((ctxt->wellFormed == 1 ) && (ent == NULL) &&
+ (ctxt->options & XML_PARSE_OLDSAX))
+ ent = xmlGetPredefinedEntity(name);
if ((ctxt->wellFormed == 1 ) && (ent == NULL) &&
(ctxt->userData==ctxt)) {
ent = xmlSAX2GetEntity(ctxt, name);
@@ -7129,6 +7140,7 @@ xmlParseEntityRef(xmlParserCtxtPtr ctxt) {
*/
else if ((ctxt->instate == XML_PARSER_ATTRIBUTE_VALUE) &&
(ent != NULL) && (ent->content != NULL) &&
+ (ent->etype != XML_INTERNAL_PREDEFINED_ENTITY) &&
(xmlStrchr(ent->content, '<'))) {
xmlFatalErrMsgStr(ctxt, XML_ERR_LT_IN_ATTRIBUTE,
"'<' in entity '%s' is not allowed in attributes values\n", name);
@@ -7225,11 +7237,13 @@ xmlParseStringEntityRef(xmlParserCtxtPtr ctxt, const xmlChar ** str) {
/*
* Predefined entites override any extra definition
*/
- ent = xmlGetPredefinedEntity(name);
- if (ent != NULL) {
- xmlFree(name);
- *str = ptr;
- return(ent);
+ if ((ctxt->options & XML_PARSE_OLDSAX) == 0) {
+ ent = xmlGetPredefinedEntity(name);
+ if (ent != NULL) {
+ xmlFree(name);
+ *str = ptr;
+ return(ent);
+ }
}
/*
@@ -7244,6 +7258,8 @@ xmlParseStringEntityRef(xmlParserCtxtPtr ctxt, const xmlChar ** str) {
if (ctxt->sax != NULL) {
if (ctxt->sax->getEntity != NULL)
ent = ctxt->sax->getEntity(ctxt->userData, name);
+ if ((ent == NULL) && (ctxt->options & XML_PARSE_OLDSAX))
+ ent = xmlGetPredefinedEntity(name);
if ((ent == NULL) && (ctxt->userData==ctxt)) {
ent = xmlSAX2GetEntity(ctxt, name);
}
@@ -7312,6 +7328,7 @@ xmlParseStringEntityRef(xmlParserCtxtPtr ctxt, const xmlChar ** str) {
*/
else if ((ctxt->instate == XML_PARSER_ATTRIBUTE_VALUE) &&
(ent != NULL) && (ent->content != NULL) &&
+ (ent->etype != XML_INTERNAL_PREDEFINED_ENTITY) &&
(xmlStrchr(ent->content, '<'))) {
xmlFatalErrMsgStr(ctxt, XML_ERR_LT_IN_ATTRIBUTE,
"'<' in entity '%s' is not allowed in attributes values\n",
@@ -14205,6 +14222,10 @@ xmlCtxtUseOptionsInternal(xmlParserCtxtPtr ctxt, int options, const char *encodi
ctxt->options |= XML_PARSE_HUGE;
options -= XML_PARSE_HUGE;
}
+ if (options & XML_PARSE_OLDSAX) {
+ ctxt->options |= XML_PARSE_OLDSAX;
+ options -= XML_PARSE_OLDSAX;
+ }
ctxt->linenumbers = 1;
return (options);
}
diff --git a/python/generator.py b/python/generator.py
index 4e22815..92a3440 100755
--- a/python/generator.py
+++ b/python/generator.py
@@ -725,6 +725,10 @@ functions_noexcept = {
"xmlDocSetRootElement": 1,
"xmlNodeGetNs": 1,
"xmlNodeGetNsDefs": 1,
+ "xmlNextElementSibling": 1,
+ "xmlPreviousElementSibling": 1,
+ "xmlFirstElementChild": 1,
+ "xmlLastElementChild": 1,
}
reference_keepers = {
diff --git a/python/setup.py b/python/setup.py
index 50585c8..1fc700c 100755
--- a/python/setup.py
+++ b/python/setup.py
@@ -226,7 +226,7 @@ else:
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.7.2",
+ version = "2.7.3",
description = descr,
author = "Daniel Veillard",
author_email = "veillard@redhat.com",
diff --git a/python/tests/xpathleak.py b/python/tests/xpathleak.py
index dcc144c..dcc144c 100755..100644
--- a/python/tests/xpathleak.py
+++ b/python/tests/xpathleak.py
diff --git a/testapi.c b/testapi.c
index 6f85910..7a6ba3a 100644
--- a/testapi.c
+++ b/testapi.c
@@ -19057,6 +19057,40 @@ test_xmlBuildQName(void) {
static int
+test_xmlChildElementCount(void) {
+ int test_ret = 0;
+
+#if defined(LIBXML_TREE_ENABLED)
+ int mem_base;
+ unsigned long ret_val;
+ xmlNodePtr parent; /* the parent node */
+ int n_parent;
+
+ for (n_parent = 0;n_parent < gen_nb_xmlNodePtr;n_parent++) {
+ mem_base = xmlMemBlocks();
+ parent = gen_xmlNodePtr(n_parent, 0);
+
+ ret_val = xmlChildElementCount(parent);
+ desret_unsigned_long(ret_val);
+ call_tests++;
+ des_xmlNodePtr(n_parent, parent, 0);
+ xmlResetLastError();
+ if (mem_base != xmlMemBlocks()) {
+ printf("Leak of %d blocks found in xmlChildElementCount",
+ xmlMemBlocks() - mem_base);
+ test_ret++;
+ printf(" %d", n_parent);
+ printf("\n");
+ }
+ }
+ function_tests++;
+#endif
+
+ return(test_ret);
+}
+
+
+static int
test_xmlCopyDoc(void) {
int test_ret = 0;
@@ -20171,6 +20205,40 @@ test_xmlElemDump(void) {
static int
+test_xmlFirstElementChild(void) {
+ int test_ret = 0;
+
+#if defined(LIBXML_TREE_ENABLED)
+ int mem_base;
+ xmlNodePtr ret_val;
+ xmlNodePtr parent; /* the parent node */
+ int n_parent;
+
+ for (n_parent = 0;n_parent < gen_nb_xmlNodePtr;n_parent++) {
+ mem_base = xmlMemBlocks();
+ parent = gen_xmlNodePtr(n_parent, 0);
+
+ ret_val = xmlFirstElementChild(parent);
+ desret_xmlNodePtr(ret_val);
+ call_tests++;
+ des_xmlNodePtr(n_parent, parent, 0);
+ xmlResetLastError();
+ if (mem_base != xmlMemBlocks()) {
+ printf("Leak of %d blocks found in xmlFirstElementChild",
+ xmlMemBlocks() - mem_base);
+ test_ret++;
+ printf(" %d", n_parent);
+ printf("\n");
+ }
+ }
+ function_tests++;
+#endif
+
+ return(test_ret);
+}
+
+
+static int
test_xmlGetBufferAllocationScheme(void) {
int test_ret = 0;
@@ -20673,6 +20741,40 @@ test_xmlIsXHTML(void) {
static int
+test_xmlLastElementChild(void) {
+ int test_ret = 0;
+
+#if defined(LIBXML_TREE_ENABLED)
+ int mem_base;
+ xmlNodePtr ret_val;
+ xmlNodePtr parent; /* the parent node */
+ int n_parent;
+
+ for (n_parent = 0;n_parent < gen_nb_xmlNodePtr;n_parent++) {
+ mem_base = xmlMemBlocks();
+ parent = gen_xmlNodePtr(n_parent, 0);
+
+ ret_val = xmlLastElementChild(parent);
+ desret_xmlNodePtr(ret_val);
+ call_tests++;
+ des_xmlNodePtr(n_parent, parent, 0);
+ xmlResetLastError();
+ if (mem_base != xmlMemBlocks()) {
+ printf("Leak of %d blocks found in xmlLastElementChild",
+ xmlMemBlocks() - mem_base);
+ test_ret++;
+ printf(" %d", n_parent);
+ printf("\n");
+ }
+ }
+ function_tests++;
+#endif
+
+ return(test_ret);
+}
+
+
+static int
test_xmlNewCDataBlock(void) {
int test_ret = 0;
@@ -21832,6 +21934,40 @@ test_xmlNewTextLen(void) {
static int
+test_xmlNextElementSibling(void) {
+ int test_ret = 0;
+
+#if defined(LIBXML_TREE_ENABLED)
+ int mem_base;
+ xmlNodePtr ret_val;
+ xmlNodePtr node; /* the current node */
+ int n_node;
+
+ for (n_node = 0;n_node < gen_nb_xmlNodePtr;n_node++) {
+ mem_base = xmlMemBlocks();
+ node = gen_xmlNodePtr(n_node, 0);
+
+ ret_val = xmlNextElementSibling(node);
+ desret_xmlNodePtr(ret_val);
+ call_tests++;
+ des_xmlNodePtr(n_node, node, 0);
+ xmlResetLastError();
+ if (mem_base != xmlMemBlocks()) {
+ printf("Leak of %d blocks found in xmlNextElementSibling",
+ xmlMemBlocks() - mem_base);
+ test_ret++;
+ printf(" %d", n_node);
+ printf("\n");
+ }
+ }
+ function_tests++;
+#endif
+
+ return(test_ret);
+}
+
+
+static int
test_xmlNodeAddContent(void) {
int test_ret = 0;
@@ -22581,6 +22717,40 @@ test_xmlNodeSetSpacePreserve(void) {
static int
+test_xmlPreviousElementSibling(void) {
+ int test_ret = 0;
+
+#if defined(LIBXML_TREE_ENABLED)
+ int mem_base;
+ xmlNodePtr ret_val;
+ xmlNodePtr node; /* the current node */
+ int n_node;
+
+ for (n_node = 0;n_node < gen_nb_xmlNodePtr;n_node++) {
+ mem_base = xmlMemBlocks();
+ node = gen_xmlNodePtr(n_node, 0);
+
+ ret_val = xmlPreviousElementSibling(node);
+ desret_xmlNodePtr(ret_val);
+ call_tests++;
+ des_xmlNodePtr(n_node, node, 0);
+ xmlResetLastError();
+ if (mem_base != xmlMemBlocks()) {
+ printf("Leak of %d blocks found in xmlPreviousElementSibling",
+ xmlMemBlocks() - mem_base);
+ test_ret++;
+ printf(" %d", n_node);
+ printf("\n");
+ }
+ }
+ function_tests++;
+#endif
+
+ return(test_ret);
+}
+
+
+static int
test_xmlReconciliateNs(void) {
int test_ret = 0;
@@ -23845,7 +24015,7 @@ static int
test_tree(void) {
int test_ret = 0;
- if (quiet == 0) printf("Testing tree : 133 of 152 functions ...\n");
+ if (quiet == 0) printf("Testing tree : 138 of 157 functions ...\n");
test_ret += test_xmlAddChild();
test_ret += test_xmlAddChildList();
test_ret += test_xmlAddNextSibling();
@@ -23870,6 +24040,7 @@ test_tree(void) {
test_ret += test_xmlBufferWriteChar();
test_ret += test_xmlBufferWriteQuotedString();
test_ret += test_xmlBuildQName();
+ test_ret += test_xmlChildElementCount();
test_ret += test_xmlCopyDoc();
test_ret += test_xmlCopyDtd();
test_ret += test_xmlCopyNamespace();
@@ -23895,6 +24066,7 @@ test_tree(void) {
test_ret += test_xmlDocGetRootElement();
test_ret += test_xmlDocSetRootElement();
test_ret += test_xmlElemDump();
+ test_ret += test_xmlFirstElementChild();
test_ret += test_xmlGetBufferAllocationScheme();
test_ret += test_xmlGetCompressMode();
test_ret += test_xmlGetDocCompressMode();
@@ -23910,6 +24082,7 @@ test_tree(void) {
test_ret += test_xmlHasProp();
test_ret += test_xmlIsBlankNode();
test_ret += test_xmlIsXHTML();
+ test_ret += test_xmlLastElementChild();
test_ret += test_xmlNewCDataBlock();
test_ret += test_xmlNewCharRef();
test_ret += test_xmlNewChild();
@@ -23936,6 +24109,7 @@ test_tree(void) {
test_ret += test_xmlNewText();
test_ret += test_xmlNewTextChild();
test_ret += test_xmlNewTextLen();
+ test_ret += test_xmlNextElementSibling();
test_ret += test_xmlNodeAddContent();
test_ret += test_xmlNodeAddContentLen();
test_ret += test_xmlNodeBufGetContent();
@@ -23954,6 +24128,7 @@ test_tree(void) {
test_ret += test_xmlNodeSetLang();
test_ret += test_xmlNodeSetName();
test_ret += test_xmlNodeSetSpacePreserve();
+ test_ret += test_xmlPreviousElementSibling();
test_ret += test_xmlReconciliateNs();
test_ret += test_xmlRemoveProp();
test_ret += test_xmlReplaceNode();
@@ -25969,9 +26144,9 @@ test_xmlValidateAttributeValue(void) {
#if defined(LIBXML_VALID_ENABLED)
int mem_base;
int ret_val;
- xmlAttributeType type; /* */
+ xmlAttributeType type; /* an attribute type */
int n_type;
- xmlChar * value; /* */
+ xmlChar * value; /* an attribute value */
int n_value;
for (n_type = 0;n_type < gen_nb_xmlAttributeType;n_type++) {
diff --git a/threads.c b/threads.c
index 23cb200..2223e8a 100644
--- a/threads.c
+++ b/threads.c
@@ -63,6 +63,8 @@ extern int pthread_setspecific (pthread_key_t __key,
extern int pthread_key_create (pthread_key_t *__key,
void (*__destr_function) (void *))
__attribute((weak));
+extern int pthread_key_delete (pthread_key_t __key)
+ __attribute((weak));
extern int pthread_mutex_init ()
__attribute((weak));
extern int pthread_mutex_destroy ()
@@ -83,6 +85,8 @@ extern pthread_t pthread_self ()
__attribute((weak));
extern int pthread_key_create ()
__attribute((weak));
+extern int pthread_key_delete ()
+ __attribute((weak));
extern int pthread_cond_signal ()
__attribute((weak));
#endif
@@ -698,6 +702,7 @@ xmlGetGlobalState(void)
if (p == NULL) {
xmlGenericError(xmlGenericErrorContext,
"xmlGetGlobalState: out of memory\n");
+ xmlFreeGlobalState(tsd);
return(NULL);
}
p->memory = tsd;
@@ -859,6 +864,7 @@ xmlInitThreads(void)
(pthread_getspecific != NULL) &&
(pthread_setspecific != NULL) &&
(pthread_key_create != NULL) &&
+ (pthread_key_delete != NULL) &&
(pthread_mutex_init != NULL) &&
(pthread_mutex_destroy != NULL) &&
(pthread_mutex_lock != NULL) &&
@@ -912,6 +918,9 @@ xmlCleanupThreads(void)
globalkey = TLS_OUT_OF_INDEXES;
}
DeleteCriticalSection(&cleanup_helpers_cs);
+#elif defined HAVE_PTHREAD_H
+ if ((libxml_is_threaded) && (pthread_key_delete != NULL))
+ pthread_key_delete(globalkey);
#endif
}
diff --git a/tree.c b/tree.c
index 76926fd..8e393da 100644
--- a/tree.c
+++ b/tree.c
@@ -14,7 +14,7 @@
#include "libxml.h"
#include <string.h> /* for memset() only ! */
-
+#include <limits.h>
#ifdef HAVE_CTYPE_H
#include <ctype.h>
#endif
@@ -3216,7 +3216,10 @@ xmlAddChildList(xmlNodePtr parent, xmlNodePtr cur) {
cur = cur->next;
}
cur->parent = parent;
- cur->doc = parent->doc; /* the parent may not be linked to a doc ! */
+ /* the parent may not be linked to a doc ! */
+ if (cur->doc != parent->doc) {
+ xmlSetTreeDoc(cur, parent->doc);
+ }
parent->last = cur;
return(cur);
@@ -3309,9 +3312,7 @@ xmlAddChild(xmlNodePtr parent, xmlNodePtr cur) {
if (cur->type == XML_ATTRIBUTE_NODE) {
if (parent->type != XML_ELEMENT_NODE)
return(NULL);
- if (parent->properties == NULL) {
- parent->properties = (xmlAttrPtr) cur;
- } else {
+ if (parent->properties != NULL) {
/* check if an attribute with the same name exists */
xmlAttrPtr lastattr;
@@ -3326,8 +3327,13 @@ xmlAddChild(xmlNodePtr parent, xmlNodePtr cur) {
}
if (lastattr == (xmlAttrPtr) cur)
return(cur);
+
+ }
+ if (parent->properties == NULL) {
+ parent->properties = (xmlAttrPtr) cur;
+ } else {
/* find the end */
- lastattr = parent->properties;
+ xmlAttrPtr lastattr = parent->properties;
while (lastattr->next != NULL) {
lastattr = lastattr->next;
}
@@ -3367,6 +3373,199 @@ xmlGetLastChild(xmlNodePtr parent) {
return(parent->last);
}
+#ifdef LIBXML_TREE_ENABLED
+/*
+ * 5 interfaces from DOM ElementTraversal
+ */
+
+/**
+ * xmlChildElementCount:
+ * @parent: the parent node
+ *
+ * Finds the current number of child nodes of that element which are
+ * element nodes.
+ * Note the handling of entities references is different than in
+ * the W3C DOM element traversal spec since we don't have back reference
+ * from entities content to entities references.
+ *
+ * Returns the count of element child or 0 if not available
+ */
+unsigned long
+xmlChildElementCount(xmlNodePtr parent) {
+ unsigned long ret = 0;
+ xmlNodePtr cur = NULL;
+
+ if (parent == NULL)
+ return(0);
+ switch (parent->type) {
+ case XML_ELEMENT_NODE:
+ case XML_ENTITY_NODE:
+ case XML_DOCUMENT_NODE:
+ case XML_HTML_DOCUMENT_NODE:
+ cur = parent->children;
+ break;
+ default:
+ return(0);
+ }
+ while (cur != NULL) {
+ if (cur->type == XML_ELEMENT_NODE)
+ ret++;
+ cur = cur->next;
+ }
+ return(ret);
+}
+
+/**
+ * xmlFirstElementChild:
+ * @parent: the parent node
+ *
+ * Finds the first child node of that element which is a Element node
+ * Note the handling of entities references is different than in
+ * the W3C DOM element traversal spec since we don't have back reference
+ * from entities content to entities references.
+ *
+ * Returns the first element child or NULL if not available
+ */
+xmlNodePtr
+xmlFirstElementChild(xmlNodePtr parent) {
+ xmlNodePtr cur = NULL;
+
+ if (parent == NULL)
+ return(NULL);
+ switch (parent->type) {
+ case XML_ELEMENT_NODE:
+ case XML_ENTITY_NODE:
+ case XML_DOCUMENT_NODE:
+ case XML_HTML_DOCUMENT_NODE:
+ cur = parent->children;
+ break;
+ default:
+ return(NULL);
+ }
+ while (cur != NULL) {
+ if (cur->type == XML_ELEMENT_NODE)
+ return(cur);
+ cur = cur->next;
+ }
+ return(NULL);
+}
+
+/**
+ * xmlLastElementChild:
+ * @parent: the parent node
+ *
+ * Finds the last child node of that element which is a Element node
+ * Note the handling of entities references is different than in
+ * the W3C DOM element traversal spec since we don't have back reference
+ * from entities content to entities references.
+ *
+ * Returns the last element child or NULL if not available
+ */
+xmlNodePtr
+xmlLastElementChild(xmlNodePtr parent) {
+ xmlNodePtr cur = NULL;
+
+ if (parent == NULL)
+ return(NULL);
+ switch (parent->type) {
+ case XML_ELEMENT_NODE:
+ case XML_ENTITY_NODE:
+ case XML_DOCUMENT_NODE:
+ case XML_HTML_DOCUMENT_NODE:
+ cur = parent->last;
+ break;
+ default:
+ return(NULL);
+ }
+ while (cur != NULL) {
+ if (cur->type == XML_ELEMENT_NODE)
+ return(cur);
+ cur = cur->prev;
+ }
+ return(NULL);
+}
+
+/**
+ * xmlPreviousElementSibling:
+ * @node: the current node
+ *
+ * Finds the first closest previous sibling of the node which is an
+ * element node.
+ * Note the handling of entities references is different than in
+ * the W3C DOM element traversal spec since we don't have back reference
+ * from entities content to entities references.
+ *
+ * Returns the previous element sibling or NULL if not available
+ */
+xmlNodePtr
+xmlPreviousElementSibling(xmlNodePtr node) {
+ if (node == NULL)
+ return(NULL);
+ switch (node->type) {
+ case XML_ELEMENT_NODE:
+ case XML_TEXT_NODE:
+ case XML_CDATA_SECTION_NODE:
+ case XML_ENTITY_REF_NODE:
+ case XML_ENTITY_NODE:
+ case XML_PI_NODE:
+ case XML_COMMENT_NODE:
+ case XML_XINCLUDE_START:
+ case XML_XINCLUDE_END:
+ node = node->prev;
+ break;
+ default:
+ return(NULL);
+ }
+ while (node != NULL) {
+ if (node->type == XML_ELEMENT_NODE)
+ return(node);
+ node = node->next;
+ }
+ return(NULL);
+}
+
+/**
+ * xmlNextElementSibling:
+ * @node: the current node
+ *
+ * Finds the first closest next sibling of the node which is an
+ * element node.
+ * Note the handling of entities references is different than in
+ * the W3C DOM element traversal spec since we don't have back reference
+ * from entities content to entities references.
+ *
+ * Returns the next element sibling or NULL if not available
+ */
+xmlNodePtr
+xmlNextElementSibling(xmlNodePtr node) {
+ if (node == NULL)
+ return(NULL);
+ switch (node->type) {
+ case XML_ELEMENT_NODE:
+ case XML_TEXT_NODE:
+ case XML_CDATA_SECTION_NODE:
+ case XML_ENTITY_REF_NODE:
+ case XML_ENTITY_NODE:
+ case XML_PI_NODE:
+ case XML_COMMENT_NODE:
+ case XML_DTD_NODE:
+ case XML_XINCLUDE_START:
+ case XML_XINCLUDE_END:
+ node = node->next;
+ break;
+ default:
+ return(NULL);
+ }
+ while (node != NULL) {
+ if (node->type == XML_ELEMENT_NODE)
+ return(node);
+ node = node->next;
+ }
+ return(NULL);
+}
+
+#endif /* LIBXML_TREE_ENABLED */
+
/**
* xmlFreeNodeList:
* @cur: the first node in the list
@@ -6996,7 +7195,13 @@ xmlBufferResize(xmlBufferPtr buf, unsigned int size)
case XML_BUFFER_ALLOC_DOUBLEIT:
/*take care of empty case*/
newSize = (buf->size ? buf->size*2 : size + 10);
- while (size > newSize) newSize *= 2;
+ while (size > newSize) {
+ if (newSize > UINT_MAX / 2) {
+ xmlTreeErrMemory("growing buffer");
+ return 0;
+ }
+ newSize *= 2;
+ }
break;
case XML_BUFFER_ALLOC_EXACT:
newSize = size+10;
diff --git a/valid.c b/valid.c
index 49fb720..9baba3b 100644
--- a/valid.c
+++ b/valid.c
@@ -3792,27 +3792,13 @@ xmlValidateNotationDecl(xmlValidCtxtPtr ctxt ATTRIBUTE_UNUSED, xmlDocPtr doc ATT
}
/**
- * xmlValidateAttributeValue:
+ * xmlValidateAttributeValueInternal:
+ * @doc: the document
* @type: an attribute type
* @value: an attribute value
*
* Validate that the given attribute value match the proper production
*
- * [ VC: ID ]
- * Values of type ID must match the Name production....
- *
- * [ VC: IDREF ]
- * Values of type IDREF must match the Name production, and values
- * of type IDREFS must match Names ...
- *
- * [ VC: Entity Name ]
- * Values of type ENTITY must match the Name production, values
- * of type ENTITIES must match Names ...
- *
- * [ VC: Name Token ]
- * Values of type NMTOKEN must match the Nmtoken production; values
- * of type NMTOKENS must match Nmtokens.
- *
* returns 1 if valid or 0 otherwise
*/
@@ -3839,6 +3825,30 @@ xmlValidateAttributeValueInternal(xmlDocPtr doc, xmlAttributeType type,
return(1);
}
+/**
+ * xmlValidateAttributeValue:
+ * @type: an attribute type
+ * @value: an attribute value
+ *
+ * Validate that the given attribute value match the proper production
+ *
+ * [ VC: ID ]
+ * Values of type ID must match the Name production....
+ *
+ * [ VC: IDREF ]
+ * Values of type IDREF must match the Name production, and values
+ * of type IDREFS must match Names ...
+ *
+ * [ VC: Entity Name ]
+ * Values of type ENTITY must match the Name production, values
+ * of type ENTITIES must match Names ...
+ *
+ * [ VC: Name Token ]
+ * Values of type NMTOKEN must match the Nmtoken production; values
+ * of type NMTOKENS must match Nmtokens.
+ *
+ * returns 1 if valid or 0 otherwise
+ */
int
xmlValidateAttributeValue(xmlAttributeType type, const xmlChar *value) {
return(xmlValidateAttributeValueInternal(NULL, type, value));
diff --git a/win32/Makefile.msvc.orig b/win32/Makefile.msvc.orig
new file mode 100644
index 0000000..ec1950c
--- /dev/null
+++ b/win32/Makefile.msvc.orig
@@ -0,0 +1,462 @@
+# Makefile for libxml2, specific for Windows, MSVC and NMAKE.
+#
+# Take a look at the beginning and modify the variables to suit your
+# environment. Having done that, you can do a
+#
+# nmake [all] to build the libxml and the accompanying utilities.
+# nmake clean to remove all compiler output files and return to a
+# clean state.
+# nmake rebuild to rebuild everything from scratch. This basically does
+# a 'nmake clean' and then a 'nmake all'.
+# nmake install to install the library and its header files.
+#
+# March 2002, Igor Zlatkovic <igor@zlatkovic.com>
+
+# There should never be a need to modify anything below this line.
+# ----------------------------------------------------------------
+
+AUTOCONF = .\config.msvc
+!include $(AUTOCONF)
+
+# Names of various input and output components.
+XML_NAME = xml2
+XML_BASENAME = lib$(XML_NAME)
+XML_SO = $(XML_BASENAME).dll
+XML_IMP = $(XML_BASENAME).lib
+XML_DEF = $(XML_BASENAME).def
+XML_A = $(XML_BASENAME)_a.lib
+XML_A_DLL = $(XML_BASENAME)_a_dll.lib
+
+# Place where we let the compiler put its output.
+BINDIR = bin.msvc
+XML_INTDIR = int.msvc
+XML_INTDIR_A = int.a.msvc
+XML_INTDIR_A_DLL = int.a.dll.msvc
+UTILS_INTDIR = int.utils.msvc
+
+# The preprocessor and its options.
+CPP = cl.exe /EP
+CPPFLAGS = /nologo /I$(XML_SRCDIR)\include
+!if "$(WITH_THREADS)" != "no"
+CPPFLAGS = $(CPPFLAGS) /D "_REENTRANT"
+!endif
+
+# The compiler and its options.
+CC = cl.exe
+CFLAGS = /nologo /D "WIN32" /D "_WINDOWS" /D "_MBCS" /W1 $(CRUNTIME)
+CFLAGS = $(CFLAGS) /I$(XML_SRCDIR) /I$(XML_SRCDIR)\include /I$(INCPREFIX)
+!if "$(WITH_THREADS)" != "no"
+CFLAGS = $(CFLAGS) /D "_REENTRANT"
+!endif
+!if "$(WITH_THREADS)" == "yes" || "$(WITH_THREADS)" == "ctls"
+CFLAGS = $(CFLAGS) /D "HAVE_WIN32_THREADS" /D "HAVE_COMPILER_TLS"
+!else if "$(WITH_THREADS)" == "native"
+CFLAGS = $(CFLAGS) /D "HAVE_WIN32_THREADS"
+!else if "$(WITH_THREADS)" == "posix"
+CFLAGS = $(CFLAGS) /D "HAVE_PTHREAD_H"
+!endif
+!if "$(WITH_ZLIB)" == "1"
+CFLAGS = $(CFLAGS) /D "HAVE_ZLIB_H"
+!endif
+CFLAGS = $(CFLAGS) /D_CRT_SECURE_NO_DEPRECATE /D_CRT_NONSTDC_NO_DEPRECATE
+
+# The linker and its options.
+LD = link.exe
+LDFLAGS = /nologo /VERSION:$(LIBXML_MAJOR_VERSION).$(LIBXML_MINOR_VERSION)
+LDFLAGS = $(LDFLAGS) /LIBPATH:$(BINDIR) /LIBPATH:$(LIBPREFIX)
+LIBS =
+!if "$(WITH_FTP)" == "1" || "$(WITH_HTTP)" == "1"
+LIBS = $(LIBS) wsock32.lib ws2_32.lib
+!endif
+!if "$(WITH_ICONV)" == "1"
+LIBS = $(LIBS) iconv.lib
+!endif
+!if "$(WITH_ZLIB)" == "1"
+LIBS = $(LIBS) zdll.lib
+!endif
+!if "$(WITH_THREADS)" == "posix"
+LIBS = $(LIBS) pthreadVC.lib
+!endif
+!if "$(WITH_MODULES)" == "1"
+LIBS = $(LIBS) kernel32.lib
+!endif
+
+# The archiver and its options.
+AR = lib.exe
+ARFLAGS = /nologo
+
+# Optimisation and debug symbols.
+!if "$(DEBUG)" == "1"
+CFLAGS = $(CFLAGS) /D "_DEBUG" /Od /Z7
+LDFLAGS = $(LDFLAGS) /DEBUG
+!else
+CFLAGS = $(CFLAGS) /D "NDEBUG" /O2
+LDFLAGS = $(LDFLAGS) /OPT:NOWIN98
+!endif
+
+# Libxml object files.
+XML_OBJS = $(XML_INTDIR)\c14n.obj\
+ $(XML_INTDIR)\catalog.obj\
+ $(XML_INTDIR)\chvalid.obj\
+ $(XML_INTDIR)\debugXML.obj\
+ $(XML_INTDIR)\dict.obj\
+ $(XML_INTDIR)\DOCBparser.obj\
+ $(XML_INTDIR)\encoding.obj\
+ $(XML_INTDIR)\entities.obj\
+ $(XML_INTDIR)\error.obj\
+ $(XML_INTDIR)\globals.obj\
+ $(XML_INTDIR)\hash.obj\
+ $(XML_INTDIR)\HTMLparser.obj\
+ $(XML_INTDIR)\HTMLtree.obj\
+ $(XML_INTDIR)\legacy.obj\
+ $(XML_INTDIR)\list.obj\
+ $(XML_INTDIR)\nanoftp.obj\
+ $(XML_INTDIR)\nanohttp.obj\
+ $(XML_INTDIR)\parser.obj\
+ $(XML_INTDIR)\parserInternals.obj\
+ $(XML_INTDIR)\pattern.obj\
+ $(XML_INTDIR)\relaxng.obj\
+ $(XML_INTDIR)\SAX2.obj\
+ $(XML_INTDIR)\SAX.obj\
+ $(XML_INTDIR)\schematron.obj\
+ $(XML_INTDIR)\threads.obj\
+ $(XML_INTDIR)\tree.obj\
+ $(XML_INTDIR)\uri.obj\
+ $(XML_INTDIR)\valid.obj\
+ $(XML_INTDIR)\xinclude.obj\
+ $(XML_INTDIR)\xlink.obj\
+ $(XML_INTDIR)\xmlIO.obj\
+ $(XML_INTDIR)\xmlmemory.obj\
+ $(XML_INTDIR)\xmlreader.obj\
+ $(XML_INTDIR)\xmlregexp.obj\
+ $(XML_INTDIR)\xmlmodule.obj\
+ $(XML_INTDIR)\xmlsave.obj\
+ $(XML_INTDIR)\xmlschemas.obj\
+ $(XML_INTDIR)\xmlschemastypes.obj\
+ $(XML_INTDIR)\xmlunicode.obj\
+ $(XML_INTDIR)\xmlwriter.obj\
+ $(XML_INTDIR)\xpath.obj\
+ $(XML_INTDIR)\xpointer.obj\
+ $(XML_INTDIR)\xmlstring.obj
+
+# Static libxml object files.
+XML_OBJS_A = $(XML_INTDIR_A)\c14n.obj\
+ $(XML_INTDIR_A)\catalog.obj\
+ $(XML_INTDIR_A)\chvalid.obj\
+ $(XML_INTDIR_A)\debugXML.obj\
+ $(XML_INTDIR_A)\dict.obj\
+ $(XML_INTDIR_A)\DOCBparser.obj\
+ $(XML_INTDIR_A)\encoding.obj\
+ $(XML_INTDIR_A)\entities.obj\
+ $(XML_INTDIR_A)\error.obj\
+ $(XML_INTDIR_A)\globals.obj\
+ $(XML_INTDIR_A)\hash.obj\
+ $(XML_INTDIR_A)\HTMLparser.obj\
+ $(XML_INTDIR_A)\HTMLtree.obj\
+ $(XML_INTDIR_A)\legacy.obj\
+ $(XML_INTDIR_A)\list.obj\
+ $(XML_INTDIR_A)\nanoftp.obj\
+ $(XML_INTDIR_A)\nanohttp.obj\
+ $(XML_INTDIR_A)\parser.obj\
+ $(XML_INTDIR_A)\parserInternals.obj\
+ $(XML_INTDIR_A)\pattern.obj\
+ $(XML_INTDIR_A)\relaxng.obj\
+ $(XML_INTDIR_A)\SAX2.obj\
+ $(XML_INTDIR_A)\SAX.obj\
+ $(XML_INTDIR_A)\schematron.obj\
+ $(XML_INTDIR_A)\threads.obj\
+ $(XML_INTDIR_A)\tree.obj\
+ $(XML_INTDIR_A)\uri.obj\
+ $(XML_INTDIR_A)\valid.obj\
+ $(XML_INTDIR_A)\xinclude.obj\
+ $(XML_INTDIR_A)\xlink.obj\
+ $(XML_INTDIR_A)\xmlIO.obj\
+ $(XML_INTDIR_A)\xmlmemory.obj\
+ $(XML_INTDIR_A)\xmlreader.obj\
+ $(XML_INTDIR_A)\xmlregexp.obj\
+ $(XML_INTDIR_A)\xmlmodule.obj\
+ $(XML_INTDIR_A)\xmlsave.obj\
+ $(XML_INTDIR_A)\xmlschemas.obj\
+ $(XML_INTDIR_A)\xmlschemastypes.obj\
+ $(XML_INTDIR_A)\xmlunicode.obj\
+ $(XML_INTDIR_A)\xmlwriter.obj\
+ $(XML_INTDIR_A)\xpath.obj\
+ $(XML_INTDIR_A)\xpointer.obj\
+ $(XML_INTDIR_A)\xmlstring.obj
+
+# Static libxml object files.
+XML_OBJS_A_DLL = $(XML_INTDIR_A_DLL)\c14n.obj\
+ $(XML_INTDIR_A_DLL)\catalog.obj\
+ $(XML_INTDIR_A_DLL)\chvalid.obj\
+ $(XML_INTDIR_A_DLL)\debugXML.obj\
+ $(XML_INTDIR_A_DLL)\dict.obj\
+ $(XML_INTDIR_A_DLL)\DOCBparser.obj\
+ $(XML_INTDIR_A_DLL)\encoding.obj\
+ $(XML_INTDIR_A_DLL)\entities.obj\
+ $(XML_INTDIR_A_DLL)\error.obj\
+ $(XML_INTDIR_A_DLL)\globals.obj\
+ $(XML_INTDIR_A_DLL)\hash.obj\
+ $(XML_INTDIR_A_DLL)\HTMLparser.obj\
+ $(XML_INTDIR_A_DLL)\HTMLtree.obj\
+ $(XML_INTDIR_A_DLL)\legacy.obj\
+ $(XML_INTDIR_A_DLL)\list.obj\
+ $(XML_INTDIR_A_DLL)\nanoftp.obj\
+ $(XML_INTDIR_A_DLL)\nanohttp.obj\
+ $(XML_INTDIR_A_DLL)\parser.obj\
+ $(XML_INTDIR_A_DLL)\parserInternals.obj\
+ $(XML_INTDIR_A_DLL)\pattern.obj\
+ $(XML_INTDIR_A_DLL)\relaxng.obj\
+ $(XML_INTDIR_A_DLL)\SAX2.obj\
+ $(XML_INTDIR_A_DLL)\SAX.obj\
+ $(XML_INTDIR_A_DLL)\schematron.obj\
+ $(XML_INTDIR_A_DLL)\threads.obj\
+ $(XML_INTDIR_A_DLL)\tree.obj\
+ $(XML_INTDIR_A_DLL)\uri.obj\
+ $(XML_INTDIR_A_DLL)\valid.obj\
+ $(XML_INTDIR_A_DLL)\xinclude.obj\
+ $(XML_INTDIR_A_DLL)\xlink.obj\
+ $(XML_INTDIR_A_DLL)\xmlIO.obj\
+ $(XML_INTDIR_A_DLL)\xmlmemory.obj\
+ $(XML_INTDIR_A_DLL)\xmlreader.obj\
+ $(XML_INTDIR_A_DLL)\xmlregexp.obj\
+ $(XML_INTDIR_A_DLL)\xmlmodule.obj\
+ $(XML_INTDIR_A_DLL)\xmlsave.obj\
+ $(XML_INTDIR_A_DLL)\xmlschemas.obj\
+ $(XML_INTDIR_A_DLL)\xmlschemastypes.obj\
+ $(XML_INTDIR_A_DLL)\xmlunicode.obj\
+ $(XML_INTDIR_A_DLL)\xmlwriter.obj\
+ $(XML_INTDIR_A_DLL)\xpath.obj\
+ $(XML_INTDIR_A_DLL)\xpointer.obj\
+ $(XML_INTDIR_A_DLL)\xmlstring.obj
+
+# Xmllint and friends executables.
+UTILS = $(BINDIR)\xmllint.exe\
+ $(BINDIR)\xmlcatalog.exe\
+ $(BINDIR)\testAutomata.exe\
+ $(BINDIR)\testC14N.exe\
+ $(BINDIR)\testDocbook.exe\
+ $(BINDIR)\testHTML.exe\
+ $(BINDIR)\testReader.exe\
+ $(BINDIR)\testRelax.exe\
+ $(BINDIR)\testRegexp.exe\
+ $(BINDIR)\testModule.exe\
+ $(BINDIR)\testSAX.exe\
+ $(BINDIR)\testSchemas.exe\
+ $(BINDIR)\testURI.exe\
+ $(BINDIR)\testXPath.exe\
+ $(BINDIR)\runtest.exe\
+ $(BINDIR)\runsuite.exe\
+ $(BINDIR)\testapi.exe
+
+!if "$(WITH_THREADS)" == "yes" || "$(WITH_THREADS)" == "ctls" || "$(WITH_THREADS)" == "native"
+UTILS = $(UTILS) $(BINDIR)\testThreadsWin32.exe
+!else if "$(WITH_THREADS)" == "posix"
+UTILS = $(UTILS) $(BINDIR)\testThreads.exe
+!endif
+
+!if "$(VCMANIFEST)" == "1"
+_VC_MANIFEST_EMBED_EXE= if exist $@.manifest mt.exe -nologo -manifest $@.manifest -outputresource:$@;1
+_VC_MANIFEST_EMBED_DLL= if exist $@.manifest mt.exe -nologo -manifest $@.manifest -outputresource:$@;2
+!else
+_VC_MANIFEST_EMBED_EXE=
+_VC_MANIFEST_EMBED_DLL=
+!endif
+
+all : libxml libxmla libxmladll utils
+
+libxml : $(BINDIR)\$(XML_SO)
+
+libxmla : $(BINDIR)\$(XML_A)
+
+libxmladll : $(BINDIR)\$(XML_A_DLL)
+
+utils : $(UTILS)
+
+clean :
+ if exist $(XML_INTDIR) rmdir /S /Q $(XML_INTDIR)
+ if exist $(XML_INTDIR_A) rmdir /S /Q $(XML_INTDIR_A)
+ if exist $(XML_INTDIR_A_DLL) rmdir /S /Q $(XML_INTDIR_A_DLL)
+ if exist $(UTILS_INTDIR) rmdir /S /Q $(UTILS_INTDIR)
+ if exist $(BINDIR) rmdir /S /Q $(BINDIR)
+
+distclean : clean
+ if exist config.* del config.*
+ if exist Makefile del Makefile
+
+rebuild : clean all
+
+install-libs : all
+ if not exist $(INCPREFIX)\libxml mkdir $(INCPREFIX)\libxml
+ if not exist $(BINPREFIX) mkdir $(BINPREFIX)
+ if not exist $(LIBPREFIX) mkdir $(LIBPREFIX)
+ if not exist $(SOPREFIX) mkdir $(SOPREFIX)
+ copy $(XML_SRCDIR)\include\libxml\*.h $(INCPREFIX)\libxml
+ copy $(BINDIR)\$(XML_SO) $(SOPREFIX)
+ copy $(BINDIR)\$(XML_A) $(LIBPREFIX)
+ copy $(BINDIR)\$(XML_A_DLL) $(LIBPREFIX)
+ copy $(BINDIR)\$(XML_IMP) $(LIBPREFIX)
+
+install : install-libs
+ copy $(BINDIR)\*.exe $(BINPREFIX)
+ -copy $(BINDIR)\*.pdb $(BINPREFIX)
+
+install-dist : install-libs
+ copy $(BINDIR)\xml*.exe $(BINPREFIX)
+ -copy $(BINDIR)\xml*.pdb $(BINPREFIX)
+
+# This is a target for me, to make a binary distribution. Not for the public use,
+# keep your hands off :-)
+BDVERSION = $(LIBXML_MAJOR_VERSION).$(LIBXML_MINOR_VERSION).$(LIBXML_MICRO_VERSION)
+BDPREFIX = $(XML_BASENAME)-$(BDVERSION).win32
+bindist : all
+ $(MAKE) /nologo PREFIX=$(BDPREFIX) SOPREFIX=$(BDPREFIX)\bin install-dist
+ cscript //NoLogo configure.js genreadme $(XML_BASENAME) $(BDVERSION) $(BDPREFIX)\readme.txt
+
+
+# Makes the output directory.
+$(BINDIR) :
+ if not exist $(BINDIR) mkdir $(BINDIR)
+
+
+# Makes the libxml intermediate directory.
+$(XML_INTDIR) :
+ if not exist $(XML_INTDIR) mkdir $(XML_INTDIR)
+
+# Makes the static libxml intermediate directory.
+$(XML_INTDIR_A) :
+ if not exist $(XML_INTDIR_A) mkdir $(XML_INTDIR_A)
+
+# Makes the static for dll libxml intermediate directory.
+$(XML_INTDIR_A_DLL) :
+ if not exist $(XML_INTDIR_A_DLL) mkdir $(XML_INTDIR_A_DLL)
+
+# An implicit rule for libxml compilation.
+{$(XML_SRCDIR)}.c{$(XML_INTDIR)}.obj::
+ $(CC) $(CFLAGS) /Fo$(XML_INTDIR)\ /c $<
+
+# An implicit rule for static libxml compilation.
+{$(XML_SRCDIR)}.c{$(XML_INTDIR_A)}.obj::
+ $(CC) $(CFLAGS) /D "LIBXML_STATIC" /Fo$(XML_INTDIR_A)\ /c $<
+
+# An implicit rule for static for dll libxml compilation.
+{$(XML_SRCDIR)}.c{$(XML_INTDIR_A_DLL)}.obj::
+ $(CC) $(CFLAGS) /D "LIBXML_STATIC" /D "LIBXML_STATIC_FOR_DLL" /Fo$(XML_INTDIR_A_DLL)\ /c $<
+
+# Compiles libxml source. Uses the implicit rule for commands.
+$(XML_OBJS) : $(XML_INTDIR)
+
+# Compiles static libxml source. Uses the implicit rule for commands.
+$(XML_OBJS_A) : $(XML_INTDIR_A)
+
+# Compiles static for dll libxml source. Uses the implicit rule for commands.
+$(XML_OBJS_A_DLL) : $(XML_INTDIR_A_DLL)
+
+# Creates the export definition file (DEF) for libxml.
+$(XML_INTDIR)\$(XML_DEF) : $(XML_INTDIR) $(XML_DEF).src
+ $(CPP) $(CPPFLAGS) $(XML_DEF).src > $(XML_INTDIR)\$(XML_DEF)
+
+# Creates the libxml shared object.
+$(BINDIR)\$(XML_SO) : $(BINDIR) $(XML_OBJS) $(XML_INTDIR)\$(XML_DEF)
+ $(LD) $(LDFLAGS) /DLL \
+ /IMPLIB:$(BINDIR)\$(XML_IMP) /OUT:$(BINDIR)\$(XML_SO) $(XML_OBJS) $(LIBS)
+ @$(_VC_MANIFEST_EMBED_DLL)
+
+#$(BINDIR)\$(XML_SO) : $(BINDIR) $(XML_OBJS) $(XML_INTDIR)\$(XML_DEF)
+# $(LD) $(LDFLAGS) /DLL /DEF:$(XML_INTDIR)\$(XML_DEF) \
+# /IMPLIB:$(BINDIR)\$(XML_IMP) /OUT:$(BINDIR)\$(XML_SO) $(XML_OBJS) $(LIBS)
+
+# Creates the libxml archive.
+$(BINDIR)\$(XML_A) : $(BINDIR) $(XML_OBJS_A)
+ $(AR) $(ARFLAGS) /OUT:$(BINDIR)\$(XML_A) $(XML_OBJS_A)
+
+# Creates the libxml static for dll archive.
+$(BINDIR)\$(XML_A_DLL) : $(BINDIR) $(XML_OBJS_A_DLL)
+ $(AR) $(ARFLAGS) /OUT:$(BINDIR)\$(XML_A_DLL) $(XML_OBJS_A_DLL)
+
+# Makes the utils intermediate directory.
+$(UTILS_INTDIR) :
+ if not exist $(UTILS_INTDIR) mkdir $(UTILS_INTDIR)
+
+# An implicit rule for xmllint and friends.
+!if "$(STATIC)" == "1"
+{$(UTILS_SRCDIR)}.c{$(BINDIR)}.exe:
+ $(CC) /D "LIBXML_STATIC" $(CFLAGS) /Fo$(UTILS_INTDIR)\ /c $<
+ $(LD) $(LDFLAGS) /OUT:$@ $(XML_A) $(LIBS) $(UTILS_INTDIR)\$(<B).obj
+ @$(_VC_MANIFEST_EMBED_EXE)
+!else
+{$(UTILS_SRCDIR)}.c{$(BINDIR)}.exe:
+ $(CC) $(CFLAGS) /Fo$(UTILS_INTDIR)\ /c $<
+ $(LD) $(LDFLAGS) /OUT:$@ $(XML_IMP) $(LIBS) $(UTILS_INTDIR)\$(<B).obj
+ @$(_VC_MANIFEST_EMBED_EXE)
+!endif
+
+# Builds xmllint and friends. Uses the implicit rule for commands.
+$(UTILS) : $(UTILS_INTDIR) $(BINDIR) libxml libxmla libxmladll
+
+# Source dependences should be autogenerated somehow here, but how to
+# do it? I have no clue.
+
+# TESTS
+
+tests : XPathtests
+
+XPathtests : $(BINDIR)\testXPath.exe
+ @echo. 2> .memdump
+ @echo ## XPath regression tests
+ @-$(BINDIR)\testXPath.exe | find /C "support not compiled in" 1>nul
+ @if %ERRORLEVEL% NEQ 0 @( \
+ echo Skipping debug not compiled in\
+ @exit 0 \
+ )
+ @for %%I in ($(XML_SRCDIR)\test\XPath\expr\*.*) do @( \
+ @IF NOT EXIST $(XML_SRCDIR)\result\XPath\expr\%%~nxI ( \
+ @echo New test %%~nxI &&\
+ @echo %%~nxI &&\
+ $(BINDIR)\testXPath.exe -f --expr %%I > $(XML_SRCDIR)/result/XPath/expr/%%~nxI &&\
+ findstr /C:"MEMORY ALLOCATED : 0" \
+ ) ELSE ( \
+ $(BINDIR)\testXPath.exe -f --expr %%I 2>&1 > result.%%~nxI &&\
+ fc $(XML_SRCDIR)\result\XPath\expr\%%~nxI result.%%~nxI >nul &\
+ iF ERRORLEVEL 1 exit 1 & \
+ findstr "MEMORY ALLOCATED" .memdump | findstr /C:"MEMORY ALLOCATED : 0" >nul &&\
+ del result.%%~nxI \
+ ) \
+ )
+ @for %%I in ($(XML_SRCDIR)\test\XPath\docs\*.*) do @( \
+ for %%J in ($(XML_SRCDIR)\test\XPath\tests\%%~nxI*.*) do @( \
+ if not exist $(XML_SRCDIR)\result\XPath\tests\%%~nxJ ( \
+ $(BINDIR)\testXPath.exe -f -i %%I %%J > $(XML_SRCDIR)\result\XPath\tests\%%~nxJ &&\
+ findstr /C:"MEMORY ALLOCATED" .memdump | findstr /C:"MEMORY ALLOCATED : 0" > nul \
+ ) ELSE ( \
+ $(BINDIR)\testXPAth.exe -f -i %%I %%J 2>&1 > result.%%~nxJ &&\
+ findstr /C:"MEMORY ALLOCATED" .memdump | findstr /C:"MEMORY ALLOCATED : 0">null &&\
+ fc $(XML_SRCDIR)\result\XPath\tests\%%~nxJ result.%%~nxJ >null & \
+ IF ERRORLEVEL 1 (echo Error: %%I %%J & exit 1) & \
+ del result.%%~nxJ \
+ )\
+ )\
+ )
+
+XMLtests : $(BINDIR)\xmllint.exe
+ @echo. 2> .memdump
+ @echo ## XML regression tests
+ -@for %%I in ($(XML_SRCDIR)\test\*) do @( \
+ if not exist $(XML_SRCDIR)\result\%%~nxI ( \
+ echo New test file %%~nxI &\
+ $(BINDIR)\xmllint.exe %%I > $(XML_SRCDIR)\result\%%~nxI && \
+ findstr /C:"MEMORY ALLOCATED" .memdump | findstr /C:"MEMORY ALLOCATED : 0" > null \
+ ) ELSE ( \
+ $(BINDIR)\xmllint.exe %%I 2>&1 > result.%%~nxI && \
+ findstr /C:"MEMORY ALLOC" .memdump | findstr /C:"MEMORY ALLOCATED : 0" > null && \
+ fc $(XML_SRCDIR)\result\%%~nxI result.%%~nxI > null && \
+ $(BINDIR)\xmllint.exe result.%%~nxI 2>&1 > result2.%%~nxI | findstr /V /C:"failed to load external entity" && \
+ fc result.%%~nxI result2.%%~nxI & \
+ del result.%%~nxI result2.%%~nxI\
+ ) \
+ )
+
+
+
+
+
+
diff --git a/win32/libxml2.def.src b/win32/libxml2.def.src
index f4c2c63..995b790 100644
--- a/win32/libxml2.def.src
+++ b/win32/libxml2.def.src
@@ -660,6 +660,7 @@ xmlCheckHTTPInput
xmlCheckLanguageID
xmlCheckUTF8
xmlCheckVersion
+xmlChildElementCount
xmlCleanupCharEncodingHandlers
xmlCleanupEncodingAliases
xmlCleanupGlobals
@@ -854,6 +855,7 @@ xmlFileMatch
xmlFileOpen
xmlFileRead
xmlFindCharEncodingHandler
+xmlFirstElementChild
xmlFreeAttributeTable
#ifdef LIBXML_AUTOMATA_ENABLED
xmlFreeAutomata
@@ -1009,6 +1011,7 @@ xmlIsRef
xmlIsXHTML
#endif
xmlKeepBlanksDefault
+xmlLastElementChild
xmlLineNumbersDefault
xmlLinkGetData
xmlListAppend
@@ -1064,6 +1067,7 @@ xmlMallocLoc
#endif
xmlMemBlocks
xmlMemDisplay
+xmlMemDisplayLast
xmlMemFree
xmlMemGet
xmlMemMalloc
@@ -1226,6 +1230,7 @@ xmlNewDocText
xmlNewDocTextLen
xmlNewDtd
xmlNewElementContent
+xmlNewEntity
xmlNewEntityInputStream
xmlNewGlobalNs
xmlNewIOInputStream
@@ -1256,6 +1261,7 @@ xmlNewTextWriterPushParser
xmlNewTextWriterTree
xmlNewValidCtxt
xmlNextChar
+xmlNextElementSibling
xmlNoNetExternalEntityLoader
xmlNodeAddContent
xmlNodeAddContentLen
@@ -1390,6 +1396,7 @@ xmlPatterncompile
xmlPedanticParserDefault
xmlPopInput
xmlPopInputCallbacks
+xmlPreviousElementSibling
xmlPrintURI
xmlPushInput
xmlRMutexLock
diff --git a/xmllint.c b/xmllint.c
index 6955fde..77c1e62 100644
--- a/xmllint.c
+++ b/xmllint.c
@@ -2753,9 +2753,11 @@ static void parseAndPrintFile(char *filename, xmlParserCtxtPtr rectxt) {
#endif
#ifdef LIBXML_DEBUG_ENABLED
+#if defined(LIBXML_HTML_ENABLED) || defined(LIBXML_VALID_ENABLED)
if ((debugent) && (!html))
xmlDebugDumpEntities(stderr, doc);
#endif
+#endif
/*
* free it.
diff --git a/xmlmemory.c b/xmlmemory.c
index 510d4ce..433abb8 100644
--- a/xmlmemory.c
+++ b/xmlmemory.c
@@ -205,7 +205,7 @@ xmlMallocLoc(size_t size, const char * file, int line)
if (xmlMemTraceBlockAt == ret) {
xmlGenericError(xmlGenericErrorContext,
- "%p : Malloc(%d) Ok\n", xmlMemTraceBlockAt, size);
+ "%p : Malloc(%ld) Ok\n", xmlMemTraceBlockAt, size);
xmlMallocBreakpoint();
}
@@ -273,7 +273,7 @@ xmlMallocAtomicLoc(size_t size, const char * file, int line)
if (xmlMemTraceBlockAt == ret) {
xmlGenericError(xmlGenericErrorContext,
- "%p : Malloc(%d) Ok\n", xmlMemTraceBlockAt, size);
+ "%p : Malloc(%ld) Ok\n", xmlMemTraceBlockAt, size);
xmlMallocBreakpoint();
}
@@ -348,7 +348,7 @@ xmlReallocLoc(void *ptr,size_t size, const char * file, int line)
}
if (xmlMemTraceBlockAt == ptr) {
xmlGenericError(xmlGenericErrorContext,
- "%p : Realloced(%d -> %d) Ok\n",
+ "%p : Realloced(%ld -> %ld) Ok\n",
xmlMemTraceBlockAt, p->mh_size, size);
xmlMallocBreakpoint();
}
diff --git a/xmlwriter.c b/xmlwriter.c
index 69d4b85..b88de3a 100644
--- a/xmlwriter.c
+++ b/xmlwriter.c
@@ -1240,8 +1240,16 @@ xmlTextWriterFullEndElement(xmlTextWriterPtr writer)
if (count < 0)
return -1;
sum += count;
+ if (writer->indent)
+ writer->doindent = 0;
/* fallthrough */
case XML_TEXTWRITER_TEXT:
+ if ((writer->indent) && (writer->doindent)) {
+ count = xmlTextWriterWriteIndent(writer);
+ sum += count;
+ writer->doindent = 1;
+ } else
+ writer->doindent = 1;
count = xmlOutputBufferWriteString(writer->out, "</");
if (count < 0)
return -1;
diff --git a/xpath.c b/xpath.c
index 514262f..57442e6 100644
--- a/xpath.c
+++ b/xpath.c
@@ -13329,8 +13329,8 @@ xmlXPathCompOpEval(xmlXPathParserContextPtr ctxt, xmlXPathStepOpPtr op)
URI = xmlXPathNsLookup(ctxt->context, op->value5);
if (URI == NULL) {
xmlGenericError(xmlGenericErrorContext,
- "xmlXPathCompOpEval: variable %s bound to undefined prefix %s\n",
- op->value4, op->value5);
+ "xmlXPathCompOpEval: variable %s bound to undefined prefix %s\n",
+ (char *) op->value4, (char *)op->value5);
return (total);
}
val = xmlXPathVariableLookupNS(ctxt->context,
@@ -13377,8 +13377,8 @@ xmlXPathCompOpEval(xmlXPathParserContextPtr ctxt, xmlXPathStepOpPtr op)
URI = xmlXPathNsLookup(ctxt->context, op->value5);
if (URI == NULL) {
xmlGenericError(xmlGenericErrorContext,
- "xmlXPathCompOpEval: function %s bound to undefined prefix %s\n",
- op->value4, op->value5);
+ "xmlXPathCompOpEval: function %s bound to undefined prefix %s\n",
+ (char *)op->value4, (char *)op->value5);
return (total);
}
func = xmlXPathFunctionLookupNS(ctxt->context,
@@ -13386,8 +13386,8 @@ xmlXPathCompOpEval(xmlXPathParserContextPtr ctxt, xmlXPathStepOpPtr op)
}
if (func == NULL) {
xmlGenericError(xmlGenericErrorContext,
- "xmlXPathCompOpEval: function %s not found\n",
- op->value4);
+ "xmlXPathCompOpEval: function %s not found\n",
+ (char *)op->value4);
XP_ERROR0(XPATH_UNKNOWN_FUNC_ERROR);
}
op->cache = XML_CAST_FPTR(func);