Imported Upstream version 1.1.30_rc1 73/156073/1 upstream/1.1.30_rc1
authorDongHun Kwak <dh0128.kwak@samsung.com>
Tue, 17 Oct 2017 05:50:30 +0000 (14:50 +0900)
committerDongHun Kwak <dh0128.kwak@samsung.com>
Tue, 17 Oct 2017 05:50:42 +0000 (14:50 +0900)
Change-Id: Ie087e3508369ac612459f31961addc691f2302c1
Signed-off-by: DongHun Kwak <dh0128.kwak@samsung.com>
136 files changed:
Makefile.am
Makefile.in
aclocal.m4
config.h.in
configure
configure.in
doc/APIchunk0.html
doc/APIchunk1.html
doc/APIchunk10.html
doc/APIchunk11.html
doc/APIchunk12.html
doc/APIchunk13.html
doc/APIchunk2.html
doc/APIchunk3.html
doc/APIchunk4.html
doc/APIchunk5.html
doc/APIchunk6.html
doc/APIchunk7.html
doc/APIchunk8.html
doc/APIchunk9.html
doc/APIconstructors.html
doc/APIfiles.html
doc/APIfunctions.html
doc/APIsymbols.html
doc/Makefile.am
doc/Makefile.in
doc/apibuild.py
doc/html/libxslt-extra.html
doc/html/libxslt-transform.html
doc/html/libxslt-variables.html
doc/html/libxslt-xsltInternals.html
doc/html/libxslt-xsltutils.html
doc/libxslt-api.xml
doc/libxslt-refs.xml
doc/newapi.xsl
doc/symbols.xml
doc/syms.xsl
libexslt/Makefile.am
libexslt/Makefile.in
libexslt/common.c
libexslt/date.c
libexslt/dynamic.c
libexslt/functions.c
libexslt/sets.c
libexslt/strings.c
libxslt.spec
libxslt.spec.in
libxslt/Makefile.am
libxslt/Makefile.in
libxslt/attributes.c
libxslt/extensions.c
libxslt/extra.c
libxslt/extra.h
libxslt/functions.c
libxslt/keys.c
libxslt/libxslt.syms
libxslt/numbers.c
libxslt/pattern.c
libxslt/preproc.c
libxslt/templates.c
libxslt/transform.c
libxslt/variables.c
libxslt/variables.h
libxslt/xslt.c
libxslt/xsltInternals.h
libxslt/xsltutils.c
python/Makefile.in
python/tests/Makefile.in
tests/Makefile.in
tests/REC/Makefile.in
tests/REC/test-2.5-1.err
tests/REC1/Makefile.in
tests/REC2/Makefile.in
tests/XSLTMark/Makefile.in
tests/docbook/Makefile.am
tests/docbook/Makefile.in
tests/docs/Makefile.in
tests/documents/Makefile.in
tests/documents/message.result
tests/exslt/Makefile.in
tests/exslt/common/Makefile.in
tests/exslt/crypto/Makefile.in
tests/exslt/date/Makefile.am
tests/exslt/date/Makefile.in
tests/exslt/date/add.1.out
tests/exslt/date/add.1.xml
tests/exslt/date/date.1.out
tests/exslt/date/date.1.xml
tests/exslt/date/datetime.1.out
tests/exslt/date/difference.1.out
tests/exslt/date/difference.1.xml
tests/exslt/date/gyear.1.out
tests/exslt/date/gyear.1.xml
tests/exslt/date/gyearmonth.1.out
tests/exslt/date/gyearmonth.1.xml
tests/exslt/date/seconds.1.out
tests/exslt/date/seconds.1.xml
tests/exslt/date/seconds.2.out
tests/exslt/date/seconds.2.xml
tests/exslt/dynamic/Makefile.in
tests/exslt/functions/Makefile.am
tests/exslt/functions/Makefile.in
tests/exslt/functions/function.11.out [new file with mode: 0644]
tests/exslt/functions/function.11.xml [new file with mode: 0644]
tests/exslt/functions/function.11.xsl [new file with mode: 0644]
tests/exslt/math/Makefile.in
tests/exslt/saxon/Makefile.am
tests/exslt/saxon/Makefile.in
tests/exslt/saxon/eval.2.err
tests/exslt/saxon/eval.2.out
tests/exslt/saxon/eval.3.err
tests/exslt/saxon/eval.3.out
tests/exslt/sets/Makefile.in
tests/exslt/strings/Makefile.in
tests/extensions/Makefile.in
tests/general/Makefile.in
tests/general/bug-165.err
tests/general/bug-165.out
tests/general/bug-175.err
tests/general/bug-175.xsl
tests/general/bug-180.err
tests/general/bug-184.err
tests/general/bug-184.out
tests/keys/Makefile.in
tests/multiple/Makefile.in
tests/namespaces/Makefile.in
tests/numbers/Makefile.in
tests/plugins/Makefile.am
tests/plugins/Makefile.in
tests/reports/Makefile.in
tests/xinclude/Makefile.in
tests/xmlspec/Makefile.in
win32/Makefile.mingw
win32/configure.js
xsltproc/Makefile.am
xsltproc/Makefile.in

index 50af9b5..ff10f57 100644 (file)
@@ -49,9 +49,9 @@ dummy:
 
 tests: dummy
        @echo '## Running the regression test suite'
-       @(cd tests ; $(MAKE) tests)
-       @(cd xsltproc ; $(MAKE) tests)
-       @(if [ "$(PYTHON_SUBDIR)" != "" ] ; then cd python ; $(MAKE) tests ; fi)
+       @(cd tests ; $(MAKE) -s tests)
+       @(cd xsltproc ; $(MAKE) -s tests)
+       @(if [ "$(PYTHON_SUBDIR)" != "" ] ; then cd python ; $(MAKE) -s tests ; fi)
 
 valgrind:
        @echo '## Running the regression tests under Valgrind'
index d9d025b..5c8c35e 100644 (file)
@@ -326,6 +326,9 @@ PACKAGE_URL = @PACKAGE_URL@
 PACKAGE_VERSION = @PACKAGE_VERSION@
 PATH_SEPARATOR = @PATH_SEPARATOR@
 PERL = @PERL@
+PKG_CONFIG = @PKG_CONFIG@
+PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@
+PKG_CONFIG_PATH = @PKG_CONFIG_PATH@
 PYTHON = @PYTHON@
 PYTHONSODV = @PYTHONSODV@
 PYTHON_INCLUDES = @PYTHON_INCLUDES@
@@ -1059,9 +1062,9 @@ dummy:
 
 tests: dummy
        @echo '## Running the regression test suite'
-       @(cd tests ; $(MAKE) tests)
-       @(cd xsltproc ; $(MAKE) tests)
-       @(if [ "$(PYTHON_SUBDIR)" != "" ] ; then cd python ; $(MAKE) tests ; fi)
+       @(cd tests ; $(MAKE) -s tests)
+       @(cd xsltproc ; $(MAKE) -s tests)
+       @(if [ "$(PYTHON_SUBDIR)" != "" ] ; then cd python ; $(MAKE) -s tests ; fi)
 
 valgrind:
        @echo '## Running the regression tests under Valgrind'
index f5ac395..89bf375 100644 (file)
@@ -9052,6 +9052,282 @@ m4_ifndef([_LT_PROG_F77],               [AC_DEFUN([_LT_PROG_F77])])
 m4_ifndef([_LT_PROG_FC],               [AC_DEFUN([_LT_PROG_FC])])
 m4_ifndef([_LT_PROG_CXX],              [AC_DEFUN([_LT_PROG_CXX])])
 
+dnl pkg.m4 - Macros to locate and utilise pkg-config.   -*- Autoconf -*-
+dnl serial 11 (pkg-config-0.29)
+dnl
+dnl Copyright Â© 2004 Scott James Remnant <scott@netsplit.com>.
+dnl Copyright Â© 2012-2015 Dan Nicholson <dbn.lists@gmail.com>
+dnl
+dnl This program is free software; you can redistribute it and/or modify
+dnl it under the terms of the GNU General Public License as published by
+dnl the Free Software Foundation; either version 2 of the License, or
+dnl (at your option) any later version.
+dnl
+dnl This program is distributed in the hope that it will be useful, but
+dnl WITHOUT ANY WARRANTY; without even the implied warranty of
+dnl MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+dnl General Public License for more details.
+dnl
+dnl You should have received a copy of the GNU General Public License
+dnl along with this program; if not, write to the Free Software
+dnl Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
+dnl 02111-1307, USA.
+dnl
+dnl As a special exception to the GNU General Public License, if you
+dnl distribute this file as part of a program that contains a
+dnl configuration script generated by Autoconf, you may include it under
+dnl the same distribution terms that you use for the rest of that
+dnl program.
+
+dnl PKG_PREREQ(MIN-VERSION)
+dnl -----------------------
+dnl Since: 0.29
+dnl
+dnl Verify that the version of the pkg-config macros are at least
+dnl MIN-VERSION. Unlike PKG_PROG_PKG_CONFIG, which checks the user's
+dnl installed version of pkg-config, this checks the developer's version
+dnl of pkg.m4 when generating configure.
+dnl
+dnl To ensure that this macro is defined, also add:
+dnl m4_ifndef([PKG_PREREQ],
+dnl     [m4_fatal([must install pkg-config 0.29 or later before running autoconf/autogen])])
+dnl
+dnl See the "Since" comment for each macro you use to see what version
+dnl of the macros you require.
+m4_defun([PKG_PREREQ],
+[m4_define([PKG_MACROS_VERSION], [0.29])
+m4_if(m4_version_compare(PKG_MACROS_VERSION, [$1]), -1,
+    [m4_fatal([pkg.m4 version $1 or higher is required but ]PKG_MACROS_VERSION[ found])])
+])dnl PKG_PREREQ
+
+dnl PKG_PROG_PKG_CONFIG([MIN-VERSION])
+dnl ----------------------------------
+dnl Since: 0.16
+dnl
+dnl Search for the pkg-config tool and set the PKG_CONFIG variable to
+dnl first found in the path. Checks that the version of pkg-config found
+dnl is at least MIN-VERSION. If MIN-VERSION is not specified, 0.9.0 is
+dnl used since that's the first version where most current features of
+dnl pkg-config existed.
+AC_DEFUN([PKG_PROG_PKG_CONFIG],
+[m4_pattern_forbid([^_?PKG_[A-Z_]+$])
+m4_pattern_allow([^PKG_CONFIG(_(PATH|LIBDIR|SYSROOT_DIR|ALLOW_SYSTEM_(CFLAGS|LIBS)))?$])
+m4_pattern_allow([^PKG_CONFIG_(DISABLE_UNINSTALLED|TOP_BUILD_DIR|DEBUG_SPEW)$])
+AC_ARG_VAR([PKG_CONFIG], [path to pkg-config utility])
+AC_ARG_VAR([PKG_CONFIG_PATH], [directories to add to pkg-config's search path])
+AC_ARG_VAR([PKG_CONFIG_LIBDIR], [path overriding pkg-config's built-in search path])
+
+if test "x$ac_cv_env_PKG_CONFIG_set" != "xset"; then
+       AC_PATH_TOOL([PKG_CONFIG], [pkg-config])
+fi
+if test -n "$PKG_CONFIG"; then
+       _pkg_min_version=m4_default([$1], [0.9.0])
+       AC_MSG_CHECKING([pkg-config is at least version $_pkg_min_version])
+       if $PKG_CONFIG --atleast-pkgconfig-version $_pkg_min_version; then
+               AC_MSG_RESULT([yes])
+       else
+               AC_MSG_RESULT([no])
+               PKG_CONFIG=""
+       fi
+fi[]dnl
+])dnl PKG_PROG_PKG_CONFIG
+
+dnl PKG_CHECK_EXISTS(MODULES, [ACTION-IF-FOUND], [ACTION-IF-NOT-FOUND])
+dnl -------------------------------------------------------------------
+dnl Since: 0.18
+dnl
+dnl Check to see whether a particular set of modules exists. Similar to
+dnl PKG_CHECK_MODULES(), but does not set variables or print errors.
+dnl
+dnl Please remember that m4 expands AC_REQUIRE([PKG_PROG_PKG_CONFIG])
+dnl only at the first occurence in configure.ac, so if the first place
+dnl it's called might be skipped (such as if it is within an "if", you
+dnl have to call PKG_CHECK_EXISTS manually
+AC_DEFUN([PKG_CHECK_EXISTS],
+[AC_REQUIRE([PKG_PROG_PKG_CONFIG])dnl
+if test -n "$PKG_CONFIG" && \
+    AC_RUN_LOG([$PKG_CONFIG --exists --print-errors "$1"]); then
+  m4_default([$2], [:])
+m4_ifvaln([$3], [else
+  $3])dnl
+fi])
+
+dnl _PKG_CONFIG([VARIABLE], [COMMAND], [MODULES])
+dnl ---------------------------------------------
+dnl Internal wrapper calling pkg-config via PKG_CONFIG and setting
+dnl pkg_failed based on the result.
+m4_define([_PKG_CONFIG],
+[if test -n "$$1"; then
+    pkg_cv_[]$1="$$1"
+ elif test -n "$PKG_CONFIG"; then
+    PKG_CHECK_EXISTS([$3],
+                     [pkg_cv_[]$1=`$PKG_CONFIG --[]$2 "$3" 2>/dev/null`
+                     test "x$?" != "x0" && pkg_failed=yes ],
+                    [pkg_failed=yes])
+ else
+    pkg_failed=untried
+fi[]dnl
+])dnl _PKG_CONFIG
+
+dnl _PKG_SHORT_ERRORS_SUPPORTED
+dnl ---------------------------
+dnl Internal check to see if pkg-config supports short errors.
+AC_DEFUN([_PKG_SHORT_ERRORS_SUPPORTED],
+[AC_REQUIRE([PKG_PROG_PKG_CONFIG])
+if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then
+        _pkg_short_errors_supported=yes
+else
+        _pkg_short_errors_supported=no
+fi[]dnl
+])dnl _PKG_SHORT_ERRORS_SUPPORTED
+
+
+dnl PKG_CHECK_MODULES(VARIABLE-PREFIX, MODULES, [ACTION-IF-FOUND],
+dnl   [ACTION-IF-NOT-FOUND])
+dnl --------------------------------------------------------------
+dnl Since: 0.4.0
+dnl
+dnl Note that if there is a possibility the first call to
+dnl PKG_CHECK_MODULES might not happen, you should be sure to include an
+dnl explicit call to PKG_PROG_PKG_CONFIG in your configure.ac
+AC_DEFUN([PKG_CHECK_MODULES],
+[AC_REQUIRE([PKG_PROG_PKG_CONFIG])dnl
+AC_ARG_VAR([$1][_CFLAGS], [C compiler flags for $1, overriding pkg-config])dnl
+AC_ARG_VAR([$1][_LIBS], [linker flags for $1, overriding pkg-config])dnl
+
+pkg_failed=no
+AC_MSG_CHECKING([for $1])
+
+_PKG_CONFIG([$1][_CFLAGS], [cflags], [$2])
+_PKG_CONFIG([$1][_LIBS], [libs], [$2])
+
+m4_define([_PKG_TEXT], [Alternatively, you may set the environment variables $1[]_CFLAGS
+and $1[]_LIBS to avoid the need to call pkg-config.
+See the pkg-config man page for more details.])
+
+if test $pkg_failed = yes; then
+       AC_MSG_RESULT([no])
+        _PKG_SHORT_ERRORS_SUPPORTED
+        if test $_pkg_short_errors_supported = yes; then
+               $1[]_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors --cflags --libs "$2" 2>&1`
+        else 
+               $1[]_PKG_ERRORS=`$PKG_CONFIG --print-errors --cflags --libs "$2" 2>&1`
+        fi
+       # Put the nasty error message in config.log where it belongs
+       echo "$$1[]_PKG_ERRORS" >&AS_MESSAGE_LOG_FD
+
+       m4_default([$4], [AC_MSG_ERROR(
+[Package requirements ($2) were not met:
+
+$$1_PKG_ERRORS
+
+Consider adjusting the PKG_CONFIG_PATH environment variable if you
+installed software in a non-standard prefix.
+
+_PKG_TEXT])[]dnl
+        ])
+elif test $pkg_failed = untried; then
+       AC_MSG_RESULT([no])
+       m4_default([$4], [AC_MSG_FAILURE(
+[The pkg-config script could not be found or is too old.  Make sure it
+is in your PATH or set the PKG_CONFIG environment variable to the full
+path to pkg-config.
+
+_PKG_TEXT
+
+To get pkg-config, see <http://pkg-config.freedesktop.org/>.])[]dnl
+        ])
+else
+       $1[]_CFLAGS=$pkg_cv_[]$1[]_CFLAGS
+       $1[]_LIBS=$pkg_cv_[]$1[]_LIBS
+        AC_MSG_RESULT([yes])
+       $3
+fi[]dnl
+])dnl PKG_CHECK_MODULES
+
+
+dnl PKG_CHECK_MODULES_STATIC(VARIABLE-PREFIX, MODULES, [ACTION-IF-FOUND],
+dnl   [ACTION-IF-NOT-FOUND])
+dnl ---------------------------------------------------------------------
+dnl Since: 0.29
+dnl
+dnl Checks for existence of MODULES and gathers its build flags with
+dnl static libraries enabled. Sets VARIABLE-PREFIX_CFLAGS from --cflags
+dnl and VARIABLE-PREFIX_LIBS from --libs.
+dnl
+dnl Note that if there is a possibility the first call to
+dnl PKG_CHECK_MODULES_STATIC might not happen, you should be sure to
+dnl include an explicit call to PKG_PROG_PKG_CONFIG in your
+dnl configure.ac.
+AC_DEFUN([PKG_CHECK_MODULES_STATIC],
+[AC_REQUIRE([PKG_PROG_PKG_CONFIG])dnl
+_save_PKG_CONFIG=$PKG_CONFIG
+PKG_CONFIG="$PKG_CONFIG --static"
+PKG_CHECK_MODULES($@)
+PKG_CONFIG=$_save_PKG_CONFIG[]dnl
+])dnl PKG_CHECK_MODULES_STATIC
+
+
+dnl PKG_INSTALLDIR([DIRECTORY])
+dnl -------------------------
+dnl Since: 0.27
+dnl
+dnl Substitutes the variable pkgconfigdir as the location where a module
+dnl should install pkg-config .pc files. By default the directory is
+dnl $libdir/pkgconfig, but the default can be changed by passing
+dnl DIRECTORY. The user can override through the --with-pkgconfigdir
+dnl parameter.
+AC_DEFUN([PKG_INSTALLDIR],
+[m4_pushdef([pkg_default], [m4_default([$1], ['${libdir}/pkgconfig'])])
+m4_pushdef([pkg_description],
+    [pkg-config installation directory @<:@]pkg_default[@:>@])
+AC_ARG_WITH([pkgconfigdir],
+    [AS_HELP_STRING([--with-pkgconfigdir], pkg_description)],,
+    [with_pkgconfigdir=]pkg_default)
+AC_SUBST([pkgconfigdir], [$with_pkgconfigdir])
+m4_popdef([pkg_default])
+m4_popdef([pkg_description])
+])dnl PKG_INSTALLDIR
+
+
+dnl PKG_NOARCH_INSTALLDIR([DIRECTORY])
+dnl --------------------------------
+dnl Since: 0.27
+dnl
+dnl Substitutes the variable noarch_pkgconfigdir as the location where a
+dnl module should install arch-independent pkg-config .pc files. By
+dnl default the directory is $datadir/pkgconfig, but the default can be
+dnl changed by passing DIRECTORY. The user can override through the
+dnl --with-noarch-pkgconfigdir parameter.
+AC_DEFUN([PKG_NOARCH_INSTALLDIR],
+[m4_pushdef([pkg_default], [m4_default([$1], ['${datadir}/pkgconfig'])])
+m4_pushdef([pkg_description],
+    [pkg-config arch-independent installation directory @<:@]pkg_default[@:>@])
+AC_ARG_WITH([noarch-pkgconfigdir],
+    [AS_HELP_STRING([--with-noarch-pkgconfigdir], pkg_description)],,
+    [with_noarch_pkgconfigdir=]pkg_default)
+AC_SUBST([noarch_pkgconfigdir], [$with_noarch_pkgconfigdir])
+m4_popdef([pkg_default])
+m4_popdef([pkg_description])
+])dnl PKG_NOARCH_INSTALLDIR
+
+
+dnl PKG_CHECK_VAR(VARIABLE, MODULE, CONFIG-VARIABLE,
+dnl [ACTION-IF-FOUND], [ACTION-IF-NOT-FOUND])
+dnl -------------------------------------------
+dnl Since: 0.28
+dnl
+dnl Retrieves the value of the pkg-config variable for the given module.
+AC_DEFUN([PKG_CHECK_VAR],
+[AC_REQUIRE([PKG_PROG_PKG_CONFIG])dnl
+AC_ARG_VAR([$1], [value of $3 for $2, overriding pkg-config])dnl
+
+_PKG_CONFIG([$1], [variable="][$3]["], [$2])
+AS_VAR_COPY([$1], [pkg_cv_][$1])
+
+AS_VAR_IF([$1], [""], [$5], [$4])dnl
+])dnl PKG_CHECK_VAR
+
 # Copyright (C) 2002-2014 Free Software Foundation, Inc.
 #
 # This file is free software; the Free Software Foundation
index 8f7d8c0..682eadc 100644 (file)
@@ -3,9 +3,6 @@
 /* Define to 1 if you have the <ansidecl.h> header file. */
 #undef HAVE_ANSIDECL_H
 
-/* Define to 1 if you have the `asctime' function. */
-#undef HAVE_ASCTIME
-
 /* Define to 1 if you have the `clock_gettime' function. */
 #undef HAVE_CLOCK_GETTIME
 
@@ -69,9 +66,6 @@
 /* Define to 1 if you have the <memory.h> header file. */
 #undef HAVE_MEMORY_H
 
-/* Define to 1 if you have the `mktime' function. */
-#undef HAVE_MKTIME
-
 /* Define to 1 if you have the <nan.h> header file. */
 #undef HAVE_NAN_H
 
index c190661..dd73601 100755 (executable)
--- a/configure
+++ b/configure
@@ -645,8 +645,6 @@ XSLT_LIBDIR
 PYTHON_SITE_PACKAGES
 PYTHON_INCLUDES
 PYTHON_VERSION
-LIBXML_CFLAGS
-LIBXML_LIBS
 PYTHONSODV
 XSLTPROCDV
 WIN32_EXTRA_LDFLAGS
@@ -657,6 +655,8 @@ WITH_MODULES_TRUE
 WITH_MODULES
 XML_CONFIG
 LIBXML_REQUIRED_VERSION
+LIBXML_LIBS
+LIBXML_CFLAGS
 LIBXML_SRC
 WITH_DEBUGGER
 WITH_MEM_DEBUG
@@ -703,6 +703,9 @@ LIBTOOL
 OBJDUMP
 DLLTOOL
 AS
+PKG_CONFIG_LIBDIR
+PKG_CONFIG_PATH
+PKG_CONFIG
 XSLTPROC
 XMLLINT
 TAR
@@ -852,7 +855,12 @@ LDFLAGS
 LIBS
 CPPFLAGS
 CPP
-LT_SYS_LIBRARY_PATH'
+PKG_CONFIG
+PKG_CONFIG_PATH
+PKG_CONFIG_LIBDIR
+LT_SYS_LIBRARY_PATH
+LIBXML_CFLAGS
+LIBXML_LIBS'
 
 
 # Initialize some variables set by options.
@@ -1516,8 +1524,16 @@ Some influential environment variables:
   CPPFLAGS    (Objective) C/C++ preprocessor flags, e.g. -I<include dir> if
               you have headers in a nonstandard directory <include dir>
   CPP         C preprocessor
+  PKG_CONFIG  path to pkg-config utility
+  PKG_CONFIG_PATH
+              directories to add to pkg-config's search path
+  PKG_CONFIG_LIBDIR
+              path overriding pkg-config's built-in search path
   LT_SYS_LIBRARY_PATH
               User-defined run-time library search path.
+  LIBXML_CFLAGS
+              C compiler flags for LIBXML, overriding pkg-config
+  LIBXML_LIBS linker flags for LIBXML, overriding pkg-config
 
 Use these variables to override the choices made by `configure' or to help
 it to find libraries and programs with nonstandard names/locations.
@@ -3713,11 +3729,11 @@ $as_echo "$ac_cv_safe_to_define___extensions__" >&6; }
 
 LIBXSLT_MAJOR_VERSION=1
 LIBXSLT_MINOR_VERSION=1
-LIBXSLT_MICRO_VERSION=29
+LIBXSLT_MICRO_VERSION=30
 PACKAGE=libxslt
 LIBEXSLT_MAJOR_VERSION=0
 LIBEXSLT_MINOR_VERSION=8
-LIBEXSLT_MICRO_VERSION=17
+LIBEXSLT_MICRO_VERSION=18
 LIBXML_REQUIRED_VERSION=2.6.27
 
 
@@ -5559,6 +5575,126 @@ fi
 
 
 
+
+
+
+
+
+
+if test "x$ac_cv_env_PKG_CONFIG_set" != "xset"; then
+       if test -n "$ac_tool_prefix"; then
+  # Extract the first word of "${ac_tool_prefix}pkg-config", so it can be a program name with args.
+set dummy ${ac_tool_prefix}pkg-config; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_path_PKG_CONFIG+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  case $PKG_CONFIG in
+  [\\/]* | ?:[\\/]*)
+  ac_cv_path_PKG_CONFIG="$PKG_CONFIG" # Let the user override the test with a path.
+  ;;
+  *)
+  as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+    ac_cv_path_PKG_CONFIG="$as_dir/$ac_word$ac_exec_ext"
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+  done
+IFS=$as_save_IFS
+
+  ;;
+esac
+fi
+PKG_CONFIG=$ac_cv_path_PKG_CONFIG
+if test -n "$PKG_CONFIG"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $PKG_CONFIG" >&5
+$as_echo "$PKG_CONFIG" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+fi
+if test -z "$ac_cv_path_PKG_CONFIG"; then
+  ac_pt_PKG_CONFIG=$PKG_CONFIG
+  # Extract the first word of "pkg-config", so it can be a program name with args.
+set dummy pkg-config; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_path_ac_pt_PKG_CONFIG+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  case $ac_pt_PKG_CONFIG in
+  [\\/]* | ?:[\\/]*)
+  ac_cv_path_ac_pt_PKG_CONFIG="$ac_pt_PKG_CONFIG" # Let the user override the test with a path.
+  ;;
+  *)
+  as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+    ac_cv_path_ac_pt_PKG_CONFIG="$as_dir/$ac_word$ac_exec_ext"
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+  done
+IFS=$as_save_IFS
+
+  ;;
+esac
+fi
+ac_pt_PKG_CONFIG=$ac_cv_path_ac_pt_PKG_CONFIG
+if test -n "$ac_pt_PKG_CONFIG"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_pt_PKG_CONFIG" >&5
+$as_echo "$ac_pt_PKG_CONFIG" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+  if test "x$ac_pt_PKG_CONFIG" = x; then
+    PKG_CONFIG=""
+  else
+    case $cross_compiling:$ac_tool_warned in
+yes:)
+{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
+$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
+ac_tool_warned=yes ;;
+esac
+    PKG_CONFIG=$ac_pt_PKG_CONFIG
+  fi
+else
+  PKG_CONFIG="$ac_cv_path_PKG_CONFIG"
+fi
+
+fi
+if test -n "$PKG_CONFIG"; then
+       _pkg_min_version=0.9.0
+       { $as_echo "$as_me:${as_lineno-$LINENO}: checking pkg-config is at least version $_pkg_min_version" >&5
+$as_echo_n "checking pkg-config is at least version $_pkg_min_version... " >&6; }
+       if $PKG_CONFIG --atleast-pkgconfig-version $_pkg_min_version; then
+               { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+$as_echo "yes" >&6; }
+       else
+               { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+               PKG_CONFIG=""
+       fi
+fi
+
 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for ANSI C header files" >&5
 $as_echo_n "checking for ANSI C header files... " >&6; }
 if ${ac_cv_header_stdc+:} false; then :
@@ -13968,7 +14104,7 @@ _ACEOF
 fi
 done
 
-for ac_func in mktime localtime localtime_r asctime time gmtime gmtime_r ftime
+for ac_func in localtime localtime_r time gmtime gmtime_r ftime
 do :
   as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh`
 ac_fn_c_check_func "$LINENO" "$ac_func" "$as_ac_var"
 
 
 
+if test "x$LIBXML_CONFIG_PREFIX" == "x" -a "x$LIBXML_SRC" == "x"
+then
+
+pkg_failed=no
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for LIBXML" >&5
+$as_echo_n "checking for LIBXML... " >&6; }
+
+if test -n "$LIBXML_CFLAGS"; then
+    pkg_cv_LIBXML_CFLAGS="$LIBXML_CFLAGS"
+ elif test -n "$PKG_CONFIG"; then
+    if test -n "$PKG_CONFIG" && \
+    { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"libxml-2.0 >= \$LIBXML_REQUIRED_VERSION\""; } >&5
+  ($PKG_CONFIG --exists --print-errors "libxml-2.0 >= $LIBXML_REQUIRED_VERSION") 2>&5
+  ac_status=$?
+  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  test $ac_status = 0; }; then
+  pkg_cv_LIBXML_CFLAGS=`$PKG_CONFIG --cflags "libxml-2.0 >= $LIBXML_REQUIRED_VERSION" 2>/dev/null`
+                     test "x$?" != "x0" && pkg_failed=yes
+else
+  pkg_failed=yes
+fi
+ else
+    pkg_failed=untried
+fi
+if test -n "$LIBXML_LIBS"; then
+    pkg_cv_LIBXML_LIBS="$LIBXML_LIBS"
+ elif test -n "$PKG_CONFIG"; then
+    if test -n "$PKG_CONFIG" && \
+    { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"libxml-2.0 >= \$LIBXML_REQUIRED_VERSION\""; } >&5
+  ($PKG_CONFIG --exists --print-errors "libxml-2.0 >= $LIBXML_REQUIRED_VERSION") 2>&5
+  ac_status=$?
+  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  test $ac_status = 0; }; then
+  pkg_cv_LIBXML_LIBS=`$PKG_CONFIG --libs "libxml-2.0 >= $LIBXML_REQUIRED_VERSION" 2>/dev/null`
+                     test "x$?" != "x0" && pkg_failed=yes
+else
+  pkg_failed=yes
+fi
+ else
+    pkg_failed=untried
+fi
+
+
+
+if test $pkg_failed = yes; then
+       { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+
+if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then
+        _pkg_short_errors_supported=yes
+else
+        _pkg_short_errors_supported=no
+fi
+        if test $_pkg_short_errors_supported = yes; then
+               LIBXML_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors --cflags --libs "libxml-2.0 >= $LIBXML_REQUIRED_VERSION" 2>&1`
+        else
+               LIBXML_PKG_ERRORS=`$PKG_CONFIG --print-errors --cflags --libs "libxml-2.0 >= $LIBXML_REQUIRED_VERSION" 2>&1`
+        fi
+       # Put the nasty error message in config.log where it belongs
+       echo "$LIBXML_PKG_ERRORS" >&5
+
+
+               LIBXML_MANUAL_SEARCH=yes
+
+elif test $pkg_failed = untried; then
+       { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+
+               LIBXML_MANUAL_SEARCH=yes
+
+else
+       LIBXML_CFLAGS=$pkg_cv_LIBXML_CFLAGS
+       LIBXML_LIBS=$pkg_cv_LIBXML_LIBS
+        { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+$as_echo "yes" >&6; }
+
+               LIBXML_MANUAL_SEARCH=no
+               WITH_MODULES="`$PKG_CONFIG --variable=modules libxml-2.0`"
+
+fi
+else
+       LIBXML_MANUAL_SEARCH=yes
+fi
+
+if test "x$LIBXML_MANUAL_SEARCH" != "xno"
+then
+
+
 
 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for libxml libraries >= $LIBXML_REQUIRED_VERSION" >&5
 $as_echo_n "checking for libxml libraries >= $LIBXML_REQUIRED_VERSION... " >&6; }
@@ -14722,10 +14946,10 @@ then
        CWD=`pwd`
        if cd $LIBXML_SRC
        then
-               SRC_DIR=`pwd`
-               XML_CONFIG=${SRC_DIR}/xml2-config
-               LIBXML_CFLAGS="-I${SRC_DIR}/include"
-               LIBXML_LIBS="-L${SRC_DIR}"
+               LIBXML_SRC=`pwd`
+               XML_CONFIG="${LIBXML_SRC}/xml2-config"
+               LIBXML_CFLAGS="-I${LIBXML_SRC}/include"
+               LIBXML_LIBS="-L${LIBXML_SRC}"
                cd $CWD
        else
                as_fn_error $? "libxml source dir not found (${LIBXML_SRC}), typo?" "$LINENO" 5
@@ -14751,6 +14975,10 @@ else
        as_fn_error $? "Could not find libxml2 anywhere, check ftp://xmlsoft.org/." "$LINENO" 5
 fi
 
+WITH_MODULES="`$XML_CONFIG --modules`"
+
+fi  # LIBXML_MANUAL_SEARCH
+
 
 
 
@@ -14785,7 +15013,6 @@ fi
 if test "$with_plugins" = "yes" ; then
   { $as_echo "$as_me:${as_lineno-$LINENO}: checking libxml2 module support" >&5
 $as_echo_n "checking libxml2 module support... " >&6; }
-  WITH_MODULES="`$XML_CONFIG --modules`"
   if test "${WITH_MODULES}" = "1"; then
     { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
 $as_echo "yes" >&6; }
index 8bdf45a..d6aa366 100644 (file)
@@ -11,11 +11,11 @@ dnl libexslt is an extension
 dnl
 LIBXSLT_MAJOR_VERSION=1
 LIBXSLT_MINOR_VERSION=1
-LIBXSLT_MICRO_VERSION=29
+LIBXSLT_MICRO_VERSION=30
 PACKAGE=libxslt
 LIBEXSLT_MAJOR_VERSION=0
 LIBEXSLT_MINOR_VERSION=8
-LIBEXSLT_MICRO_VERSION=17
+LIBEXSLT_MICRO_VERSION=18
 LIBXML_REQUIRED_VERSION=2.6.27
 
 
@@ -118,6 +118,7 @@ AC_PATH_PROG(MV, mv, /bin/mv)
 AC_PATH_PROG(TAR, tar, /bin/tar)
 AC_PATH_PROG(XMLLINT, xmllint, /usr/bin/xmllint)
 AC_PATH_PROG(XSLTPROC, xsltproc, /usr/bin/xsltproc)
+PKG_PROG_PKG_CONFIG
 
 AC_HEADER_STDC
 
@@ -248,7 +249,7 @@ AC_CHECK_FUNC(fabs, , AC_CHECK_LIB(m, fabs,
 
 
 AC_CHECK_FUNCS(gettimeofday)
-AC_CHECK_FUNCS(mktime localtime localtime_r asctime time gmtime gmtime_r ftime)
+AC_CHECK_FUNCS(localtime localtime_r time gmtime gmtime_r ftime)
 
 dnl Checking the standard string functions availability
 AC_CHECK_FUNCS(printf sprintf fprintf snprintf vfprintf vsprintf vsnprintf sscanf,,
@@ -501,6 +502,26 @@ AC_ARG_WITH(libxml-src,
 AC_SUBST(LIBXML_SRC)
 
 dnl
+dnl Try pkg-config first if nothing is set
+dnl
+
+if test "x$LIBXML_CONFIG_PREFIX" == "x" -a "x$LIBXML_SRC" == "x"
+then
+       PKG_CHECK_MODULES([LIBXML], [libxml-2.0 >= $LIBXML_REQUIRED_VERSION], [
+               LIBXML_MANUAL_SEARCH=no
+               WITH_MODULES="`$PKG_CONFIG --variable=modules libxml-2.0`"
+       ],
+       [
+               LIBXML_MANUAL_SEARCH=yes
+       ])
+else
+       LIBXML_MANUAL_SEARCH=yes
+fi
+
+if test "x$LIBXML_MANUAL_SEARCH" != "xno"
+then
+
+dnl
 dnl where is xml2-config
 dnl
 
@@ -546,10 +567,10 @@ then
        CWD=`pwd`
        if cd $LIBXML_SRC
        then
-               SRC_DIR=`pwd`
-               XML_CONFIG=${SRC_DIR}/xml2-config
-               LIBXML_CFLAGS="-I${SRC_DIR}/include"
-               LIBXML_LIBS="-L${SRC_DIR}"
+               LIBXML_SRC=`pwd`
+               XML_CONFIG="${LIBXML_SRC}/xml2-config"
+               LIBXML_CFLAGS="-I${LIBXML_SRC}/include"
+               LIBXML_LIBS="-L${LIBXML_SRC}"
                cd $CWD
        else
                AC_MSG_ERROR([libxml source dir not found (${LIBXML_SRC}), typo?])
@@ -578,6 +599,10 @@ else
        AC_MSG_ERROR([Could not find libxml2 anywhere, check ftp://xmlsoft.org/.])
 fi
 
+WITH_MODULES="`$XML_CONFIG --modules`"
+
+fi  # LIBXML_MANUAL_SEARCH
+
 
 AC_SUBST(CFLAGS)
 AC_SUBST(CPPFLAGS)
@@ -602,7 +627,6 @@ fi
 
 if test "$with_plugins" = "yes" ; then
   AC_MSG_CHECKING([libxml2 module support])
-  WITH_MODULES="`$XML_CONFIG --modules`"
   if test "${WITH_MODULES}" = "1"; then
     AC_MSG_RESULT(yes)
   else
index 7d21d79..99ded6c 100644 (file)
@@ -9,8 +9,8 @@ H3 {font-family: Verdana,Arial,Helvetica}
 A:link, A:visited, A:active { text-decoration: underline }
     </style><title>API Alphabetic Index A-I for libxslt</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/XSLT/"><img src="Libxslt-Logo-180x168.gif" alt="Made with Libxslt 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 XSLT C library for GNOME</h1><h2>API Alphabetic Index A-I for libxslt</h2></td></tr></table></td></tr></table></td></tr></table><table border="0" cellpadding="4" cellspacing="0" width="100%" align="center"><tr><td bgcolor="#8b7765"><table border="0" cellspacing="0" cellpadding="2" width="100%"><tr><td valign="top" width="200" bgcolor="#8b7765"><table border="0" cellspacing="0" cellpadding="1" width="100%" bgcolor="#000000"><tr><td><table width="100%" border="0" cellspacing="1" cellpadding="3"><tr><td colspan="1" bgcolor="#eecfa1" align="center"><center><b>Main Menu</b></center></td></tr><tr><td bgcolor="#fffacd"><form action="search.php" enctype="application/x-www-form-urlencoded" method="get"><input name="query" type="text" size="20" value="" /><input name="submit" type="submit" value="Search ..." /></form><ul><li><a href="index.html">Home</a></li><li><a href="intro.html">Introduction</a></li><li><a href="docs.html">Documentation</a></li><li><a href="bugs.html">Reporting bugs and getting help</a></li><li><a href="help.html">How to help</a></li><li><a href="downloads.html">Downloads</a></li><li><a href="FAQ.html">FAQ</a></li><li><a href="news.html">News</a></li><li><a href="xsltproc2.html">The xsltproc tool</a></li><li><a href="docbook.html">DocBook</a></li><li><a href="API.html">The programming API</a></li><li><a href="python.html">Python and bindings</a></li><li><a href="internals.html">Library internals</a></li><li><a href="extensions.html">Writing extensions</a></li><li><a href="contribs.html">Contributions</a></li><li><a href="EXSLT/index.html" style="font-weight:bold">libexslt</a></li><li><a href="xslt.html">flat page</a>, <a href="site.xsl">stylesheet</a></li><li><a href="html/index.html" style="font-weight:bold">API Menu</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>Related links</b></center></td></tr><tr><td bgcolor="#fffacd"><ul><li><a href="tutorial/libxslttutorial.html">Tutorial</a>,
           <a href="tutorial2/libxslt_pipes.html">Tutorial2</a></li><li><a href="xsltproc.html">Man page for xsltproc</a></li><li><a href="http://mail.gnome.org/archives/xslt/">Mail archive</a></li><li><a href="http://xmlsoft.org/">XML libxml2</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://garypennington.net/libxml2/">Solaris binaries</a></li><li><a href="http://www.explain.com.au/oss/libxml2xslt.html">MacOsX binaries</a></li><li><a href="http://bugzilla.gnome.org/buglist.cgi?product=libxslt">Bug Tracker</a></li><li><a href="http://codespeak.net/lxml/">lxml Python bindings</a></li><li><a href="http://cpan.uwinnipeg.ca/dist/XML-LibXSLT">Perl XSLT bindings</a></li><li><a href="http://www.zend.com/php5/articles/php5-xmlphp.php#Heading17">XSLT with PHP</a></li><li><a href="http://www.mod-xslt2.com/">Apache module</a></li><li><a href="http://sourceforge.net/projects/libxml2-pas/">Pascal bindings</a></li><li><a href="http://xsldbg.sourceforge.net/">Xsldbg Debugger</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></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 align="center"><a href="APIchunk0.html">A-I</a>
-<a href="APIchunk1.html">J-S</a>
-<a href="APIchunk2.html">T-a</a>
+<a href="APIchunk1.html">J-R</a>
+<a href="APIchunk2.html">S-a</a>
 <a href="APIchunk3.html">b-c</a>
 <a href="APIchunk4.html">d-e</a>
 <a href="APIchunk5.html">f-g</a>
@@ -155,6 +155,7 @@ A:link, A:visited, A:active { text-decoration: underline }
 </dd><dt>Fields</dt><dd><a href="html/libxslt-xsltInternals.html#XSLT_ITEM_COMPATIBILITY_FIELDS">XSLT_ITEM_COMPATIBILITY_FIELDS</a><br />
 </dd><dt>Finalizes</dt><dd><a href="html/libxslt-xsltInternals.html#xsltExtensionInstructionResultFinalize">xsltExtensionInstructionResultFinalize</a><br />
 </dd><dt>Find</dt><dd><a href="html/libxslt-xsltInternals.html#xsltDecimalFormatGetByName">xsltDecimalFormatGetByName</a><br />
+<a href="html/libxslt-xsltInternals.html#xsltDecimalFormatGetByQName">xsltDecimalFormatGetByQName</a><br />
 <a href="html/libxslt-imports.html#xsltFindElemSpaceHandling">xsltFindElemSpaceHandling</a><br />
 <a href="html/libxslt-namespaces.html#xsltGetNamespace">xsltGetNamespace</a><br />
 <a href="html/libxslt-namespaces.html#xsltGetSpecialNamespace">xsltGetSpecialNamespace</a><br />
@@ -235,8 +236,8 @@ A:link, A:visited, A:active { text-decoration: underline }
 <a href="html/libxslt-xsltInternals.html#XSLT_REFACTORED_XPATHCOMP">XSLT_REFACTORED_XPATHCOMP</a><br />
 <a href="html/libxslt-xsltInternals.html#xsltFreeRVTs">xsltFreeRVTs</a><br />
 </dd></dl><h2 align="center"><a href="APIchunk0.html">A-I</a>
-<a href="APIchunk1.html">J-S</a>
-<a href="APIchunk2.html">T-a</a>
+<a href="APIchunk1.html">J-R</a>
+<a href="APIchunk2.html">S-a</a>
 <a href="APIchunk3.html">b-c</a>
 <a href="APIchunk4.html">d-e</a>
 <a href="APIchunk5.html">f-g</a>
index cbe3138..acd1a69 100644 (file)
@@ -7,10 +7,10 @@ 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>API Alphabetic Index J-S for libxslt</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/XSLT/"><img src="Libxslt-Logo-180x168.gif" alt="Made with Libxslt 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 XSLT C library for GNOME</h1><h2>API Alphabetic Index J-S for libxslt</h2></td></tr></table></td></tr></table></td></tr></table><table border="0" cellpadding="4" cellspacing="0" width="100%" align="center"><tr><td bgcolor="#8b7765"><table border="0" cellspacing="0" cellpadding="2" width="100%"><tr><td valign="top" width="200" bgcolor="#8b7765"><table border="0" cellspacing="0" cellpadding="1" width="100%" bgcolor="#000000"><tr><td><table width="100%" border="0" cellspacing="1" cellpadding="3"><tr><td colspan="1" bgcolor="#eecfa1" align="center"><center><b>Main Menu</b></center></td></tr><tr><td bgcolor="#fffacd"><form action="search.php" enctype="application/x-www-form-urlencoded" method="get"><input name="query" type="text" size="20" value="" /><input name="submit" type="submit" value="Search ..." /></form><ul><li><a href="index.html">Home</a></li><li><a href="intro.html">Introduction</a></li><li><a href="docs.html">Documentation</a></li><li><a href="bugs.html">Reporting bugs and getting help</a></li><li><a href="help.html">How to help</a></li><li><a href="downloads.html">Downloads</a></li><li><a href="FAQ.html">FAQ</a></li><li><a href="news.html">News</a></li><li><a href="xsltproc2.html">The xsltproc tool</a></li><li><a href="docbook.html">DocBook</a></li><li><a href="API.html">The programming API</a></li><li><a href="python.html">Python and bindings</a></li><li><a href="internals.html">Library internals</a></li><li><a href="extensions.html">Writing extensions</a></li><li><a href="contribs.html">Contributions</a></li><li><a href="EXSLT/index.html" style="font-weight:bold">libexslt</a></li><li><a href="xslt.html">flat page</a>, <a href="site.xsl">stylesheet</a></li><li><a href="html/index.html" style="font-weight:bold">API Menu</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>Related links</b></center></td></tr><tr><td bgcolor="#fffacd"><ul><li><a href="tutorial/libxslttutorial.html">Tutorial</a>,
+    </style><title>API Alphabetic Index J-R for libxslt</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/XSLT/"><img src="Libxslt-Logo-180x168.gif" alt="Made with Libxslt 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 XSLT C library for GNOME</h1><h2>API Alphabetic Index J-R for libxslt</h2></td></tr></table></td></tr></table></td></tr></table><table border="0" cellpadding="4" cellspacing="0" width="100%" align="center"><tr><td bgcolor="#8b7765"><table border="0" cellspacing="0" cellpadding="2" width="100%"><tr><td valign="top" width="200" bgcolor="#8b7765"><table border="0" cellspacing="0" cellpadding="1" width="100%" bgcolor="#000000"><tr><td><table width="100%" border="0" cellspacing="1" cellpadding="3"><tr><td colspan="1" bgcolor="#eecfa1" align="center"><center><b>Main Menu</b></center></td></tr><tr><td bgcolor="#fffacd"><form action="search.php" enctype="application/x-www-form-urlencoded" method="get"><input name="query" type="text" size="20" value="" /><input name="submit" type="submit" value="Search ..." /></form><ul><li><a href="index.html">Home</a></li><li><a href="intro.html">Introduction</a></li><li><a href="docs.html">Documentation</a></li><li><a href="bugs.html">Reporting bugs and getting help</a></li><li><a href="help.html">How to help</a></li><li><a href="downloads.html">Downloads</a></li><li><a href="FAQ.html">FAQ</a></li><li><a href="news.html">News</a></li><li><a href="xsltproc2.html">The xsltproc tool</a></li><li><a href="docbook.html">DocBook</a></li><li><a href="API.html">The programming API</a></li><li><a href="python.html">Python and bindings</a></li><li><a href="internals.html">Library internals</a></li><li><a href="extensions.html">Writing extensions</a></li><li><a href="contribs.html">Contributions</a></li><li><a href="EXSLT/index.html" style="font-weight:bold">libexslt</a></li><li><a href="xslt.html">flat page</a>, <a href="site.xsl">stylesheet</a></li><li><a href="html/index.html" style="font-weight:bold">API Menu</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>Related links</b></center></td></tr><tr><td bgcolor="#fffacd"><ul><li><a href="tutorial/libxslttutorial.html">Tutorial</a>,
           <a href="tutorial2/libxslt_pipes.html">Tutorial2</a></li><li><a href="xsltproc.html">Man page for xsltproc</a></li><li><a href="http://mail.gnome.org/archives/xslt/">Mail archive</a></li><li><a href="http://xmlsoft.org/">XML libxml2</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://garypennington.net/libxml2/">Solaris binaries</a></li><li><a href="http://www.explain.com.au/oss/libxml2xslt.html">MacOsX binaries</a></li><li><a href="http://bugzilla.gnome.org/buglist.cgi?product=libxslt">Bug Tracker</a></li><li><a href="http://codespeak.net/lxml/">lxml Python bindings</a></li><li><a href="http://cpan.uwinnipeg.ca/dist/XML-LibXSLT">Perl XSLT bindings</a></li><li><a href="http://www.zend.com/php5/articles/php5-xmlphp.php#Heading17">XSLT with PHP</a></li><li><a href="http://www.mod-xslt2.com/">Apache module</a></li><li><a href="http://sourceforge.net/projects/libxml2-pas/">Pascal bindings</a></li><li><a href="http://xsldbg.sourceforge.net/">Xsldbg Debugger</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></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 align="center"><a href="APIchunk0.html">A-I</a>
-<a href="APIchunk1.html">J-S</a>
-<a href="APIchunk2.html">T-a</a>
+<a href="APIchunk1.html">J-R</a>
+<a href="APIchunk2.html">S-a</a>
 <a href="APIchunk3.html">b-c</a>
 <a href="APIchunk4.html">d-e</a>
 <a href="APIchunk5.html">f-g</a>
@@ -80,7 +80,6 @@ A:link, A:visited, A:active { text-decoration: underline }
 <a href="html/libxslt-xsltInternals.html#_xsltStylesheet">_xsltStylesheet</a><br />
 </dd><dt>Namespaces</dt><dd><a href="html/libxslt-xsltInternals.html#_xsltStylesheet">_xsltStylesheet</a><br />
 </dd><dt>Needed</dt><dd><a href="html/libxslt-xsltInternals.html#_xsltTransformContext">_xsltTransformContext</a><br />
-</dd><dt>Norm</dt><dd><a href="html/libxslt-extra.html#XSLT_NORM_SAXON_NAMESPACE">XSLT_NORM_SAXON_NAMESPACE</a><br />
 </dd><dt>Not</dt><dd><a href="html/libxslt-xsltInternals.html#_xsltStylesheet">_xsltStylesheet</a><br />
 <a href="html/libxslt-namespaces.html#xsltGetPlainNamespace">xsltGetPlainNamespace</a><br />
 <a href="html/libxslt-keys.html#xsltInitCtxtKeys">xsltInitCtxtKeys</a><br />
@@ -92,7 +91,8 @@ A:link, A:visited, A:active { text-decoration: underline }
 </dd><dt>Number</dt><dd><a href="html/libxslt-numbersInternals.html#_xsltFormatNumberInfo">_xsltFormatNumberInfo</a><br />
 <a href="html/libxslt-xsltInternals.html#_xsltStylesheet">_xsltStylesheet</a><br />
 </dd></dl><h2>Letter O:</h2><dl><dt>ONLY</dt><dd><a href="html/libxslt-xsltInternals.html#xsltInitAllDocKeys">xsltInitAllDocKeys</a><br />
-</dd><dt>Obsolete</dt><dd><a href="html/libxslt-namespaces.html#xsltGetPlainNamespace">xsltGetPlainNamespace</a><br />
+</dd><dt>Obsolete</dt><dd><a href="html/libxslt-xsltInternals.html#_xsltTransformContext">_xsltTransformContext</a><br />
+<a href="html/libxslt-namespaces.html#xsltGetPlainNamespace">xsltGetPlainNamespace</a><br />
 <a href="html/libxslt-xsltInternals.html#xsltRegisterTmpRVT">xsltRegisterTmpRVT</a><br />
 <a href="html/libxslt-templates.html#xsltTemplateProcess">xsltTemplateProcess</a><br />
 </dd><dt>One</dt><dd><a href="html/libxslt-xsltutils.html#xsltSetGenericDebugFunc">xsltSetGenericDebugFunc</a><br />
@@ -157,6 +157,7 @@ A:link, A:visited, A:active { text-decoration: underline }
 </dd><dt>Push</dt><dd><a href="html/libxslt-variables.html#xsltAddStackElemList">xsltAddStackElemList</a><br />
 </dd></dl><h2>Letter Q:</h2><dl><dt>QName</dt><dd><a href="html/libxslt-xsltInternals.html#_xsltStackElem">_xsltStackElem</a><br />
 <a href="html/libxslt-xsltInternals.html#_xsltTemplate">_xsltTemplate</a><br />
+<a href="html/libxslt-xsltInternals.html#xsltDecimalFormatGetByQName">xsltDecimalFormatGetByQName</a><br />
 <a href="html/libxslt-templates.html#xsltEvalAttrValueTemplate">xsltEvalAttrValueTemplate</a><br />
 <a href="html/libxslt-xsltutils.html#xsltGetQNameURI">xsltGetQNameURI</a><br />
 <a href="html/libxslt-xsltutils.html#xsltGetQNameURI2">xsltGetQNameURI2</a><br />
@@ -169,10 +170,15 @@ A:link, A:visited, A:active { text-decoration: underline }
 </dd><dt>RFC</dt><dd><a href="html/libxslt-xsltlocale.html#xsltNewLocale">xsltNewLocale</a><br />
 </dd><dt>ROUTINE</dt><dd><a href="html/libxslt-xsltInternals.html#xsltInitAllDocKeys">xsltInitAllDocKeys</a><br />
 </dd><dt>RTF</dt><dd><a href="html/libxslt-xsltInternals.html#_xsltTransformContext">_xsltTransformContext</a><br />
-</dd><dt>RVT</dt><dd><a href="html/libxslt-xsltInternals.html#_xsltTransformContext">_xsltTransformContext</a><br />
+</dd><dt>RVT</dt><dd><a href="html/libxslt-variables.html#XSLT_RVT_FUNC_RESULT">XSLT_RVT_FUNC_RESULT</a><br />
+<a href="html/libxslt-variables.html#XSLT_RVT_GLOBAL">XSLT_RVT_GLOBAL</a><br />
+<a href="html/libxslt-variables.html#XSLT_RVT_LOCAL">XSLT_RVT_LOCAL</a><br />
+<a href="html/libxslt-variables.html#XSLT_RVT_VARIABLE">XSLT_RVT_VARIABLE</a><br />
+<a href="html/libxslt-xsltInternals.html#_xsltTransformContext">_xsltTransformContext</a><br />
 <a href="html/libxslt-xsltInternals.html#xsltRegisterLocalRVT">xsltRegisterLocalRVT</a><br />
 <a href="html/libxslt-xsltInternals.html#xsltReleaseRVT">xsltReleaseRVT</a><br />
 </dd><dt>RVTs</dt><dd><a href="html/libxslt-xsltInternals.html#_xsltTransformContext">_xsltTransformContext</a><br />
+<a href="html/libxslt-xsltInternals.html#xsltFlagRVTs">xsltFlagRVTs</a><br />
 </dd><dt>Read</dt><dd><a href="html/libxslt-xsltutils.html#xsltGetUTF8Char">xsltGetUTF8Char</a><br />
 <a href="html/libxslt-namespaces.html#xsltNamespaceAlias">xsltNamespaceAlias</a><br />
 </dd><dt>Register</dt><dd><a href="html/libxslt-pattern.html#xsltAddTemplate">xsltAddTemplate</a><br />
@@ -217,51 +223,9 @@ A:link, A:visited, A:active { text-decoration: underline }
 <a href="html/libxslt-extensions.html#xsltStyleGetExtData">xsltStyleGetExtData</a><br />
 <a href="html/libxslt-extensions.html#xsltStyleStylesheetLevelGetExtData">xsltStyleStylesheetLevelGetExtData</a><br />
 </dd><dt>Rule</dt><dd><a href="html/libxslt-xsltInternals.html#_xsltTransformContext">_xsltTransformContext</a><br />
-</dd></dl><h2>Letter S:</h2><dl><dt>SAX</dt><dd><a href="html/libxslt-transform.html#xsltRunStylesheet">xsltRunStylesheet</a><br />
-<a href="html/libxslt-transform.html#xsltRunStylesheetUser">xsltRunStylesheetUser</a><br />
-</dd><dt>SAXON</dt><dd><a href="html/libxslt-extra.html#XSLT_NORM_SAXON_NAMESPACE">XSLT_NORM_SAXON_NAMESPACE</a><br />
-</dd><dt>Sampling</dt><dd><a href="html/libxslt-xsltutils.html#XSLT_TIMESTAMP_TICS_PER_SEC">XSLT_TIMESTAMP_TICS_PER_SEC</a><br />
-</dd><dt>Save</dt><dd><a href="html/libxslt-xsltutils.html#xsltSaveProfiling">xsltSaveProfiling</a><br />
-<a href="html/libxslt-xsltutils.html#xsltSaveResultTo">xsltSaveResultTo</a><br />
-<a href="html/libxslt-xsltutils.html#xsltSaveResultToFd">xsltSaveResultToFd</a><br />
-<a href="html/libxslt-xsltutils.html#xsltSaveResultToFile">xsltSaveResultToFile</a><br />
-<a href="html/libxslt-xsltutils.html#xsltSaveResultToFilename">xsltSaveResultToFilename</a><br />
-<a href="html/libxslt-xsltutils.html#xsltSaveResultToString">xsltSaveResultToString</a><br />
-</dd><dt>Saxon</dt><dd><a href="html/libxslt-extra.html#XSLT_SAXON_NAMESPACE">XSLT_SAXON_NAMESPACE</a><br />
-</dd><dt>Scaling</dt><dd><a href="html/libxslt-numbersInternals.html#_xsltFormatNumberInfo">_xsltFormatNumberInfo</a><br />
-</dd><dt>Search</dt><dd><a href="html/libxslt-xsltutils.html#xsltGetCNsProp">xsltGetCNsProp</a><br />
-<a href="html/libxslt-xsltutils.html#xsltGetNsProp">xsltGetNsProp</a><br />
-<a href="html/libxslt-variables.html#xsltVariableLookup">xsltVariableLookup</a><br />
-</dd><dt>Set</dt><dd><a href="html/libxslt-xsltInternals.html#_xsltCompilerNodeInfo">_xsltCompilerNodeInfo</a><br />
-<a href="html/libxslt-xsltutils.html#xsltDebugSetDefaultTrace">xsltDebugSetDefaultTrace</a><br />
-<a href="html/libxslt-security.html#xsltSetCtxtSecurityPrefs">xsltSetCtxtSecurityPrefs</a><br />
-<a href="html/libxslt-security.html#xsltSetDefaultSecurityPrefs">xsltSetDefaultSecurityPrefs</a><br />
-<a href="html/libxslt-documents.html#xsltSetLoaderFunc">xsltSetLoaderFunc</a><br />
-<a href="html/libxslt-transform.html#xsltSetXIncludeDefault">xsltSetXIncludeDefault</a><br />
-</dd><dt>Should</dt><dd><a href="html/libxslt-keys.html#xsltInitCtxtKeys">xsltInitCtxtKeys</a><br />
-</dd><dt>Shutdown</dt><dd><a href="html/libxslt-extensions.html#xsltShutdownCtxtExts">xsltShutdownCtxtExts</a><br />
-<a href="html/libxslt-extensions.html#xsltShutdownExts">xsltShutdownExts</a><br />
-</dd><dt>Signature</dt><dd><a href="html/libxslt-xsltInternals.html#xsltSortFunc">xsltSortFunc</a><br />
-<a href="html/libxslt-xsltInternals.html#xsltTransformFunction">xsltTransformFunction</a><br />
-</dd><dt>Similar</dt><dd><a href="html/libxslt-xsltutils.html#xsltGetCNsProp">xsltGetCNsProp</a><br />
-<a href="html/libxslt-xsltutils.html#xsltGetNsProp">xsltGetNsProp</a><br />
-<a href="html/libxslt-variables.html#xsltQuoteUserParams">xsltQuoteUserParams</a><br />
-</dd><dt>Size</dt><dd><a href="html/libxslt-xsltInternals.html#_xsltTemplate">_xsltTemplate</a><br />
-<a href="html/libxslt-xsltInternals.html#_xsltTransformContext">_xsltTransformContext</a><br />
-</dd><dt>Special</dt><dd><a href="html/libxslt-namespaces.html#UNDEFINED_DEFAULT_NS">UNDEFINED_DEFAULT_NS</a><br />
-<a href="html/libxslt-xsltInternals.html#xsltFormatNumberConversion">xsltFormatNumberConversion</a><br />
-</dd><dt>Specific</dt><dd><a href="html/libxslt-xsltInternals.html#XSLT_PAT_NO_PRIORITY">XSLT_PAT_NO_PRIORITY</a><br />
-</dd><dt>Speed</dt><dd><a href="html/libxslt-xsltInternals.html#_xsltTransformContext">_xsltTransformContext</a><br />
-</dd><dt>Split</dt><dd><a href="html/libxslt-xsltutils.html#xsltSplitQName">xsltSplitQName</a><br />
-</dd><dt>Storage</dt><dd><a href="html/libxslt-xsltInternals.html#_xsltCompilerCtxt">_xsltCompilerCtxt</a><br />
-</dd><dt>Strip</dt><dd><a href="html/libxslt-transform.html#xsltApplyStripSpaces">xsltApplyStripSpaces</a><br />
-</dd><dt>Structure:</dt><dd><a href="html/libxslt-xsltInternals.html#xsltFormatNumberConversion">xsltFormatNumberConversion</a><br />
-</dd><dt>Stylesheet</dt><dd><a href="html/libxslt-xsltInternals.html#_xsltStylesheet">_xsltStylesheet</a><br />
-<a href="html/libxslt-xsltInternals.html#xsltNewStylesheet">xsltNewStylesheet</a><br />
-</dd><dt>Symbol</dt><dd><a href="html/libxslt-xsltInternals.html#xsltFormatNumberConversion">xsltFormatNumberConversion</a><br />
 </dd></dl><h2 align="center"><a href="APIchunk0.html">A-I</a>
-<a href="APIchunk1.html">J-S</a>
-<a href="APIchunk2.html">T-a</a>
+<a href="APIchunk1.html">J-R</a>
+<a href="APIchunk2.html">S-a</a>
 <a href="APIchunk3.html">b-c</a>
 <a href="APIchunk4.html">d-e</a>
 <a href="APIchunk5.html">f-g</a>
index 5bae01f..8452357 100644 (file)
@@ -9,8 +9,8 @@ H3 {font-family: Verdana,Arial,Helvetica}
 A:link, A:visited, A:active { text-decoration: underline }
     </style><title>API Alphabetic Index q-s for libxslt</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/XSLT/"><img src="Libxslt-Logo-180x168.gif" alt="Made with Libxslt 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 XSLT C library for GNOME</h1><h2>API Alphabetic Index q-s for libxslt</h2></td></tr></table></td></tr></table></td></tr></table><table border="0" cellpadding="4" cellspacing="0" width="100%" align="center"><tr><td bgcolor="#8b7765"><table border="0" cellspacing="0" cellpadding="2" width="100%"><tr><td valign="top" width="200" bgcolor="#8b7765"><table border="0" cellspacing="0" cellpadding="1" width="100%" bgcolor="#000000"><tr><td><table width="100%" border="0" cellspacing="1" cellpadding="3"><tr><td colspan="1" bgcolor="#eecfa1" align="center"><center><b>Main Menu</b></center></td></tr><tr><td bgcolor="#fffacd"><form action="search.php" enctype="application/x-www-form-urlencoded" method="get"><input name="query" type="text" size="20" value="" /><input name="submit" type="submit" value="Search ..." /></form><ul><li><a href="index.html">Home</a></li><li><a href="intro.html">Introduction</a></li><li><a href="docs.html">Documentation</a></li><li><a href="bugs.html">Reporting bugs and getting help</a></li><li><a href="help.html">How to help</a></li><li><a href="downloads.html">Downloads</a></li><li><a href="FAQ.html">FAQ</a></li><li><a href="news.html">News</a></li><li><a href="xsltproc2.html">The xsltproc tool</a></li><li><a href="docbook.html">DocBook</a></li><li><a href="API.html">The programming API</a></li><li><a href="python.html">Python and bindings</a></li><li><a href="internals.html">Library internals</a></li><li><a href="extensions.html">Writing extensions</a></li><li><a href="contribs.html">Contributions</a></li><li><a href="EXSLT/index.html" style="font-weight:bold">libexslt</a></li><li><a href="xslt.html">flat page</a>, <a href="site.xsl">stylesheet</a></li><li><a href="html/index.html" style="font-weight:bold">API Menu</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>Related links</b></center></td></tr><tr><td bgcolor="#fffacd"><ul><li><a href="tutorial/libxslttutorial.html">Tutorial</a>,
           <a href="tutorial2/libxslt_pipes.html">Tutorial2</a></li><li><a href="xsltproc.html">Man page for xsltproc</a></li><li><a href="http://mail.gnome.org/archives/xslt/">Mail archive</a></li><li><a href="http://xmlsoft.org/">XML libxml2</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://garypennington.net/libxml2/">Solaris binaries</a></li><li><a href="http://www.explain.com.au/oss/libxml2xslt.html">MacOsX binaries</a></li><li><a href="http://bugzilla.gnome.org/buglist.cgi?product=libxslt">Bug Tracker</a></li><li><a href="http://codespeak.net/lxml/">lxml Python bindings</a></li><li><a href="http://cpan.uwinnipeg.ca/dist/XML-LibXSLT">Perl XSLT bindings</a></li><li><a href="http://www.zend.com/php5/articles/php5-xmlphp.php#Heading17">XSLT with PHP</a></li><li><a href="http://www.mod-xslt2.com/">Apache module</a></li><li><a href="http://sourceforge.net/projects/libxml2-pas/">Pascal bindings</a></li><li><a href="http://xsldbg.sourceforge.net/">Xsldbg Debugger</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></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 align="center"><a href="APIchunk0.html">A-I</a>
-<a href="APIchunk1.html">J-S</a>
-<a href="APIchunk2.html">T-a</a>
+<a href="APIchunk1.html">J-R</a>
+<a href="APIchunk2.html">S-a</a>
 <a href="APIchunk3.html">b-c</a>
 <a href="APIchunk4.html">d-e</a>
 <a href="APIchunk5.html">f-g</a>
@@ -36,9 +36,11 @@ A:link, A:visited, A:active { text-decoration: underline }
 </dd><dt>real</dt><dd><a href="html/libxslt-xsltutils.html#IS_XSLT_REAL_NODE">IS_XSLT_REAL_NODE</a><br />
 </dd><dt>really</dt><dd><a href="html/libxslt-xsltInternals.html#XSLT_ITEM_COMPATIBILITY_FIELDS">XSLT_ITEM_COMPATIBILITY_FIELDS</a><br />
 <a href="html/libxslt-xsltInternals.html#_xsltEffectiveNs">_xsltEffectiveNs</a><br />
+</dd><dt>receives</dt><dd><a href="html/libxslt-variables.html#XSLT_RVT_FUNC_RESULT">XSLT_RVT_FUNC_RESULT</a><br />
 </dd><dt>record</dt><dd><a href="html/libxslt-variables.html#xsltParseGlobalParam">xsltParseGlobalParam</a><br />
 <a href="html/libxslt-xsltInternals.html#xsltParseStylesheetOutput">xsltParseStylesheetOutput</a><br />
 </dd><dt>recorded</dt><dd><a href="html/libxslt-variables.html#xsltParseStylesheetCallerParam">xsltParseStylesheetCallerParam</a><br />
+</dd><dt>recursions</dt><dd><a href="html/libxslt-xsltInternals.html#_xsltTransformContext">_xsltTransformContext</a><br />
 </dd><dt>recursive</dt><dd><a href="html/libxslt-xsltInternals.html#_xsltTransformContext">_xsltTransformContext</a><br />
 </dd><dt>refactored</dt><dd><a href="html/libxslt-xsltInternals.html#XSLT_REFACTORED_VARS">XSLT_REFACTORED_VARS</a><br />
 <a href="html/libxslt-xsltInternals.html#_xsltStylesheet">_xsltStylesheet</a><br />
@@ -63,6 +65,8 @@ A:link, A:visited, A:active { text-decoration: underline }
 <a href="html/libxslt-variables.html#xsltParseGlobalVariable">xsltParseGlobalVariable</a><br />
 </dd><dt>related</dt><dd><a href="html/libxslt-xsltInternals.html#_xsltStylesheet">_xsltStylesheet</a><br />
 <a href="html/libxslt-xsltInternals.html#xsltParseStylesheetOutput">xsltParseStylesheetOutput</a><br />
+</dd><dt>releases</dt><dd><a href="html/libxslt-xsltInternals.html#xsltExtensionInstructionResultFinalize">xsltExtensionInstructionResultFinalize</a><br />
+<a href="html/libxslt-xsltInternals.html#xsltExtensionInstructionResultRegister">xsltExtensionInstructionResultRegister</a><br />
 </dd><dt>remain</dt><dd><a href="html/libxslt-transform.html#xsltLocalVariablePop">xsltLocalVariablePop</a><br />
 </dd><dt>remove</dt><dd><a href="html/libxslt-xsltInternals.html#xsltParseSequenceConstructor">xsltParseSequenceConstructor</a><br />
 </dd><dt>reorder</dt><dd><a href="html/libxslt-xsltutils.html#xsltComputeSortResult">xsltComputeSortResult</a><br />
@@ -84,7 +88,9 @@ A:link, A:visited, A:active { text-decoration: underline }
 <a href="html/libxslt-xsltutils.html#xsltDefaultSortFunction">xsltDefaultSortFunction</a><br />
 <a href="html/libxslt-xsltutils.html#xsltDoSortFunction">xsltDoSortFunction</a><br />
 </dd><dt>requires</dt><dd><a href="html/libxslt-imports.html#xsltNeedElemSpaceHandling">xsltNeedElemSpaceHandling</a><br />
-</dd><dt>reset</dt><dd><a href="html/libxslt-xsltutils.html#xsltSetGenericDebugFunc">xsltSetGenericDebugFunc</a><br />
+</dd><dt>reset</dt><dd><a href="html/libxslt-variables.html#XSLT_RVT_FUNC_RESULT">XSLT_RVT_FUNC_RESULT</a><br />
+<a href="html/libxslt-xsltInternals.html#xsltFlagRVTs">xsltFlagRVTs</a><br />
+<a href="html/libxslt-xsltutils.html#xsltSetGenericDebugFunc">xsltSetGenericDebugFunc</a><br />
 <a href="html/libxslt-xsltutils.html#xsltSetGenericErrorFunc">xsltSetGenericErrorFunc</a><br />
 <a href="html/libxslt-xsltutils.html#xsltSetSortFunc">xsltSetSortFunc</a><br />
 <a href="html/libxslt-xsltutils.html#xsltSetTransformErrorFunc">xsltSetTransformErrorFunc</a><br />
@@ -105,20 +111,25 @@ A:link, A:visited, A:active { text-decoration: underline }
 <a href="html/libxslt-xsltInternals.html#xsltLoadStylesheetPI">xsltLoadStylesheetPI</a><br />
 <a href="html/libxslt-xsltutils.html#xsltXPathCompile">xsltXPathCompile</a><br />
 <a href="html/libxslt-xsltutils.html#xsltXPathCompileFlags">xsltXPathCompileFlags</a><br />
-</dd><dt>results</dt><dd><a href="html/libxslt-xsltInternals.html#xsltParseTemplateContent">xsltParseTemplateContent</a><br />
+</dd><dt>results</dt><dd><a href="html/libxslt-variables.html#XSLT_RVT_FUNC_RESULT">XSLT_RVT_FUNC_RESULT</a><br />
+<a href="html/libxslt-xsltInternals.html#xsltParseTemplateContent">xsltParseTemplateContent</a><br />
 </dd><dt>retrieve</dt><dd><a href="html/libxslt-extensions.html#xsltXPathGetTransformContext">xsltXPathGetTransformContext</a><br />
 </dd><dt>return</dt><dd><a href="html/libxslt-xsltInternals.html#CHECK_STOPPED">CHECK_STOPPED</a><br />
 <a href="html/libxslt-xsltInternals.html#CHECK_STOPPED0">CHECK_STOPPED0</a><br />
+<a href="html/libxslt-variables.html#XSLT_RVT_FUNC_RESULT">XSLT_RVT_FUNC_RESULT</a><br />
 <a href="html/libxslt-xsltInternals.html#xsltAllocateExtra">xsltAllocateExtra</a><br />
 <a href="html/libxslt-xsltInternals.html#xsltAllocateExtraCtxt">xsltAllocateExtraCtxt</a><br />
 <a href="html/libxslt-templates.html#xsltAttrTemplateValueProcess">xsltAttrTemplateValueProcess</a><br />
 <a href="html/libxslt-templates.html#xsltAttrTemplateValueProcessNode">xsltAttrTemplateValueProcessNode</a><br />
 <a href="html/libxslt-xsltInternals.html#xsltEvalAVT">xsltEvalAVT</a><br />
 <a href="html/libxslt-xsltutils.html#xsltSplitQName">xsltSplitQName</a><br />
-</dd><dt>returned</dt><dd><a href="html/libxslt-xsltInternals.html#xsltExtensionInstructionResultFinalize">xsltExtensionInstructionResultFinalize</a><br />
+</dd><dt>returned</dt><dd><a href="html/libxslt-variables.html#XSLT_RVT_FUNC_RESULT">XSLT_RVT_FUNC_RESULT</a><br />
+<a href="html/libxslt-xsltInternals.html#xsltExtensionInstructionResultFinalize">xsltExtensionInstructionResultFinalize</a><br />
+<a href="html/libxslt-xsltInternals.html#xsltFlagRVTs">xsltFlagRVTs</a><br />
 <a href="html/libxslt-xsltutils.html#xsltGetProfileInformation">xsltGetProfileInformation</a><br />
 <a href="html/libxslt-xsltutils.html#xsltGetQNameURI">xsltGetQNameURI</a><br />
 <a href="html/libxslt-xsltInternals.html#xsltParseStylesheetDoc">xsltParseStylesheetDoc</a><br />
+</dd><dt>returning</dt><dd><a href="html/libxslt-xsltInternals.html#xsltFlagRVTs">xsltFlagRVTs</a><br />
 </dd><dt>reuse</dt><dd><a href="html/libxslt-transform.html#xsltApplyOneTemplate">xsltApplyOneTemplate</a><br />
 <a href="html/libxslt-xsltInternals.html#xsltReleaseRVT">xsltReleaseRVT</a><br />
 </dd><dt>rid</dt><dd><a href="html/libxslt-xsltInternals.html#_xsltPrincipalStylesheetData">_xsltPrincipalStylesheetData</a><br />
@@ -149,11 +160,13 @@ A:link, A:visited, A:active { text-decoration: underline }
 </dd><dt>saving</dt><dd><a href="html/libxslt-xsltutils.html#xsltSaveProfiling">xsltSaveProfiling</a><br />
 </dd><dt>saxon</dt><dd><a href="html/libxslt-extra.html#xsltFunctionNodeSet">xsltFunctionNodeSet</a><br />
 </dd><dt>scanner</dt><dd><a href="html/libxslt-pattern.html#xsltNormalizeCompSteps">xsltNormalizeCompSteps</a><br />
-</dd><dt>scope</dt><dd><a href="html/libxslt-xsltInternals.html#_xsltKeyDef">_xsltKeyDef</a><br />
+</dd><dt>scope</dt><dd><a href="html/libxslt-variables.html#XSLT_RVT_VARIABLE">XSLT_RVT_VARIABLE</a><br />
+<a href="html/libxslt-xsltInternals.html#_xsltKeyDef">_xsltKeyDef</a><br />
 <a href="html/libxslt-xsltInternals.html#_xsltStylePreComp">_xsltStylePreComp</a><br />
 <a href="html/libxslt-xsltInternals.html#_xsltStylesheet">_xsltStylesheet</a><br />
 <a href="html/libxslt-transform.html#xsltApplyOneTemplate">xsltApplyOneTemplate</a><br />
 <a href="html/libxslt-templates.html#xsltEvalXPathPredicate">xsltEvalXPathPredicate</a><br />
+<a href="html/libxslt-xsltInternals.html#xsltFlagRVTs">xsltFlagRVTs</a><br />
 <a href="html/libxslt-xsltutils.html#xsltGetQNameURI">xsltGetQNameURI</a><br />
 <a href="html/libxslt-pattern.html#xsltGetTemplate">xsltGetTemplate</a><br />
 </dd><dt>seaches</dt><dd><a href="html/libxslt-xsltutils.html#xsltGetQNameURI">xsltGetQNameURI</a><br />
@@ -324,6 +337,7 @@ A:link, A:visited, A:active { text-decoration: underline }
 </dd><dt>state</dt><dd><a href="html/libxslt-transform.html#xslHandleDebugger">xslHandleDebugger</a><br />
 <a href="html/libxslt-pattern.html#xsltCleanupTemplates">xsltCleanupTemplates</a><br />
 <a href="html/libxslt-xsltInternals.html#xsltExtensionInstructionResultFinalize">xsltExtensionInstructionResultFinalize</a><br />
+<a href="html/libxslt-xsltInternals.html#xsltFlagRVTs">xsltFlagRVTs</a><br />
 <a href="html/libxslt-transform.html#xsltGetXIncludeDefault">xsltGetXIncludeDefault</a><br />
 </dd><dt>states</dt><dd><a href="html/libxslt-transform.html#xsltApplyOneTemplate">xsltApplyOneTemplate</a><br />
 </dd><dt>static</dt><dd><a href="html/libxslt-templates.html#xsltEvalStaticAttrValueTemplate">xsltEvalStaticAttrValueTemplate</a><br />
@@ -413,6 +427,7 @@ A:link, A:visited, A:active { text-decoration: underline }
 <a href="html/libxslt-variables.html#xsltEvalUserParams">xsltEvalUserParams</a><br />
 <a href="html/libxslt-xsltInternals.html#xsltExtensionInstructionResultFinalize">xsltExtensionInstructionResultFinalize</a><br />
 <a href="html/libxslt-xsltInternals.html#xsltExtensionInstructionResultRegister">xsltExtensionInstructionResultRegister</a><br />
+<a href="html/libxslt-xsltInternals.html#xsltFlagRVTs">xsltFlagRVTs</a><br />
 <a href="html/libxslt-xsltInternals.html#xsltInitAllDocKeys">xsltInitAllDocKeys</a><br />
 <a href="html/libxslt-xsltInternals.html#xsltInitCtxtKey">xsltInitCtxtKey</a><br />
 <a href="html/libxslt-transform.html#xsltLocalVariablePush">xsltLocalVariablePush</a><br />
@@ -452,8 +467,8 @@ A:link, A:visited, A:active { text-decoration: underline }
 </dd><dt>system</dt><dd><a href="html/libxslt-xsltlocale.html#xsltNewLocale">xsltNewLocale</a><br />
 </dd><dt>system-property</dt><dd><a href="html/libxslt-functions.html#xsltSystemPropertyFunction">xsltSystemPropertyFunction</a><br />
 </dd></dl><h2 align="center"><a href="APIchunk0.html">A-I</a>
-<a href="APIchunk1.html">J-S</a>
-<a href="APIchunk2.html">T-a</a>
+<a href="APIchunk1.html">J-R</a>
+<a href="APIchunk2.html">S-a</a>
 <a href="APIchunk3.html">b-c</a>
 <a href="APIchunk4.html">d-e</a>
 <a href="APIchunk5.html">f-g</a>
index eea7cc8..ed84e3b 100644 (file)
@@ -9,8 +9,8 @@ H3 {font-family: Verdana,Arial,Helvetica}
 A:link, A:visited, A:active { text-decoration: underline }
     </style><title>API Alphabetic Index t-u for libxslt</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/XSLT/"><img src="Libxslt-Logo-180x168.gif" alt="Made with Libxslt 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 XSLT C library for GNOME</h1><h2>API Alphabetic Index t-u for libxslt</h2></td></tr></table></td></tr></table></td></tr></table><table border="0" cellpadding="4" cellspacing="0" width="100%" align="center"><tr><td bgcolor="#8b7765"><table border="0" cellspacing="0" cellpadding="2" width="100%"><tr><td valign="top" width="200" bgcolor="#8b7765"><table border="0" cellspacing="0" cellpadding="1" width="100%" bgcolor="#000000"><tr><td><table width="100%" border="0" cellspacing="1" cellpadding="3"><tr><td colspan="1" bgcolor="#eecfa1" align="center"><center><b>Main Menu</b></center></td></tr><tr><td bgcolor="#fffacd"><form action="search.php" enctype="application/x-www-form-urlencoded" method="get"><input name="query" type="text" size="20" value="" /><input name="submit" type="submit" value="Search ..." /></form><ul><li><a href="index.html">Home</a></li><li><a href="intro.html">Introduction</a></li><li><a href="docs.html">Documentation</a></li><li><a href="bugs.html">Reporting bugs and getting help</a></li><li><a href="help.html">How to help</a></li><li><a href="downloads.html">Downloads</a></li><li><a href="FAQ.html">FAQ</a></li><li><a href="news.html">News</a></li><li><a href="xsltproc2.html">The xsltproc tool</a></li><li><a href="docbook.html">DocBook</a></li><li><a href="API.html">The programming API</a></li><li><a href="python.html">Python and bindings</a></li><li><a href="internals.html">Library internals</a></li><li><a href="extensions.html">Writing extensions</a></li><li><a href="contribs.html">Contributions</a></li><li><a href="EXSLT/index.html" style="font-weight:bold">libexslt</a></li><li><a href="xslt.html">flat page</a>, <a href="site.xsl">stylesheet</a></li><li><a href="html/index.html" style="font-weight:bold">API Menu</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>Related links</b></center></td></tr><tr><td bgcolor="#fffacd"><ul><li><a href="tutorial/libxslttutorial.html">Tutorial</a>,
           <a href="tutorial2/libxslt_pipes.html">Tutorial2</a></li><li><a href="xsltproc.html">Man page for xsltproc</a></li><li><a href="http://mail.gnome.org/archives/xslt/">Mail archive</a></li><li><a href="http://xmlsoft.org/">XML libxml2</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://garypennington.net/libxml2/">Solaris binaries</a></li><li><a href="http://www.explain.com.au/oss/libxml2xslt.html">MacOsX binaries</a></li><li><a href="http://bugzilla.gnome.org/buglist.cgi?product=libxslt">Bug Tracker</a></li><li><a href="http://codespeak.net/lxml/">lxml Python bindings</a></li><li><a href="http://cpan.uwinnipeg.ca/dist/XML-LibXSLT">Perl XSLT bindings</a></li><li><a href="http://www.zend.com/php5/articles/php5-xmlphp.php#Heading17">XSLT with PHP</a></li><li><a href="http://www.mod-xslt2.com/">Apache module</a></li><li><a href="http://sourceforge.net/projects/libxml2-pas/">Pascal bindings</a></li><li><a href="http://xsldbg.sourceforge.net/">Xsldbg Debugger</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></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 align="center"><a href="APIchunk0.html">A-I</a>
-<a href="APIchunk1.html">J-S</a>
-<a href="APIchunk2.html">T-a</a>
+<a href="APIchunk1.html">J-R</a>
+<a href="APIchunk2.html">S-a</a>
 <a href="APIchunk3.html">b-c</a>
 <a href="APIchunk4.html">d-e</a>
 <a href="APIchunk5.html">f-g</a>
@@ -84,6 +84,7 @@ A:link, A:visited, A:active { text-decoration: underline }
 <a href="html/libxslt-xsltutils.html#IS_XSLT_REAL_NODE">IS_XSLT_REAL_NODE</a><br />
 <a href="html/libxslt-xsltInternals.html#XSLT_ITEM_COMPATIBILITY_FIELDS">XSLT_ITEM_COMPATIBILITY_FIELDS</a><br />
 <a href="html/libxslt-xsltlocale.html#XSLT_LOCALE_NONE">XSLT_LOCALE_NONE</a><br />
+<a href="html/libxslt-variables.html#XSLT_RVT_FUNC_RESULT">XSLT_RVT_FUNC_RESULT</a><br />
 <a href="html/libxslt-xsltutils.html#XSLT_STRANGE">XSLT_STRANGE</a><br />
 <a href="html/libxslt-transform.html#xslHandleDebugger">xslHandleDebugger</a><br />
 <a href="html/libxslt-transform.html#xsltApplyOneTemplate">xsltApplyOneTemplate</a><br />
@@ -192,6 +193,7 @@ A:link, A:visited, A:active { text-decoration: underline }
 <a href="html/libxslt-xsltutils.html#xsltGetNsProp">xsltGetNsProp</a><br />
 </dd><dt>unparsed-entity-uri</dt><dd><a href="html/libxslt-functions.html#xsltUnparsedEntityURIFunction">xsltUnparsedEntityURIFunction</a><br />
 </dd><dt>unstructured</dt><dd><a href="html/libxslt-xsltInternals.html#_xsltCompilerCtxt">_xsltCompilerCtxt</a><br />
+</dd><dt>unsupported</dt><dd><a href="html/libxslt-xsltInternals.html#xsltExtensionInstructionResultFinalize">xsltExtensionInstructionResultFinalize</a><br />
 </dd><dt>unused</dt><dd><a href="html/libxslt-preproc.html#xsltDocumentComp">xsltDocumentComp</a><br />
 <a href="html/libxslt-security.html#xsltSecurityAllow">xsltSecurityAllow</a><br />
 <a href="html/libxslt-security.html#xsltSecurityForbid">xsltSecurityForbid</a><br />
@@ -246,8 +248,8 @@ A:link, A:visited, A:active { text-decoration: underline }
 <a href="html/libxslt-transform.html#xsltRunStylesheetUser">xsltRunStylesheetUser</a><br />
 <a href="html/libxslt-xsltutils.html#xsltSetCtxtParseOptions">xsltSetCtxtParseOptions</a><br />
 </dd></dl><h2 align="center"><a href="APIchunk0.html">A-I</a>
-<a href="APIchunk1.html">J-S</a>
-<a href="APIchunk2.html">T-a</a>
+<a href="APIchunk1.html">J-R</a>
+<a href="APIchunk2.html">S-a</a>
 <a href="APIchunk3.html">b-c</a>
 <a href="APIchunk4.html">d-e</a>
 <a href="APIchunk5.html">f-g</a>
index 0bc524b..ea2386b 100644 (file)
@@ -9,8 +9,8 @@ H3 {font-family: Verdana,Arial,Helvetica}
 A:link, A:visited, A:active { text-decoration: underline }
     </style><title>API Alphabetic Index v-x for libxslt</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/XSLT/"><img src="Libxslt-Logo-180x168.gif" alt="Made with Libxslt 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 XSLT C library for GNOME</h1><h2>API Alphabetic Index v-x for libxslt</h2></td></tr></table></td></tr></table></td></tr></table><table border="0" cellpadding="4" cellspacing="0" width="100%" align="center"><tr><td bgcolor="#8b7765"><table border="0" cellspacing="0" cellpadding="2" width="100%"><tr><td valign="top" width="200" bgcolor="#8b7765"><table border="0" cellspacing="0" cellpadding="1" width="100%" bgcolor="#000000"><tr><td><table width="100%" border="0" cellspacing="1" cellpadding="3"><tr><td colspan="1" bgcolor="#eecfa1" align="center"><center><b>Main Menu</b></center></td></tr><tr><td bgcolor="#fffacd"><form action="search.php" enctype="application/x-www-form-urlencoded" method="get"><input name="query" type="text" size="20" value="" /><input name="submit" type="submit" value="Search ..." /></form><ul><li><a href="index.html">Home</a></li><li><a href="intro.html">Introduction</a></li><li><a href="docs.html">Documentation</a></li><li><a href="bugs.html">Reporting bugs and getting help</a></li><li><a href="help.html">How to help</a></li><li><a href="downloads.html">Downloads</a></li><li><a href="FAQ.html">FAQ</a></li><li><a href="news.html">News</a></li><li><a href="xsltproc2.html">The xsltproc tool</a></li><li><a href="docbook.html">DocBook</a></li><li><a href="API.html">The programming API</a></li><li><a href="python.html">Python and bindings</a></li><li><a href="internals.html">Library internals</a></li><li><a href="extensions.html">Writing extensions</a></li><li><a href="contribs.html">Contributions</a></li><li><a href="EXSLT/index.html" style="font-weight:bold">libexslt</a></li><li><a href="xslt.html">flat page</a>, <a href="site.xsl">stylesheet</a></li><li><a href="html/index.html" style="font-weight:bold">API Menu</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>Related links</b></center></td></tr><tr><td bgcolor="#fffacd"><ul><li><a href="tutorial/libxslttutorial.html">Tutorial</a>,
           <a href="tutorial2/libxslt_pipes.html">Tutorial2</a></li><li><a href="xsltproc.html">Man page for xsltproc</a></li><li><a href="http://mail.gnome.org/archives/xslt/">Mail archive</a></li><li><a href="http://xmlsoft.org/">XML libxml2</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://garypennington.net/libxml2/">Solaris binaries</a></li><li><a href="http://www.explain.com.au/oss/libxml2xslt.html">MacOsX binaries</a></li><li><a href="http://bugzilla.gnome.org/buglist.cgi?product=libxslt">Bug Tracker</a></li><li><a href="http://codespeak.net/lxml/">lxml Python bindings</a></li><li><a href="http://cpan.uwinnipeg.ca/dist/XML-LibXSLT">Perl XSLT bindings</a></li><li><a href="http://www.zend.com/php5/articles/php5-xmlphp.php#Heading17">XSLT with PHP</a></li><li><a href="http://www.mod-xslt2.com/">Apache module</a></li><li><a href="http://sourceforge.net/projects/libxml2-pas/">Pascal bindings</a></li><li><a href="http://xsldbg.sourceforge.net/">Xsldbg Debugger</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></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 align="center"><a href="APIchunk0.html">A-I</a>
-<a href="APIchunk1.html">J-S</a>
-<a href="APIchunk2.html">T-a</a>
+<a href="APIchunk1.html">J-R</a>
+<a href="APIchunk2.html">S-a</a>
 <a href="APIchunk3.html">b-c</a>
 <a href="APIchunk4.html">d-e</a>
 <a href="APIchunk5.html">f-g</a>
@@ -49,6 +49,7 @@ A:link, A:visited, A:active { text-decoration: underline }
 <a href="html/libxslt-xslt.html#xsltCleanupGlobals">xsltCleanupGlobals</a><br />
 <a href="html/libxslt-variables.html#xsltEvalGlobalVariables">xsltEvalGlobalVariables</a><br />
 <a href="html/libxslt-variables.html#xsltEvalUserParams">xsltEvalUserParams</a><br />
+<a href="html/libxslt-xsltInternals.html#xsltFlagRVTs">xsltFlagRVTs</a><br />
 <a href="html/libxslt-variables.html#xsltFreeGlobalVariables">xsltFreeGlobalVariables</a><br />
 <a href="html/libxslt-extensions.html#xsltInitGlobals">xsltInitGlobals</a><br />
 <a href="html/libxslt-transform.html#xsltLocalVariablePop">xsltLocalVariablePop</a><br />
@@ -79,6 +80,7 @@ A:link, A:visited, A:active { text-decoration: underline }
 <a href="html/libxslt-xsltInternals.html#_xsltStackElem">_xsltStackElem</a><br />
 <a href="html/libxslt-xsltInternals.html#_xsltTemplate">_xsltTemplate</a><br />
 <a href="html/libxslt-templates.html#xsltEvalXPathPredicate">xsltEvalXPathPredicate</a><br />
+<a href="html/libxslt-xsltInternals.html#xsltFlagRVTs">xsltFlagRVTs</a><br />
 <a href="html/libxslt-xsltlocale.html#xsltNewLocale">xsltNewLocale</a><br />
 <a href="html/libxslt-imports.html#xsltNextImport">xsltNextImport</a><br />
 <a href="html/libxslt-extensions.html#xsltRegisterExtPrefix">xsltRegisterExtPrefix</a><br />
@@ -135,6 +137,7 @@ A:link, A:visited, A:active { text-decoration: underline }
 <a href="html/libxslt-transform.html#xsltRunStylesheet">xsltRunStylesheet</a><br />
 <a href="html/libxslt-transform.html#xsltRunStylesheetUser">xsltRunStylesheetUser</a><br />
 </dd><dt>with</dt><dd><a href="html/libxslt-xsltInternals.html#CHECK_STOPPED0">CHECK_STOPPED0</a><br />
+<a href="html/libxslt-variables.html#XSLT_RVT_FUNC_RESULT">XSLT_RVT_FUNC_RESULT</a><br />
 <a href="html/libxslt-templates.html#xsltAttrTemplateValueProcessNode">xsltAttrTemplateValueProcessNode</a><br />
 <a href="html/libxslt-templates.html#xsltEvalAttrValueTemplate">xsltEvalAttrValueTemplate</a><br />
 <a href="html/libxslt-templates.html#xsltEvalStaticAttrValueTemplate">xsltEvalStaticAttrValueTemplate</a><br />
@@ -162,8 +165,10 @@ A:link, A:visited, A:active { text-decoration: underline }
 </dd><dt>without</dt><dd><a href="html/libxslt-xsltInternals.html#XML_CAST_FPTR">XML_CAST_FPTR</a><br />
 <a href="html/libxslt-xsltInternals.html#XSLT_PAT_NO_PRIORITY">XSLT_PAT_NO_PRIORITY</a><br />
 <a href="html/libxslt-xsltInternals.html#_xsltTransformContext">_xsltTransformContext</a><br />
-</dd><dt>won</dt><dd><a href="html/libxslt-xsltInternals.html#_xsltTemplate">_xsltTemplate</a><br />
+</dd><dt>won</dt><dd><a href="html/libxslt-variables.html#XSLT_RVT_FUNC_RESULT">XSLT_RVT_FUNC_RESULT</a><br />
+<a href="html/libxslt-xsltInternals.html#_xsltTemplate">_xsltTemplate</a><br />
 <a href="html/libxslt-namespaces.html#xsltCopyNamespaceList">xsltCopyNamespaceList</a><br />
+<a href="html/libxslt-xsltInternals.html#xsltFlagRVTs">xsltFlagRVTs</a><br />
 </dd><dt>work</dt><dd><a href="html/libxslt-security.html#xsltCheckWrite">xsltCheckWrite</a><br />
 </dd><dt>wrapped</dt><dd><a href="html/libxslt-imports.html#xsltFindElemSpaceHandling">xsltFindElemSpaceHandling</a><br />
 </dd><dt>wrapper</dt><dd><a href="html/libxslt-xsltutils.html#xsltDoSortFunction">xsltDoSortFunction</a><br />
@@ -206,6 +211,7 @@ A:link, A:visited, A:active { text-decoration: underline }
 </dd><dt>xsl</dt><dd><a href="html/libxslt-xsltutils.html#XSLT_TRACE">XSLT_TRACE</a><br />
 </dd><dt>xsl:</dt><dd><a href="html/libxslt-xsltInternals.html#_xsltPrincipalStylesheetData">_xsltPrincipalStylesheetData</a><br />
 </dd><dt>xsl:apply-templates</dt><dd><a href="html/libxslt-xsltInternals.html#xsltTransformFunction">xsltTransformFunction</a><br />
+</dd><dt>xsl:attribute</dt><dd><a href="html/libxslt-transform.html#xsltAttribute">xsltAttribute</a><br />
 </dd><dt>xsl:choose</dt><dd><a href="html/libxslt-transform.html#xsltChoose">xsltChoose</a><br />
 </dd><dt>xsl:comment</dt><dd><a href="html/libxslt-templates.html#xsltEvalTemplateString">xsltEvalTemplateString</a><br />
 </dd><dt>xsl:for-each</dt><dd><a href="html/libxslt-transform.html#xsltForEach">xsltForEach</a><br />
@@ -265,6 +271,7 @@ A:link, A:visited, A:active { text-decoration: underline }
 <a href="html/libxslt-namespaces.html#xsltGetNamespace">xsltGetNamespace</a><br />
 </dd><dt>xsltCreateRVT</dt><dd><a href="html/libxslt-xsltInternals.html#xsltExtensionInstructionResultRegister">xsltExtensionInstructionResultRegister</a><br />
 </dd><dt>xsltDecimalFormatPtr</dt><dd><a href="html/libxslt-xsltInternals.html#xsltDecimalFormatGetByName">xsltDecimalFormatGetByName</a><br />
+<a href="html/libxslt-xsltInternals.html#xsltDecimalFormatGetByQName">xsltDecimalFormatGetByQName</a><br />
 </dd><dt>xsltDocLoaderFunc</dt><dd><a href="html/libxslt-documents.html#xsltDocLoaderFunc">xsltDocLoaderFunc</a><br />
 </dd><dt>xsltDocument</dt><dd><a href="html/libxslt-documents.html#xsltFreeStyleDocuments">xsltFreeStyleDocuments</a><br />
 </dd><dt>xsltDocumentComp</dt><dd><a href="html/libxslt-xsltInternals.html#_xsltStyleItemDocument">_xsltStyleItemDocument</a><br />
@@ -321,8 +328,8 @@ A:link, A:visited, A:active { text-decoration: underline }
 </dd><dt>xsltTimestamp</dt><dd><a href="html/libxslt-xsltutils.html#xsltCalibrateAdjust">xsltCalibrateAdjust</a><br />
 </dd><dt>xsltTransformContextPtr</dt><dd><a href="html/libxslt-transform.html#xsltNewTransformContext">xsltNewTransformContext</a><br />
 </dd></dl><h2 align="center"><a href="APIchunk0.html">A-I</a>
-<a href="APIchunk1.html">J-S</a>
-<a href="APIchunk2.html">T-a</a>
+<a href="APIchunk1.html">J-R</a>
+<a href="APIchunk2.html">S-a</a>
 <a href="APIchunk3.html">b-c</a>
 <a href="APIchunk4.html">d-e</a>
 <a href="APIchunk5.html">f-g</a>
index 5388c24..11bbc2f 100644 (file)
@@ -9,8 +9,8 @@ H3 {font-family: Verdana,Arial,Helvetica}
 A:link, A:visited, A:active { text-decoration: underline }
     </style><title>API Alphabetic Index y-z for libxslt</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/XSLT/"><img src="Libxslt-Logo-180x168.gif" alt="Made with Libxslt 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 XSLT C library for GNOME</h1><h2>API Alphabetic Index y-z for libxslt</h2></td></tr></table></td></tr></table></td></tr></table><table border="0" cellpadding="4" cellspacing="0" width="100%" align="center"><tr><td bgcolor="#8b7765"><table border="0" cellspacing="0" cellpadding="2" width="100%"><tr><td valign="top" width="200" bgcolor="#8b7765"><table border="0" cellspacing="0" cellpadding="1" width="100%" bgcolor="#000000"><tr><td><table width="100%" border="0" cellspacing="1" cellpadding="3"><tr><td colspan="1" bgcolor="#eecfa1" align="center"><center><b>Main Menu</b></center></td></tr><tr><td bgcolor="#fffacd"><form action="search.php" enctype="application/x-www-form-urlencoded" method="get"><input name="query" type="text" size="20" value="" /><input name="submit" type="submit" value="Search ..." /></form><ul><li><a href="index.html">Home</a></li><li><a href="intro.html">Introduction</a></li><li><a href="docs.html">Documentation</a></li><li><a href="bugs.html">Reporting bugs and getting help</a></li><li><a href="help.html">How to help</a></li><li><a href="downloads.html">Downloads</a></li><li><a href="FAQ.html">FAQ</a></li><li><a href="news.html">News</a></li><li><a href="xsltproc2.html">The xsltproc tool</a></li><li><a href="docbook.html">DocBook</a></li><li><a href="API.html">The programming API</a></li><li><a href="python.html">Python and bindings</a></li><li><a href="internals.html">Library internals</a></li><li><a href="extensions.html">Writing extensions</a></li><li><a href="contribs.html">Contributions</a></li><li><a href="EXSLT/index.html" style="font-weight:bold">libexslt</a></li><li><a href="xslt.html">flat page</a>, <a href="site.xsl">stylesheet</a></li><li><a href="html/index.html" style="font-weight:bold">API Menu</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>Related links</b></center></td></tr><tr><td bgcolor="#fffacd"><ul><li><a href="tutorial/libxslttutorial.html">Tutorial</a>,
           <a href="tutorial2/libxslt_pipes.html">Tutorial2</a></li><li><a href="xsltproc.html">Man page for xsltproc</a></li><li><a href="http://mail.gnome.org/archives/xslt/">Mail archive</a></li><li><a href="http://xmlsoft.org/">XML libxml2</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://garypennington.net/libxml2/">Solaris binaries</a></li><li><a href="http://www.explain.com.au/oss/libxml2xslt.html">MacOsX binaries</a></li><li><a href="http://bugzilla.gnome.org/buglist.cgi?product=libxslt">Bug Tracker</a></li><li><a href="http://codespeak.net/lxml/">lxml Python bindings</a></li><li><a href="http://cpan.uwinnipeg.ca/dist/XML-LibXSLT">Perl XSLT bindings</a></li><li><a href="http://www.zend.com/php5/articles/php5-xmlphp.php#Heading17">XSLT with PHP</a></li><li><a href="http://www.mod-xslt2.com/">Apache module</a></li><li><a href="http://sourceforge.net/projects/libxml2-pas/">Pascal bindings</a></li><li><a href="http://xsldbg.sourceforge.net/">Xsldbg Debugger</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></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 align="center"><a href="APIchunk0.html">A-I</a>
-<a href="APIchunk1.html">J-S</a>
-<a href="APIchunk2.html">T-a</a>
+<a href="APIchunk1.html">J-R</a>
+<a href="APIchunk2.html">S-a</a>
 <a href="APIchunk3.html">b-c</a>
 <a href="APIchunk4.html">d-e</a>
 <a href="APIchunk5.html">f-g</a>
@@ -31,8 +31,8 @@ A:link, A:visited, A:active { text-decoration: underline }
 </dd><dt>your</dt><dd><a href="html/libxslt-variables.html#xsltEvalUserParams">xsltEvalUserParams</a><br />
 </dd></dl><h2>Letter z:</h2><dl><dt>zero</dt><dd><a href="html/libxslt-xsltInternals.html#xsltFormatNumberConversion">xsltFormatNumberConversion</a><br />
 </dd></dl><h2 align="center"><a href="APIchunk0.html">A-I</a>
-<a href="APIchunk1.html">J-S</a>
-<a href="APIchunk2.html">T-a</a>
+<a href="APIchunk1.html">J-R</a>
+<a href="APIchunk2.html">S-a</a>
 <a href="APIchunk3.html">b-c</a>
 <a href="APIchunk4.html">d-e</a>
 <a href="APIchunk5.html">f-g</a>
index 00a8a0c..e58dacd 100644 (file)
@@ -7,10 +7,10 @@ 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>API Alphabetic Index T-a for libxslt</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/XSLT/"><img src="Libxslt-Logo-180x168.gif" alt="Made with Libxslt 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 XSLT C library for GNOME</h1><h2>API Alphabetic Index T-a for libxslt</h2></td></tr></table></td></tr></table></td></tr></table><table border="0" cellpadding="4" cellspacing="0" width="100%" align="center"><tr><td bgcolor="#8b7765"><table border="0" cellspacing="0" cellpadding="2" width="100%"><tr><td valign="top" width="200" bgcolor="#8b7765"><table border="0" cellspacing="0" cellpadding="1" width="100%" bgcolor="#000000"><tr><td><table width="100%" border="0" cellspacing="1" cellpadding="3"><tr><td colspan="1" bgcolor="#eecfa1" align="center"><center><b>Main Menu</b></center></td></tr><tr><td bgcolor="#fffacd"><form action="search.php" enctype="application/x-www-form-urlencoded" method="get"><input name="query" type="text" size="20" value="" /><input name="submit" type="submit" value="Search ..." /></form><ul><li><a href="index.html">Home</a></li><li><a href="intro.html">Introduction</a></li><li><a href="docs.html">Documentation</a></li><li><a href="bugs.html">Reporting bugs and getting help</a></li><li><a href="help.html">How to help</a></li><li><a href="downloads.html">Downloads</a></li><li><a href="FAQ.html">FAQ</a></li><li><a href="news.html">News</a></li><li><a href="xsltproc2.html">The xsltproc tool</a></li><li><a href="docbook.html">DocBook</a></li><li><a href="API.html">The programming API</a></li><li><a href="python.html">Python and bindings</a></li><li><a href="internals.html">Library internals</a></li><li><a href="extensions.html">Writing extensions</a></li><li><a href="contribs.html">Contributions</a></li><li><a href="EXSLT/index.html" style="font-weight:bold">libexslt</a></li><li><a href="xslt.html">flat page</a>, <a href="site.xsl">stylesheet</a></li><li><a href="html/index.html" style="font-weight:bold">API Menu</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>Related links</b></center></td></tr><tr><td bgcolor="#fffacd"><ul><li><a href="tutorial/libxslttutorial.html">Tutorial</a>,
+    </style><title>API Alphabetic Index S-a for libxslt</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/XSLT/"><img src="Libxslt-Logo-180x168.gif" alt="Made with Libxslt 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 XSLT C library for GNOME</h1><h2>API Alphabetic Index S-a for libxslt</h2></td></tr></table></td></tr></table></td></tr></table><table border="0" cellpadding="4" cellspacing="0" width="100%" align="center"><tr><td bgcolor="#8b7765"><table border="0" cellspacing="0" cellpadding="2" width="100%"><tr><td valign="top" width="200" bgcolor="#8b7765"><table border="0" cellspacing="0" cellpadding="1" width="100%" bgcolor="#000000"><tr><td><table width="100%" border="0" cellspacing="1" cellpadding="3"><tr><td colspan="1" bgcolor="#eecfa1" align="center"><center><b>Main Menu</b></center></td></tr><tr><td bgcolor="#fffacd"><form action="search.php" enctype="application/x-www-form-urlencoded" method="get"><input name="query" type="text" size="20" value="" /><input name="submit" type="submit" value="Search ..." /></form><ul><li><a href="index.html">Home</a></li><li><a href="intro.html">Introduction</a></li><li><a href="docs.html">Documentation</a></li><li><a href="bugs.html">Reporting bugs and getting help</a></li><li><a href="help.html">How to help</a></li><li><a href="downloads.html">Downloads</a></li><li><a href="FAQ.html">FAQ</a></li><li><a href="news.html">News</a></li><li><a href="xsltproc2.html">The xsltproc tool</a></li><li><a href="docbook.html">DocBook</a></li><li><a href="API.html">The programming API</a></li><li><a href="python.html">Python and bindings</a></li><li><a href="internals.html">Library internals</a></li><li><a href="extensions.html">Writing extensions</a></li><li><a href="contribs.html">Contributions</a></li><li><a href="EXSLT/index.html" style="font-weight:bold">libexslt</a></li><li><a href="xslt.html">flat page</a>, <a href="site.xsl">stylesheet</a></li><li><a href="html/index.html" style="font-weight:bold">API Menu</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>Related links</b></center></td></tr><tr><td bgcolor="#fffacd"><ul><li><a href="tutorial/libxslttutorial.html">Tutorial</a>,
           <a href="tutorial2/libxslt_pipes.html">Tutorial2</a></li><li><a href="xsltproc.html">Man page for xsltproc</a></li><li><a href="http://mail.gnome.org/archives/xslt/">Mail archive</a></li><li><a href="http://xmlsoft.org/">XML libxml2</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://garypennington.net/libxml2/">Solaris binaries</a></li><li><a href="http://www.explain.com.au/oss/libxml2xslt.html">MacOsX binaries</a></li><li><a href="http://bugzilla.gnome.org/buglist.cgi?product=libxslt">Bug Tracker</a></li><li><a href="http://codespeak.net/lxml/">lxml Python bindings</a></li><li><a href="http://cpan.uwinnipeg.ca/dist/XML-LibXSLT">Perl XSLT bindings</a></li><li><a href="http://www.zend.com/php5/articles/php5-xmlphp.php#Heading17">XSLT with PHP</a></li><li><a href="http://www.mod-xslt2.com/">Apache module</a></li><li><a href="http://sourceforge.net/projects/libxml2-pas/">Pascal bindings</a></li><li><a href="http://xsldbg.sourceforge.net/">Xsldbg Debugger</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></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 align="center"><a href="APIchunk0.html">A-I</a>
-<a href="APIchunk1.html">J-S</a>
-<a href="APIchunk2.html">T-a</a>
+<a href="APIchunk1.html">J-R</a>
+<a href="APIchunk2.html">S-a</a>
 <a href="APIchunk3.html">b-c</a>
 <a href="APIchunk4.html">d-e</a>
 <a href="APIchunk5.html">f-g</a>
@@ -22,7 +22,48 @@ A:link, A:visited, A:active { text-decoration: underline }
 <a href="APIchunk11.html">t-u</a>
 <a href="APIchunk12.html">v-x</a>
 <a href="APIchunk13.html">y-z</a>
-</h2><h2>Letter T:</h2><dl><dt>TEMP</dt><dd><a href="html/libxslt-xsltInternals.html#_xsltCompilerCtxt">_xsltCompilerCtxt</a><br />
+</h2><h2>Letter S:</h2><dl><dt>SAX</dt><dd><a href="html/libxslt-transform.html#xsltRunStylesheet">xsltRunStylesheet</a><br />
+<a href="html/libxslt-transform.html#xsltRunStylesheetUser">xsltRunStylesheetUser</a><br />
+</dd><dt>Sampling</dt><dd><a href="html/libxslt-xsltutils.html#XSLT_TIMESTAMP_TICS_PER_SEC">XSLT_TIMESTAMP_TICS_PER_SEC</a><br />
+</dd><dt>Save</dt><dd><a href="html/libxslt-xsltutils.html#xsltSaveProfiling">xsltSaveProfiling</a><br />
+<a href="html/libxslt-xsltutils.html#xsltSaveResultTo">xsltSaveResultTo</a><br />
+<a href="html/libxslt-xsltutils.html#xsltSaveResultToFd">xsltSaveResultToFd</a><br />
+<a href="html/libxslt-xsltutils.html#xsltSaveResultToFile">xsltSaveResultToFile</a><br />
+<a href="html/libxslt-xsltutils.html#xsltSaveResultToFilename">xsltSaveResultToFilename</a><br />
+<a href="html/libxslt-xsltutils.html#xsltSaveResultToString">xsltSaveResultToString</a><br />
+</dd><dt>Saxon</dt><dd><a href="html/libxslt-extra.html#XSLT_SAXON_NAMESPACE">XSLT_SAXON_NAMESPACE</a><br />
+</dd><dt>Scaling</dt><dd><a href="html/libxslt-numbersInternals.html#_xsltFormatNumberInfo">_xsltFormatNumberInfo</a><br />
+</dd><dt>Search</dt><dd><a href="html/libxslt-xsltutils.html#xsltGetCNsProp">xsltGetCNsProp</a><br />
+<a href="html/libxslt-xsltutils.html#xsltGetNsProp">xsltGetNsProp</a><br />
+<a href="html/libxslt-variables.html#xsltVariableLookup">xsltVariableLookup</a><br />
+</dd><dt>Set</dt><dd><a href="html/libxslt-xsltInternals.html#_xsltCompilerNodeInfo">_xsltCompilerNodeInfo</a><br />
+<a href="html/libxslt-xsltutils.html#xsltDebugSetDefaultTrace">xsltDebugSetDefaultTrace</a><br />
+<a href="html/libxslt-security.html#xsltSetCtxtSecurityPrefs">xsltSetCtxtSecurityPrefs</a><br />
+<a href="html/libxslt-security.html#xsltSetDefaultSecurityPrefs">xsltSetDefaultSecurityPrefs</a><br />
+<a href="html/libxslt-documents.html#xsltSetLoaderFunc">xsltSetLoaderFunc</a><br />
+<a href="html/libxslt-transform.html#xsltSetXIncludeDefault">xsltSetXIncludeDefault</a><br />
+</dd><dt>Should</dt><dd><a href="html/libxslt-keys.html#xsltInitCtxtKeys">xsltInitCtxtKeys</a><br />
+</dd><dt>Shutdown</dt><dd><a href="html/libxslt-extensions.html#xsltShutdownCtxtExts">xsltShutdownCtxtExts</a><br />
+<a href="html/libxslt-extensions.html#xsltShutdownExts">xsltShutdownExts</a><br />
+</dd><dt>Signature</dt><dd><a href="html/libxslt-xsltInternals.html#xsltSortFunc">xsltSortFunc</a><br />
+<a href="html/libxslt-xsltInternals.html#xsltTransformFunction">xsltTransformFunction</a><br />
+</dd><dt>Similar</dt><dd><a href="html/libxslt-xsltutils.html#xsltGetCNsProp">xsltGetCNsProp</a><br />
+<a href="html/libxslt-xsltutils.html#xsltGetNsProp">xsltGetNsProp</a><br />
+<a href="html/libxslt-variables.html#xsltQuoteUserParams">xsltQuoteUserParams</a><br />
+</dd><dt>Size</dt><dd><a href="html/libxslt-xsltInternals.html#_xsltTemplate">_xsltTemplate</a><br />
+<a href="html/libxslt-xsltInternals.html#_xsltTransformContext">_xsltTransformContext</a><br />
+</dd><dt>Special</dt><dd><a href="html/libxslt-namespaces.html#UNDEFINED_DEFAULT_NS">UNDEFINED_DEFAULT_NS</a><br />
+<a href="html/libxslt-xsltInternals.html#xsltFormatNumberConversion">xsltFormatNumberConversion</a><br />
+</dd><dt>Specific</dt><dd><a href="html/libxslt-xsltInternals.html#XSLT_PAT_NO_PRIORITY">XSLT_PAT_NO_PRIORITY</a><br />
+</dd><dt>Speed</dt><dd><a href="html/libxslt-xsltInternals.html#_xsltTransformContext">_xsltTransformContext</a><br />
+</dd><dt>Split</dt><dd><a href="html/libxslt-xsltutils.html#xsltSplitQName">xsltSplitQName</a><br />
+</dd><dt>Storage</dt><dd><a href="html/libxslt-xsltInternals.html#_xsltCompilerCtxt">_xsltCompilerCtxt</a><br />
+</dd><dt>Strip</dt><dd><a href="html/libxslt-transform.html#xsltApplyStripSpaces">xsltApplyStripSpaces</a><br />
+</dd><dt>Structure:</dt><dd><a href="html/libxslt-xsltInternals.html#xsltFormatNumberConversion">xsltFormatNumberConversion</a><br />
+</dd><dt>Stylesheet</dt><dd><a href="html/libxslt-xsltInternals.html#_xsltStylesheet">_xsltStylesheet</a><br />
+<a href="html/libxslt-xsltInternals.html#xsltNewStylesheet">xsltNewStylesheet</a><br />
+</dd><dt>Symbol</dt><dd><a href="html/libxslt-xsltInternals.html#xsltFormatNumberConversion">xsltFormatNumberConversion</a><br />
+</dd></dl><h2>Letter T:</h2><dl><dt>TEMP</dt><dd><a href="html/libxslt-xsltInternals.html#_xsltCompilerCtxt">_xsltCompilerCtxt</a><br />
 </dd><dt>TODO:</dt><dd><a href="html/libxslt-xsltInternals.html#XSLT_ITEM_COMPATIBILITY_FIELDS">XSLT_ITEM_COMPATIBILITY_FIELDS</a><br />
 <a href="html/libxslt-xsltInternals.html#XSLT_ITEM_NAVIGATION_FIELDS">XSLT_ITEM_NAVIGATION_FIELDS</a><br />
 <a href="html/libxslt-xsltInternals.html#_xsltCompilerCtxt">_xsltCompilerCtxt</a><br />
@@ -74,6 +115,7 @@ A:link, A:visited, A:active { text-decoration: underline }
 <a href="html/libxslt-extensions.html#xsltUnregisterExtModuleFunction">xsltUnregisterExtModuleFunction</a><br />
 <a href="html/libxslt-extensions.html#xsltUnregisterExtModuleTopLevel">xsltUnregisterExtModuleTopLevel</a><br />
 </dd><dt>Update</dt><dd><a href="html/libxslt-security.html#xsltSetSecurityPrefs">xsltSetSecurityPrefs</a><br />
+</dd><dt>Updates</dt><dd><a href="html/libxslt-xsltInternals.html#xsltFlagRVTs">xsltFlagRVTs</a><br />
 </dd><dt>Use</dt><dd><a href="html/libxslt-xsltInternals.html#xsltRegisterTmpRVT">xsltRegisterTmpRVT</a><br />
 </dd><dt>Used</dt><dd><a href="html/libxslt-xsltInternals.html#_xsltDecimalFormat">_xsltDecimalFormat</a><br />
 <a href="html/libxslt-xsltutils.html#xsltCalibrateAdjust">xsltCalibrateAdjust</a><br />
@@ -118,10 +160,16 @@ A:link, A:visited, A:active { text-decoration: underline }
 </dd><dt>XSLT_ERROR_SEVERITY_WARNING</dt><dd><a href="html/libxslt-xsltInternals.html#_xsltCompilerCtxt">_xsltCompilerCtxt</a><br />
 </dd><dt>XSLT_GET_IMPORT_PTR</dt><dd><a href="html/libxslt-transform.html#xsltRunStylesheet">xsltRunStylesheet</a><br />
 <a href="html/libxslt-transform.html#xsltRunStylesheetUser">xsltRunStylesheetUser</a><br />
+</dd><dt>XSLT_RVT_FUNC_RESULT</dt><dd><a href="html/libxslt-xsltInternals.html#xsltFlagRVTs">xsltFlagRVTs</a><br />
+</dd><dt>XSLT_RVT_GLOBAL</dt><dd><a href="html/libxslt-xsltInternals.html#xsltFlagRVTs">xsltFlagRVTs</a><br />
+</dd><dt>XSLT_RVT_LOCAL</dt><dd><a href="html/libxslt-variables.html#XSLT_RVT_FUNC_RESULT">XSLT_RVT_FUNC_RESULT</a><br />
+<a href="html/libxslt-xsltInternals.html#xsltFlagRVTs">xsltFlagRVTs</a><br />
+</dd><dt>XSLT_RVT_VARIABLE</dt><dd><a href="html/libxslt-variables.html#XSLT_RVT_FUNC_RESULT">XSLT_RVT_FUNC_RESULT</a><br />
 </dd></dl><h2>Letter a:</h2><dl><dt>absent</dt><dd><a href="html/libxslt-xsltInternals.html#xsltFormatNumberConversion">xsltFormatNumberConversion</a><br />
 </dd><dt>accelerators</dt><dd><a href="html/libxslt-numbersInternals.html#_xsltNumberData">_xsltNumberData</a><br />
 </dd><dt>access</dt><dd><a href="html/libxslt-xsltInternals.html#XSLT_RUNTIME_EXTRA_LST">XSLT_RUNTIME_EXTRA_LST</a><br />
-</dd><dt>according</dt><dd><a href="html/libxslt-transform.html#xsltRunStylesheet">xsltRunStylesheet</a><br />
+</dd><dt>according</dt><dd><a href="html/libxslt-xsltInternals.html#xsltFlagRVTs">xsltFlagRVTs</a><br />
+<a href="html/libxslt-transform.html#xsltRunStylesheet">xsltRunStylesheet</a><br />
 <a href="html/libxslt-transform.html#xsltRunStylesheetUser">xsltRunStylesheetUser</a><br />
 <a href="html/libxslt-xsltlocale.html#xsltStrxfrm">xsltStrxfrm</a><br />
 </dd><dt>accordingly</dt><dd><a href="html/libxslt-xsltutils.html#xsltComputeSortResult">xsltComputeSortResult</a><br />
@@ -143,7 +191,11 @@ A:link, A:visited, A:active { text-decoration: underline }
 </dd><dt>additionally</dt><dd><a href="html/libxslt-xsltInternals.html#xsltExtensionInstructionResultRegister">xsltExtensionInstructionResultRegister</a><br />
 <a href="html/libxslt-xsltInternals.html#xsltParseSequenceConstructor">xsltParseSequenceConstructor</a><br />
 </dd><dt>address</dt><dd><a href="html/libxslt-xsltutils.html#xsltSetDebuggerCallbacks">xsltSetDebuggerCallbacks</a><br />
-</dd><dt>after</dt><dd><a href="html/libxslt-xsltInternals.html#xsltExtensionInstructionResultFinalize">xsltExtensionInstructionResultFinalize</a><br />
+</dd><dt>after</dt><dd><a href="html/libxslt-variables.html#XSLT_RVT_FUNC_RESULT">XSLT_RVT_FUNC_RESULT</a><br />
+<a href="html/libxslt-variables.html#XSLT_RVT_LOCAL">XSLT_RVT_LOCAL</a><br />
+<a href="html/libxslt-variables.html#XSLT_RVT_VARIABLE">XSLT_RVT_VARIABLE</a><br />
+<a href="html/libxslt-xsltInternals.html#xsltExtensionInstructionResultFinalize">xsltExtensionInstructionResultFinalize</a><br />
+<a href="html/libxslt-xsltInternals.html#xsltFlagRVTs">xsltFlagRVTs</a><br />
 <a href="html/libxslt-xsltutils.html#xsltGetProfileInformation">xsltGetProfileInformation</a><br />
 <a href="html/libxslt-xsltlocale.html#xsltLocaleStrcmp">xsltLocaleStrcmp</a><br />
 <a href="html/libxslt-xsltInternals.html#xsltParseStylesheetDoc">xsltParseStylesheetDoc</a><br />
@@ -343,8 +395,8 @@ A:link, A:visited, A:active { text-decoration: underline }
 </dd><dt>average=</dt><dd><a href="html/libxslt-xsltutils.html#xsltGetProfileInformation">xsltGetProfileInformation</a><br />
 </dd><dt>avoid</dt><dd><a href="html/libxslt-xsltInternals.html#xsltExtensionInstructionResultRegister">xsltExtensionInstructionResultRegister</a><br />
 </dd></dl><h2 align="center"><a href="APIchunk0.html">A-I</a>
-<a href="APIchunk1.html">J-S</a>
-<a href="APIchunk2.html">T-a</a>
+<a href="APIchunk1.html">J-R</a>
+<a href="APIchunk2.html">S-a</a>
 <a href="APIchunk3.html">b-c</a>
 <a href="APIchunk4.html">d-e</a>
 <a href="APIchunk5.html">f-g</a>
index 98b7586..06eedee 100644 (file)
@@ -9,8 +9,8 @@ H3 {font-family: Verdana,Arial,Helvetica}
 A:link, A:visited, A:active { text-decoration: underline }
     </style><title>API Alphabetic Index b-c for libxslt</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/XSLT/"><img src="Libxslt-Logo-180x168.gif" alt="Made with Libxslt 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 XSLT C library for GNOME</h1><h2>API Alphabetic Index b-c for libxslt</h2></td></tr></table></td></tr></table></td></tr></table><table border="0" cellpadding="4" cellspacing="0" width="100%" align="center"><tr><td bgcolor="#8b7765"><table border="0" cellspacing="0" cellpadding="2" width="100%"><tr><td valign="top" width="200" bgcolor="#8b7765"><table border="0" cellspacing="0" cellpadding="1" width="100%" bgcolor="#000000"><tr><td><table width="100%" border="0" cellspacing="1" cellpadding="3"><tr><td colspan="1" bgcolor="#eecfa1" align="center"><center><b>Main Menu</b></center></td></tr><tr><td bgcolor="#fffacd"><form action="search.php" enctype="application/x-www-form-urlencoded" method="get"><input name="query" type="text" size="20" value="" /><input name="submit" type="submit" value="Search ..." /></form><ul><li><a href="index.html">Home</a></li><li><a href="intro.html">Introduction</a></li><li><a href="docs.html">Documentation</a></li><li><a href="bugs.html">Reporting bugs and getting help</a></li><li><a href="help.html">How to help</a></li><li><a href="downloads.html">Downloads</a></li><li><a href="FAQ.html">FAQ</a></li><li><a href="news.html">News</a></li><li><a href="xsltproc2.html">The xsltproc tool</a></li><li><a href="docbook.html">DocBook</a></li><li><a href="API.html">The programming API</a></li><li><a href="python.html">Python and bindings</a></li><li><a href="internals.html">Library internals</a></li><li><a href="extensions.html">Writing extensions</a></li><li><a href="contribs.html">Contributions</a></li><li><a href="EXSLT/index.html" style="font-weight:bold">libexslt</a></li><li><a href="xslt.html">flat page</a>, <a href="site.xsl">stylesheet</a></li><li><a href="html/index.html" style="font-weight:bold">API Menu</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>Related links</b></center></td></tr><tr><td bgcolor="#fffacd"><ul><li><a href="tutorial/libxslttutorial.html">Tutorial</a>,
           <a href="tutorial2/libxslt_pipes.html">Tutorial2</a></li><li><a href="xsltproc.html">Man page for xsltproc</a></li><li><a href="http://mail.gnome.org/archives/xslt/">Mail archive</a></li><li><a href="http://xmlsoft.org/">XML libxml2</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://garypennington.net/libxml2/">Solaris binaries</a></li><li><a href="http://www.explain.com.au/oss/libxml2xslt.html">MacOsX binaries</a></li><li><a href="http://bugzilla.gnome.org/buglist.cgi?product=libxslt">Bug Tracker</a></li><li><a href="http://codespeak.net/lxml/">lxml Python bindings</a></li><li><a href="http://cpan.uwinnipeg.ca/dist/XML-LibXSLT">Perl XSLT bindings</a></li><li><a href="http://www.zend.com/php5/articles/php5-xmlphp.php#Heading17">XSLT with PHP</a></li><li><a href="http://www.mod-xslt2.com/">Apache module</a></li><li><a href="http://sourceforge.net/projects/libxml2-pas/">Pascal bindings</a></li><li><a href="http://xsldbg.sourceforge.net/">Xsldbg Debugger</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></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 align="center"><a href="APIchunk0.html">A-I</a>
-<a href="APIchunk1.html">J-S</a>
-<a href="APIchunk2.html">T-a</a>
+<a href="APIchunk1.html">J-R</a>
+<a href="APIchunk2.html">S-a</a>
 <a href="APIchunk3.html">b-c</a>
 <a href="APIchunk4.html">d-e</a>
 <a href="APIchunk5.html">f-g</a>
@@ -123,6 +123,7 @@ A:link, A:visited, A:active { text-decoration: underline }
 </dd><dt>call</dt><dd><a href="html/libxslt-xsltutils.html#xslAddCall">xslAddCall</a><br />
 <a href="html/libxslt-xsltutils.html#xslDropCall">xslDropCall</a><br />
 <a href="html/libxslt-documents.html#xsltDocLoaderFunc">xsltDocLoaderFunc</a><br />
+<a href="html/libxslt-xsltInternals.html#xsltExtensionInstructionResultRegister">xsltExtensionInstructionResultRegister</a><br />
 </dd><dt>call-template</dt><dd><a href="html/libxslt-xsltInternals.html#_xsltStyleItemCallTemplate">_xsltStyleItemCallTemplate</a><br />
 <a href="html/libxslt-xsltInternals.html#_xsltStylePreComp">_xsltStylePreComp</a><br />
 <a href="html/libxslt-transform.html#xsltCallTemplate">xsltCallTemplate</a><br />
@@ -371,8 +372,8 @@ A:link, A:visited, A:active { text-decoration: underline }
 <a href="html/libxslt-templates.html#xsltEvalStaticAttrValueTemplate">xsltEvalStaticAttrValueTemplate</a><br />
 </dd><dt>currently</dt><dd><a href="html/libxslt-xsltInternals.html#xsltRegisterTmpRVT">xsltRegisterTmpRVT</a><br />
 </dd></dl><h2 align="center"><a href="APIchunk0.html">A-I</a>
-<a href="APIchunk1.html">J-S</a>
-<a href="APIchunk2.html">T-a</a>
+<a href="APIchunk1.html">J-R</a>
+<a href="APIchunk2.html">S-a</a>
 <a href="APIchunk3.html">b-c</a>
 <a href="APIchunk4.html">d-e</a>
 <a href="APIchunk5.html">f-g</a>
index e914342..8d81ac7 100644 (file)
@@ -9,8 +9,8 @@ H3 {font-family: Verdana,Arial,Helvetica}
 A:link, A:visited, A:active { text-decoration: underline }
     </style><title>API Alphabetic Index d-e for libxslt</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/XSLT/"><img src="Libxslt-Logo-180x168.gif" alt="Made with Libxslt 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 XSLT C library for GNOME</h1><h2>API Alphabetic Index d-e for libxslt</h2></td></tr></table></td></tr></table></td></tr></table><table border="0" cellpadding="4" cellspacing="0" width="100%" align="center"><tr><td bgcolor="#8b7765"><table border="0" cellspacing="0" cellpadding="2" width="100%"><tr><td valign="top" width="200" bgcolor="#8b7765"><table border="0" cellspacing="0" cellpadding="1" width="100%" bgcolor="#000000"><tr><td><table width="100%" border="0" cellspacing="1" cellpadding="3"><tr><td colspan="1" bgcolor="#eecfa1" align="center"><center><b>Main Menu</b></center></td></tr><tr><td bgcolor="#fffacd"><form action="search.php" enctype="application/x-www-form-urlencoded" method="get"><input name="query" type="text" size="20" value="" /><input name="submit" type="submit" value="Search ..." /></form><ul><li><a href="index.html">Home</a></li><li><a href="intro.html">Introduction</a></li><li><a href="docs.html">Documentation</a></li><li><a href="bugs.html">Reporting bugs and getting help</a></li><li><a href="help.html">How to help</a></li><li><a href="downloads.html">Downloads</a></li><li><a href="FAQ.html">FAQ</a></li><li><a href="news.html">News</a></li><li><a href="xsltproc2.html">The xsltproc tool</a></li><li><a href="docbook.html">DocBook</a></li><li><a href="API.html">The programming API</a></li><li><a href="python.html">Python and bindings</a></li><li><a href="internals.html">Library internals</a></li><li><a href="extensions.html">Writing extensions</a></li><li><a href="contribs.html">Contributions</a></li><li><a href="EXSLT/index.html" style="font-weight:bold">libexslt</a></li><li><a href="xslt.html">flat page</a>, <a href="site.xsl">stylesheet</a></li><li><a href="html/index.html" style="font-weight:bold">API Menu</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>Related links</b></center></td></tr><tr><td bgcolor="#fffacd"><ul><li><a href="tutorial/libxslttutorial.html">Tutorial</a>,
           <a href="tutorial2/libxslt_pipes.html">Tutorial2</a></li><li><a href="xsltproc.html">Man page for xsltproc</a></li><li><a href="http://mail.gnome.org/archives/xslt/">Mail archive</a></li><li><a href="http://xmlsoft.org/">XML libxml2</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://garypennington.net/libxml2/">Solaris binaries</a></li><li><a href="http://www.explain.com.au/oss/libxml2xslt.html">MacOsX binaries</a></li><li><a href="http://bugzilla.gnome.org/buglist.cgi?product=libxslt">Bug Tracker</a></li><li><a href="http://codespeak.net/lxml/">lxml Python bindings</a></li><li><a href="http://cpan.uwinnipeg.ca/dist/XML-LibXSLT">Perl XSLT bindings</a></li><li><a href="http://www.zend.com/php5/articles/php5-xmlphp.php#Heading17">XSLT with PHP</a></li><li><a href="http://www.mod-xslt2.com/">Apache module</a></li><li><a href="http://sourceforge.net/projects/libxml2-pas/">Pascal bindings</a></li><li><a href="http://xsldbg.sourceforge.net/">Xsldbg Debugger</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></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 align="center"><a href="APIchunk0.html">A-I</a>
-<a href="APIchunk1.html">J-S</a>
-<a href="APIchunk2.html">T-a</a>
+<a href="APIchunk1.html">J-R</a>
+<a href="APIchunk2.html">S-a</a>
 <a href="APIchunk3.html">b-c</a>
 <a href="APIchunk4.html">d-e</a>
 <a href="APIchunk5.html">f-g</a>
@@ -64,6 +64,7 @@ A:link, A:visited, A:active { text-decoration: underline }
 </dd><dt>decimal</dt><dd><a href="html/libxslt-numbersInternals.html#_xsltFormatNumberInfo">_xsltFormatNumberInfo</a><br />
 <a href="html/libxslt-xsltInternals.html#xsltFormatNumberConversion">xsltFormatNumberConversion</a><br />
 </dd><dt>decimal-format</dt><dd><a href="html/libxslt-xsltInternals.html#xsltDecimalFormatGetByName">xsltDecimalFormatGetByName</a><br />
+<a href="html/libxslt-xsltInternals.html#xsltDecimalFormatGetByQName">xsltDecimalFormatGetByQName</a><br />
 </dd><dt>declaration</dt><dd><a href="html/libxslt-namespaces.html#xsltCopyNamespace">xsltCopyNamespace</a><br />
 <a href="html/libxslt-xsltutils.html#xsltGetCNsProp">xsltGetCNsProp</a><br />
 <a href="html/libxslt-namespaces.html#xsltGetNamespace">xsltGetNamespace</a><br />
@@ -118,6 +119,10 @@ A:link, A:visited, A:active { text-decoration: underline }
 </dd><dt>descriptor</dt><dd><a href="html/libxslt-xsltutils.html#xsltSaveResultToFd">xsltSaveResultToFd</a><br />
 </dd><dt>desired</dt><dd><a href="html/libxslt-documents.html#xsltFindDocument">xsltFindDocument</a><br />
 <a href="html/libxslt-extensions.html#xsltGetExtInfo">xsltGetExtInfo</a><br />
+</dd><dt>destroyed</dt><dd><a href="html/libxslt-variables.html#XSLT_RVT_FUNC_RESULT">XSLT_RVT_FUNC_RESULT</a><br />
+<a href="html/libxslt-variables.html#XSLT_RVT_LOCAL">XSLT_RVT_LOCAL</a><br />
+<a href="html/libxslt-variables.html#XSLT_RVT_VARIABLE">XSLT_RVT_VARIABLE</a><br />
+<a href="html/libxslt-xsltInternals.html#xsltFlagRVTs">xsltFlagRVTs</a><br />
 </dd><dt>details</dt><dd><a href="html/libxslt-variables.html#xsltEvalOneUserParam">xsltEvalOneUserParam</a><br />
 </dd><dt>detected</dt><dd><a href="html/libxslt-xsltutils.html#XSLT_STRANGE">XSLT_STRANGE</a><br />
 </dd><dt>dict</dt><dd><a href="html/libxslt-imports.html#xsltFindTemplate">xsltFindTemplate</a><br />
@@ -212,6 +217,7 @@ A:link, A:visited, A:active { text-decoration: underline }
 <a href="html/libxslt-transform.html#xsltRunStylesheetUser">xsltRunStylesheetUser</a><br />
 </dd><dt>encountering</dt><dd><a href="html/libxslt-xsltInternals.html#XML_CAST_FPTR">XML_CAST_FPTR</a><br />
 </dd><dt>end</dt><dd><a href="html/libxslt-xsltInternals.html#_xsltElemPreComp">_xsltElemPreComp</a><br />
+</dd><dt>ends</dt><dd><a href="html/libxslt-variables.html#XSLT_RVT_LOCAL">XSLT_RVT_LOCAL</a><br />
 </dd><dt>engine</dt><dd><a href="html/libxslt-documents.html#xsltDocLoaderFunc">xsltDocLoaderFunc</a><br />
 <a href="html/libxslt-xsltutils.html#xsltSetCtxtParseOptions">xsltSetCtxtParseOptions</a><br />
 </dd><dt>entity</dt><dd><a href="html/libxslt-xsltutils.html#xsltGetCNsProp">xsltGetCNsProp</a><br />
@@ -265,7 +271,8 @@ A:link, A:visited, A:active { text-decoration: underline }
 </dd><dt>existing</dt><dd><a href="html/libxslt-extensions.html#xsltInitElemPreComp">xsltInitElemPreComp</a><br />
 </dd><dt>exists</dt><dd><a href="html/libxslt-xsltInternals.html#xsltParseStylesheetImportedDoc">xsltParseStylesheetImportedDoc</a><br />
 </dd><dt>exit</dt><dd><a href="html/libxslt-xsltInternals.html#xsltRegisterTmpRVT">xsltRegisterTmpRVT</a><br />
-</dd><dt>exiting</dt><dd><a href="html/libxslt-transform.html#xsltApplyOneTemplate">xsltApplyOneTemplate</a><br />
+</dd><dt>exiting</dt><dd><a href="html/libxslt-variables.html#XSLT_RVT_FUNC_RESULT">XSLT_RVT_FUNC_RESULT</a><br />
+<a href="html/libxslt-transform.html#xsltApplyOneTemplate">xsltApplyOneTemplate</a><br />
 </dd><dt>exits</dt><dd><a href="html/libxslt-xsltInternals.html#_xsltTransformContext">_xsltTransformContext</a><br />
 <a href="html/libxslt-transform.html#xsltApplyOneTemplate">xsltApplyOneTemplate</a><br />
 <a href="html/libxslt-xsltInternals.html#xsltExtensionInstructionResultFinalize">xsltExtensionInstructionResultFinalize</a><br />
@@ -300,7 +307,6 @@ A:link, A:visited, A:active { text-decoration: underline }
 </dd><dt>extending</dt><dd><a href="html/libxslt-extensions.html#xsltInitElemPreComp">xsltInitElemPreComp</a><br />
 </dd><dt>extension-element-prefixes</dt><dd><a href="html/libxslt-xsltInternals.html#_xsltPrincipalStylesheetData">_xsltPrincipalStylesheetData</a><br />
 </dd><dt>extensions</dt><dd><a href="html/libxslt-extra.html#XSLT_LIBXSLT_NAMESPACE">XSLT_LIBXSLT_NAMESPACE</a><br />
-<a href="html/libxslt-extra.html#XSLT_NORM_SAXON_NAMESPACE">XSLT_NORM_SAXON_NAMESPACE</a><br />
 <a href="html/libxslt-extra.html#XSLT_SAXON_NAMESPACE">XSLT_SAXON_NAMESPACE</a><br />
 <a href="html/libxslt-extra.html#XSLT_XALAN_NAMESPACE">XSLT_XALAN_NAMESPACE</a><br />
 <a href="html/libxslt-extra.html#XSLT_XT_NAMESPACE">XSLT_XT_NAMESPACE</a><br />
@@ -326,8 +332,8 @@ A:link, A:visited, A:active { text-decoration: underline }
 <a href="html/libxslt-xsltInternals.html#xsltLoadStylesheetPI">xsltLoadStylesheetPI</a><br />
 </dd><dt>extras</dt><dd><a href="html/libxslt-xsltInternals.html#_xsltTransformContext">_xsltTransformContext</a><br />
 </dd></dl><h2 align="center"><a href="APIchunk0.html">A-I</a>
-<a href="APIchunk1.html">J-S</a>
-<a href="APIchunk2.html">T-a</a>
+<a href="APIchunk1.html">J-R</a>
+<a href="APIchunk2.html">S-a</a>
 <a href="APIchunk3.html">b-c</a>
 <a href="APIchunk4.html">d-e</a>
 <a href="APIchunk5.html">f-g</a>
index 414ae5c..4b19860 100644 (file)
@@ -9,8 +9,8 @@ H3 {font-family: Verdana,Arial,Helvetica}
 A:link, A:visited, A:active { text-decoration: underline }
     </style><title>API Alphabetic Index f-g for libxslt</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/XSLT/"><img src="Libxslt-Logo-180x168.gif" alt="Made with Libxslt 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 XSLT C library for GNOME</h1><h2>API Alphabetic Index f-g for libxslt</h2></td></tr></table></td></tr></table></td></tr></table><table border="0" cellpadding="4" cellspacing="0" width="100%" align="center"><tr><td bgcolor="#8b7765"><table border="0" cellspacing="0" cellpadding="2" width="100%"><tr><td valign="top" width="200" bgcolor="#8b7765"><table border="0" cellspacing="0" cellpadding="1" width="100%" bgcolor="#000000"><tr><td><table width="100%" border="0" cellspacing="1" cellpadding="3"><tr><td colspan="1" bgcolor="#eecfa1" align="center"><center><b>Main Menu</b></center></td></tr><tr><td bgcolor="#fffacd"><form action="search.php" enctype="application/x-www-form-urlencoded" method="get"><input name="query" type="text" size="20" value="" /><input name="submit" type="submit" value="Search ..." /></form><ul><li><a href="index.html">Home</a></li><li><a href="intro.html">Introduction</a></li><li><a href="docs.html">Documentation</a></li><li><a href="bugs.html">Reporting bugs and getting help</a></li><li><a href="help.html">How to help</a></li><li><a href="downloads.html">Downloads</a></li><li><a href="FAQ.html">FAQ</a></li><li><a href="news.html">News</a></li><li><a href="xsltproc2.html">The xsltproc tool</a></li><li><a href="docbook.html">DocBook</a></li><li><a href="API.html">The programming API</a></li><li><a href="python.html">Python and bindings</a></li><li><a href="internals.html">Library internals</a></li><li><a href="extensions.html">Writing extensions</a></li><li><a href="contribs.html">Contributions</a></li><li><a href="EXSLT/index.html" style="font-weight:bold">libexslt</a></li><li><a href="xslt.html">flat page</a>, <a href="site.xsl">stylesheet</a></li><li><a href="html/index.html" style="font-weight:bold">API Menu</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>Related links</b></center></td></tr><tr><td bgcolor="#fffacd"><ul><li><a href="tutorial/libxslttutorial.html">Tutorial</a>,
           <a href="tutorial2/libxslt_pipes.html">Tutorial2</a></li><li><a href="xsltproc.html">Man page for xsltproc</a></li><li><a href="http://mail.gnome.org/archives/xslt/">Mail archive</a></li><li><a href="http://xmlsoft.org/">XML libxml2</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://garypennington.net/libxml2/">Solaris binaries</a></li><li><a href="http://www.explain.com.au/oss/libxml2xslt.html">MacOsX binaries</a></li><li><a href="http://bugzilla.gnome.org/buglist.cgi?product=libxslt">Bug Tracker</a></li><li><a href="http://codespeak.net/lxml/">lxml Python bindings</a></li><li><a href="http://cpan.uwinnipeg.ca/dist/XML-LibXSLT">Perl XSLT bindings</a></li><li><a href="http://www.zend.com/php5/articles/php5-xmlphp.php#Heading17">XSLT with PHP</a></li><li><a href="http://www.mod-xslt2.com/">Apache module</a></li><li><a href="http://sourceforge.net/projects/libxml2-pas/">Pascal bindings</a></li><li><a href="http://xsldbg.sourceforge.net/">Xsldbg Debugger</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></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 align="center"><a href="APIchunk0.html">A-I</a>
-<a href="APIchunk1.html">J-S</a>
-<a href="APIchunk2.html">T-a</a>
+<a href="APIchunk1.html">J-R</a>
+<a href="APIchunk2.html">S-a</a>
 <a href="APIchunk3.html">b-c</a>
 <a href="APIchunk4.html">d-e</a>
 <a href="APIchunk5.html">f-g</a>
@@ -68,6 +68,7 @@ A:link, A:visited, A:active { text-decoration: underline }
 <a href="html/libxslt-namespaces.html#xsltGetPlainNamespace">xsltGetPlainNamespace</a><br />
 </dd><dt>flag</dt><dd><a href="html/libxslt-xsltutils.html#XSLT_STRANGE">XSLT_STRANGE</a><br />
 <a href="html/libxslt-xsltutils.html#XSLT_TODO">XSLT_TODO</a><br />
+<a href="html/libxslt-xsltInternals.html#xsltFlagRVTs">xsltFlagRVTs</a><br />
 </dd><dt>flags</dt><dd><a href="html/libxslt-xsltutils.html#xsltXPathCompileFlags">xsltXPathCompileFlags</a><br />
 </dd><dt>following</dt><dd><a href="html/libxslt-transform.html#xsltRunStylesheet">xsltRunStylesheet</a><br />
 <a href="html/libxslt-transform.html#xsltRunStylesheetUser">xsltRunStylesheetUser</a><br />
@@ -125,6 +126,7 @@ A:link, A:visited, A:active { text-decoration: underline }
 <a href="html/libxslt-xsltInternals.html#_xsltTransformContext">_xsltTransformContext</a><br />
 <a href="html/libxslt-xsltInternals.html#xsltExtensionInstructionResultFinalize">xsltExtensionInstructionResultFinalize</a><br />
 <a href="html/libxslt-xsltInternals.html#xsltExtensionInstructionResultRegister">xsltExtensionInstructionResultRegister</a><br />
+<a href="html/libxslt-xsltInternals.html#xsltFlagRVTs">xsltFlagRVTs</a><br />
 </dd><dt>free</dt><dd><a href="html/libxslt-xsltInternals.html#XSLT_RUNTIME_EXTRA_FREE">XSLT_RUNTIME_EXTRA_FREE</a><br />
 <a href="html/libxslt-transform.html#xsltApplyOneTemplate">xsltApplyOneTemplate</a><br />
 <a href="html/libxslt-xsltInternals.html#xsltElemPreCompDeallocator">xsltElemPreCompDeallocator</a><br />
@@ -150,6 +152,7 @@ A:link, A:visited, A:active { text-decoration: underline }
 <a href="html/libxslt-xsltlocale.html#xsltStrxfrm">xsltStrxfrm</a><br />
 </dd><dt>frees</dt><dd><a href="html/libxslt-xsltInternals.html#xsltReleaseRVT">xsltReleaseRVT</a><br />
 </dd><dt>full</dt><dd><a href="html/libxslt-xsltutils.html#xsltSplitQName">xsltSplitQName</a><br />
+</dd><dt>func:result</dt><dd><a href="html/libxslt-variables.html#XSLT_RVT_FUNC_RESULT">XSLT_RVT_FUNC_RESULT</a><br />
 </dd><dt>function-available</dt><dd><a href="html/libxslt-functions.html#xsltFunctionAvailableFunction">xsltFunctionAvailableFunction</a><br />
 </dd><dt>function-calling</dt><dd><a href="html/libxslt-xsltInternals.html#xsltExtensionInstructionResultFinalize">xsltExtensionInstructionResultFinalize</a><br />
 </dd><dt>functions</dt><dd><a href="html/libxslt-xsltInternals.html#XSLT_ITEM_COMPATIBILITY_FIELDS">XSLT_ITEM_COMPATIBILITY_FIELDS</a><br />
@@ -214,13 +217,15 @@ A:link, A:visited, A:active { text-decoration: underline }
 </dd><dt>gives</dt><dd><a href="html/libxslt-xsltutils.html#xsltTransformError">xsltTransformError</a><br />
 </dd><dt>giving</dt><dd><a href="html/libxslt-variables.html#xsltEvalOneUserParam">xsltEvalOneUserParam</a><br />
 <a href="html/libxslt-variables.html#xsltQuoteOneUserParam">xsltQuoteOneUserParam</a><br />
-</dd><dt>global</dt><dd><a href="html/libxslt-xsltInternals.html#_xsltElemPreComp">_xsltElemPreComp</a><br />
+</dd><dt>global</dt><dd><a href="html/libxslt-variables.html#XSLT_RVT_GLOBAL">XSLT_RVT_GLOBAL</a><br />
+<a href="html/libxslt-xsltInternals.html#_xsltElemPreComp">_xsltElemPreComp</a><br />
 <a href="html/libxslt-xsltInternals.html#_xsltTransformContext">_xsltTransformContext</a><br />
 <a href="html/libxslt-xslt.html#xsltCleanupGlobals">xsltCleanupGlobals</a><br />
 <a href="html/libxslt-xsltutils.html#xsltDoSortFunction">xsltDoSortFunction</a><br />
 <a href="html/libxslt-variables.html#xsltEvalGlobalVariables">xsltEvalGlobalVariables</a><br />
 <a href="html/libxslt-variables.html#xsltEvalOneUserParam">xsltEvalOneUserParam</a><br />
 <a href="html/libxslt-variables.html#xsltEvalUserParams">xsltEvalUserParams</a><br />
+<a href="html/libxslt-xsltInternals.html#xsltFlagRVTs">xsltFlagRVTs</a><br />
 <a href="html/libxslt-variables.html#xsltFreeGlobalVariables">xsltFreeGlobalVariables</a><br />
 <a href="html/libxslt-keys.html#xsltInitCtxtKeys">xsltInitCtxtKeys</a><br />
 <a href="html/libxslt-extensions.html#xsltInitGlobals">xsltInitGlobals</a><br />
@@ -228,14 +233,15 @@ A:link, A:visited, A:active { text-decoration: underline }
 <a href="html/libxslt-variables.html#xsltQuoteOneUserParam">xsltQuoteOneUserParam</a><br />
 <a href="html/libxslt-xsltutils.html#xsltSetCtxtSortFunc">xsltSetCtxtSortFunc</a><br />
 <a href="html/libxslt-xsltutils.html#xsltSetSortFunc">xsltSetSortFunc</a><br />
+</dd><dt>goes</dt><dd><a href="html/libxslt-variables.html#XSLT_RVT_VARIABLE">XSLT_RVT_VARIABLE</a><br />
 </dd><dt>goto</dt><dd><a href="html/libxslt-xsltInternals.html#CHECK_STOPPEDE">CHECK_STOPPEDE</a><br />
 </dd><dt>grafted</dt><dd><a href="html/libxslt-templates.html#xsltAttrListTemplateProcess">xsltAttrListTemplateProcess</a><br />
 <a href="html/libxslt-templates.html#xsltAttrTemplateProcess">xsltAttrTemplateProcess</a><br />
 </dd><dt>group</dt><dd><a href="html/libxslt-numbersInternals.html#_xsltFormatNumberInfo">_xsltFormatNumberInfo</a><br />
 </dd><dt>grouping</dt><dd><a href="html/libxslt-xsltInternals.html#xsltFormatNumberConversion">xsltFormatNumberConversion</a><br />
 </dd></dl><h2 align="center"><a href="APIchunk0.html">A-I</a>
-<a href="APIchunk1.html">J-S</a>
-<a href="APIchunk2.html">T-a</a>
+<a href="APIchunk1.html">J-R</a>
+<a href="APIchunk2.html">S-a</a>
 <a href="APIchunk3.html">b-c</a>
 <a href="APIchunk4.html">d-e</a>
 <a href="APIchunk5.html">f-g</a>
index 3903db1..be1c01d 100644 (file)
@@ -9,8 +9,8 @@ H3 {font-family: Verdana,Arial,Helvetica}
 A:link, A:visited, A:active { text-decoration: underline }
     </style><title>API Alphabetic Index h-i for libxslt</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/XSLT/"><img src="Libxslt-Logo-180x168.gif" alt="Made with Libxslt 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 XSLT C library for GNOME</h1><h2>API Alphabetic Index h-i for libxslt</h2></td></tr></table></td></tr></table></td></tr></table><table border="0" cellpadding="4" cellspacing="0" width="100%" align="center"><tr><td bgcolor="#8b7765"><table border="0" cellspacing="0" cellpadding="2" width="100%"><tr><td valign="top" width="200" bgcolor="#8b7765"><table border="0" cellspacing="0" cellpadding="1" width="100%" bgcolor="#000000"><tr><td><table width="100%" border="0" cellspacing="1" cellpadding="3"><tr><td colspan="1" bgcolor="#eecfa1" align="center"><center><b>Main Menu</b></center></td></tr><tr><td bgcolor="#fffacd"><form action="search.php" enctype="application/x-www-form-urlencoded" method="get"><input name="query" type="text" size="20" value="" /><input name="submit" type="submit" value="Search ..." /></form><ul><li><a href="index.html">Home</a></li><li><a href="intro.html">Introduction</a></li><li><a href="docs.html">Documentation</a></li><li><a href="bugs.html">Reporting bugs and getting help</a></li><li><a href="help.html">How to help</a></li><li><a href="downloads.html">Downloads</a></li><li><a href="FAQ.html">FAQ</a></li><li><a href="news.html">News</a></li><li><a href="xsltproc2.html">The xsltproc tool</a></li><li><a href="docbook.html">DocBook</a></li><li><a href="API.html">The programming API</a></li><li><a href="python.html">Python and bindings</a></li><li><a href="internals.html">Library internals</a></li><li><a href="extensions.html">Writing extensions</a></li><li><a href="contribs.html">Contributions</a></li><li><a href="EXSLT/index.html" style="font-weight:bold">libexslt</a></li><li><a href="xslt.html">flat page</a>, <a href="site.xsl">stylesheet</a></li><li><a href="html/index.html" style="font-weight:bold">API Menu</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>Related links</b></center></td></tr><tr><td bgcolor="#fffacd"><ul><li><a href="tutorial/libxslttutorial.html">Tutorial</a>,
           <a href="tutorial2/libxslt_pipes.html">Tutorial2</a></li><li><a href="xsltproc.html">Man page for xsltproc</a></li><li><a href="http://mail.gnome.org/archives/xslt/">Mail archive</a></li><li><a href="http://xmlsoft.org/">XML libxml2</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://garypennington.net/libxml2/">Solaris binaries</a></li><li><a href="http://www.explain.com.au/oss/libxml2xslt.html">MacOsX binaries</a></li><li><a href="http://bugzilla.gnome.org/buglist.cgi?product=libxslt">Bug Tracker</a></li><li><a href="http://codespeak.net/lxml/">lxml Python bindings</a></li><li><a href="http://cpan.uwinnipeg.ca/dist/XML-LibXSLT">Perl XSLT bindings</a></li><li><a href="http://www.zend.com/php5/articles/php5-xmlphp.php#Heading17">XSLT with PHP</a></li><li><a href="http://www.mod-xslt2.com/">Apache module</a></li><li><a href="http://sourceforge.net/projects/libxml2-pas/">Pascal bindings</a></li><li><a href="http://xsldbg.sourceforge.net/">Xsldbg Debugger</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></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 align="center"><a href="APIchunk0.html">A-I</a>
-<a href="APIchunk1.html">J-S</a>
-<a href="APIchunk2.html">T-a</a>
+<a href="APIchunk1.html">J-R</a>
+<a href="APIchunk2.html">S-a</a>
 <a href="APIchunk3.html">b-c</a>
 <a href="APIchunk4.html">d-e</a>
 <a href="APIchunk5.html">f-g</a>
@@ -131,6 +131,7 @@ A:link, A:visited, A:active { text-decoration: underline }
 <a href="html/libxslt-transform.html#xsltCopyOf">xsltCopyOf</a><br />
 <a href="html/libxslt-transform.html#xsltDocumentElem">xsltDocumentElem</a><br />
 <a href="html/libxslt-transform.html#xsltElement">xsltElement</a><br />
+<a href="html/libxslt-xsltInternals.html#xsltFlagRVTs">xsltFlagRVTs</a><br />
 <a href="html/libxslt-transform.html#xsltForEach">xsltForEach</a><br />
 <a href="html/libxslt-transform.html#xsltIf">xsltIf</a><br />
 <a href="html/libxslt-xsltInternals.html#xsltInitCtxtKey">xsltInitCtxtKey</a><br />
@@ -175,11 +176,13 @@ A:link, A:visited, A:active { text-decoration: underline }
 <a href="html/libxslt-xsltInternals.html#xsltTransformFunction">xsltTransformFunction</a><br />
 </dd><dt>insertion</dt><dd><a href="html/libxslt-xsltInternals.html#_xsltTransformContext">_xsltTransformContext</a><br />
 </dd><dt>inspected</dt><dd><a href="html/libxslt-xsltInternals.html#xsltExtensionInstructionResultRegister">xsltExtensionInstructionResultRegister</a><br />
+<a href="html/libxslt-xsltInternals.html#xsltFlagRVTs">xsltFlagRVTs</a><br />
 </dd><dt>instances</dt><dd><a href="html/libxslt-xsltInternals.html#xsltFormatNumberConversion">xsltFormatNumberConversion</a><br />
 </dd><dt>instantiated</dt><dd><a href="html/libxslt-xsltInternals.html#xsltRegisterTmpRVT">xsltRegisterTmpRVT</a><br />
 </dd><dt>instead</dt><dd><a href="html/libxslt-extra.html#xsltRegisterExtras">xsltRegisterExtras</a><br />
 <a href="html/libxslt-xsltInternals.html#xsltRegisterTmpRVT">xsltRegisterTmpRVT</a><br />
-</dd><dt>instructions</dt><dd><a href="html/libxslt-xsltInternals.html#_xsltTemplate">_xsltTemplate</a><br />
+</dd><dt>instructions</dt><dd><a href="html/libxslt-variables.html#XSLT_RVT_LOCAL">XSLT_RVT_LOCAL</a><br />
+<a href="html/libxslt-xsltInternals.html#_xsltTemplate">_xsltTemplate</a><br />
 <a href="html/libxslt-transform.html#xsltApplyOneTemplate">xsltApplyOneTemplate</a><br />
 <a href="html/libxslt-xsltInternals.html#xsltParseAnyXSLTElem">xsltParseAnyXSLTElem</a><br />
 </dd><dt>integer</dt><dd><a href="html/libxslt-numbersInternals.html#_xsltFormatNumberInfo">_xsltFormatNumberInfo</a><br />
@@ -218,6 +221,7 @@ A:link, A:visited, A:active { text-decoration: underline }
 </dd><dt>into</dt><dd><a href="html/libxslt-xsltutils.html#xsltSetDebuggerCallbacks">xsltSetDebuggerCallbacks</a><br />
 <a href="html/libxslt-xsltutils.html#xsltSplitQName">xsltSplitQName</a><br />
 </dd><dt>invoking</dt><dd><a href="html/libxslt-namespaces.html#xsltGetSpecialNamespace">xsltGetSpecialNamespace</a><br />
+</dd><dt>isn</dt><dd><a href="html/libxslt-xsltInternals.html#xsltExtensionInstructionResultRegister">xsltExtensionInstructionResultRegister</a><br />
 </dd><dt>issues</dt><dd><a href="html/libxslt-xsltInternals.html#_xsltTransformContext">_xsltTransformContext</a><br />
 </dd><dt>item</dt><dd><a href="html/libxslt-xsltInternals.html#_xsltEffectiveNs">_xsltEffectiveNs</a><br />
 <a href="html/libxslt-xsltInternals.html#_xsltElemPreComp">_xsltElemPreComp</a><br />
@@ -231,6 +235,7 @@ A:link, A:visited, A:active { text-decoration: underline }
 </dd><dt>its</dt><dd><a href="html/libxslt-xsltInternals.html#xsltAllocateExtra">xsltAllocateExtra</a><br />
 <a href="html/libxslt-xsltInternals.html#xsltAllocateExtraCtxt">xsltAllocateExtraCtxt</a><br />
 <a href="html/libxslt-transform.html#xsltApplyStylesheetUser">xsltApplyStylesheetUser</a><br />
+<a href="html/libxslt-xsltInternals.html#xsltFlagRVTs">xsltFlagRVTs</a><br />
 <a href="html/libxslt-variables.html#xsltFreeGlobalVariables">xsltFreeGlobalVariables</a><br />
 <a href="html/libxslt-namespaces.html#xsltGetNamespace">xsltGetNamespace</a><br />
 <a href="html/libxslt-variables.html#xsltParseGlobalParam">xsltParseGlobalParam</a><br />
@@ -238,8 +243,8 @@ A:link, A:visited, A:active { text-decoration: underline }
 <a href="html/libxslt-variables.html#xsltParseStylesheetVariable">xsltParseStylesheetVariable</a><br />
 </dd><dt>itself</dt><dd><a href="html/libxslt-xsltInternals.html#xsltLoadStylesheetPI">xsltLoadStylesheetPI</a><br />
 </dd></dl><h2 align="center"><a href="APIchunk0.html">A-I</a>
-<a href="APIchunk1.html">J-S</a>
-<a href="APIchunk2.html">T-a</a>
+<a href="APIchunk1.html">J-R</a>
+<a href="APIchunk2.html">S-a</a>
 <a href="APIchunk3.html">b-c</a>
 <a href="APIchunk4.html">d-e</a>
 <a href="APIchunk5.html">f-g</a>
index 311581f..6a0cf6f 100644 (file)
@@ -9,8 +9,8 @@ H3 {font-family: Verdana,Arial,Helvetica}
 A:link, A:visited, A:active { text-decoration: underline }
     </style><title>API Alphabetic Index j-m for libxslt</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/XSLT/"><img src="Libxslt-Logo-180x168.gif" alt="Made with Libxslt 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 XSLT C library for GNOME</h1><h2>API Alphabetic Index j-m for libxslt</h2></td></tr></table></td></tr></table></td></tr></table><table border="0" cellpadding="4" cellspacing="0" width="100%" align="center"><tr><td bgcolor="#8b7765"><table border="0" cellspacing="0" cellpadding="2" width="100%"><tr><td valign="top" width="200" bgcolor="#8b7765"><table border="0" cellspacing="0" cellpadding="1" width="100%" bgcolor="#000000"><tr><td><table width="100%" border="0" cellspacing="1" cellpadding="3"><tr><td colspan="1" bgcolor="#eecfa1" align="center"><center><b>Main Menu</b></center></td></tr><tr><td bgcolor="#fffacd"><form action="search.php" enctype="application/x-www-form-urlencoded" method="get"><input name="query" type="text" size="20" value="" /><input name="submit" type="submit" value="Search ..." /></form><ul><li><a href="index.html">Home</a></li><li><a href="intro.html">Introduction</a></li><li><a href="docs.html">Documentation</a></li><li><a href="bugs.html">Reporting bugs and getting help</a></li><li><a href="help.html">How to help</a></li><li><a href="downloads.html">Downloads</a></li><li><a href="FAQ.html">FAQ</a></li><li><a href="news.html">News</a></li><li><a href="xsltproc2.html">The xsltproc tool</a></li><li><a href="docbook.html">DocBook</a></li><li><a href="API.html">The programming API</a></li><li><a href="python.html">Python and bindings</a></li><li><a href="internals.html">Library internals</a></li><li><a href="extensions.html">Writing extensions</a></li><li><a href="contribs.html">Contributions</a></li><li><a href="EXSLT/index.html" style="font-weight:bold">libexslt</a></li><li><a href="xslt.html">flat page</a>, <a href="site.xsl">stylesheet</a></li><li><a href="html/index.html" style="font-weight:bold">API Menu</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>Related links</b></center></td></tr><tr><td bgcolor="#fffacd"><ul><li><a href="tutorial/libxslttutorial.html">Tutorial</a>,
           <a href="tutorial2/libxslt_pipes.html">Tutorial2</a></li><li><a href="xsltproc.html">Man page for xsltproc</a></li><li><a href="http://mail.gnome.org/archives/xslt/">Mail archive</a></li><li><a href="http://xmlsoft.org/">XML libxml2</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://garypennington.net/libxml2/">Solaris binaries</a></li><li><a href="http://www.explain.com.au/oss/libxml2xslt.html">MacOsX binaries</a></li><li><a href="http://bugzilla.gnome.org/buglist.cgi?product=libxslt">Bug Tracker</a></li><li><a href="http://codespeak.net/lxml/">lxml Python bindings</a></li><li><a href="http://cpan.uwinnipeg.ca/dist/XML-LibXSLT">Perl XSLT bindings</a></li><li><a href="http://www.zend.com/php5/articles/php5-xmlphp.php#Heading17">XSLT with PHP</a></li><li><a href="http://www.mod-xslt2.com/">Apache module</a></li><li><a href="http://sourceforge.net/projects/libxml2-pas/">Pascal bindings</a></li><li><a href="http://xsldbg.sourceforge.net/">Xsldbg Debugger</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></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 align="center"><a href="APIchunk0.html">A-I</a>
-<a href="APIchunk1.html">J-S</a>
-<a href="APIchunk2.html">T-a</a>
+<a href="APIchunk1.html">J-R</a>
+<a href="APIchunk2.html">S-a</a>
 <a href="APIchunk3.html">b-c</a>
 <a href="APIchunk4.html">d-e</a>
 <a href="APIchunk5.html">f-g</a>
@@ -57,6 +57,7 @@ A:link, A:visited, A:active { text-decoration: underline }
 <a href="html/libxslt-transform.html#xsltRunStylesheet">xsltRunStylesheet</a><br />
 <a href="html/libxslt-transform.html#xsltRunStylesheetUser">xsltRunStylesheetUser</a><br />
 </dd><dt>leaks</dt><dd><a href="html/libxslt-templates.html#xsltAttrListTemplateProcess">xsltAttrListTemplateProcess</a><br />
+</dd><dt>leaving</dt><dd><a href="html/libxslt-xsltInternals.html#xsltFlagRVTs">xsltFlagRVTs</a><br />
 </dd><dt>left</dt><dd><a href="html/libxslt-transform.html#xsltApplyOneTemplate">xsltApplyOneTemplate</a><br />
 </dd><dt>len</dt><dd><a href="html/libxslt-xsltutils.html#xsltGetUTF8Char">xsltGetUTF8Char</a><br />
 </dd><dt>level</dt><dd><a href="html/libxslt-xsltInternals.html#_xsltTransformContext">_xsltTransformContext</a><br />
@@ -74,6 +75,8 @@ A:link, A:visited, A:active { text-decoration: underline }
 <a href="html/libxslt-xsltutils.html#xsltXPathCompileFlags">xsltXPathCompileFlags</a><br />
 </dd><dt>libxslt</dt><dd><a href="html/libxslt-extra.html#XSLT_LIBXSLT_NAMESPACE">XSLT_LIBXSLT_NAMESPACE</a><br />
 <a href="html/libxslt-xsltInternals.html#XSLT_REFACTORED_VARS">XSLT_REFACTORED_VARS</a><br />
+<a href="html/libxslt-xsltInternals.html#xsltExtensionInstructionResultFinalize">xsltExtensionInstructionResultFinalize</a><br />
+<a href="html/libxslt-xsltInternals.html#xsltExtensionInstructionResultRegister">xsltExtensionInstructionResultRegister</a><br />
 <a href="html/libxslt-extra.html#xsltFunctionNodeSet">xsltFunctionNodeSet</a><br />
 </dd><dt>lifespan</dt><dd><a href="html/libxslt-xsltutils.html#xsltGetQNameURI">xsltGetQNameURI</a><br />
 </dd><dt>lifetime</dt><dd><a href="html/libxslt-xsltInternals.html#_xsltStackElem">_xsltStackElem</a><br />
@@ -104,10 +107,12 @@ A:link, A:visited, A:active { text-decoration: underline }
 <a href="html/libxslt-documents.html#xsltDocLoaderFunc">xsltDocLoaderFunc</a><br />
 <a href="html/libxslt-xsltutils.html#xsltSetCtxtParseOptions">xsltSetCtxtParseOptions</a><br />
 <a href="html/libxslt-documents.html#xsltSetLoaderFunc">xsltSetLoaderFunc</a><br />
-</dd><dt>local</dt><dd><a href="html/libxslt-xsltInternals.html#_xsltCompilerCtxt">_xsltCompilerCtxt</a><br />
+</dd><dt>local</dt><dd><a href="html/libxslt-variables.html#XSLT_RVT_VARIABLE">XSLT_RVT_VARIABLE</a><br />
+<a href="html/libxslt-xsltInternals.html#_xsltCompilerCtxt">_xsltCompilerCtxt</a><br />
 <a href="html/libxslt-xsltInternals.html#_xsltStackElem">_xsltStackElem</a><br />
 <a href="html/libxslt-xsltInternals.html#_xsltTemplate">_xsltTemplate</a><br />
 <a href="html/libxslt-xsltInternals.html#_xsltTransformContext">_xsltTransformContext</a><br />
+<a href="html/libxslt-xsltInternals.html#xsltDecimalFormatGetByQName">xsltDecimalFormatGetByQName</a><br />
 <a href="html/libxslt-transform.html#xsltLocalVariablePush">xsltLocalVariablePush</a><br />
 <a href="html/libxslt-variables.html#xsltParseStylesheetParam">xsltParseStylesheetParam</a><br />
 <a href="html/libxslt-variables.html#xsltParseStylesheetVariable">xsltParseStylesheetVariable</a><br />
@@ -239,8 +244,8 @@ A:link, A:visited, A:active { text-decoration: underline }
 <a href="html/libxslt-templates.html#xsltEvalXPathStringNs">xsltEvalXPathStringNs</a><br />
 <a href="html/libxslt-xsltlocale.html#xsltStrxfrm">xsltStrxfrm</a><br />
 </dd></dl><h2 align="center"><a href="APIchunk0.html">A-I</a>
-<a href="APIchunk1.html">J-S</a>
-<a href="APIchunk2.html">T-a</a>
+<a href="APIchunk1.html">J-R</a>
+<a href="APIchunk2.html">S-a</a>
 <a href="APIchunk3.html">b-c</a>
 <a href="APIchunk4.html">d-e</a>
 <a href="APIchunk5.html">f-g</a>
index 741f7ea..bf65f62 100644 (file)
@@ -9,8 +9,8 @@ H3 {font-family: Verdana,Arial,Helvetica}
 A:link, A:visited, A:active { text-decoration: underline }
     </style><title>API Alphabetic Index n-o for libxslt</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/XSLT/"><img src="Libxslt-Logo-180x168.gif" alt="Made with Libxslt 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 XSLT C library for GNOME</h1><h2>API Alphabetic Index n-o for libxslt</h2></td></tr></table></td></tr></table></td></tr></table><table border="0" cellpadding="4" cellspacing="0" width="100%" align="center"><tr><td bgcolor="#8b7765"><table border="0" cellspacing="0" cellpadding="2" width="100%"><tr><td valign="top" width="200" bgcolor="#8b7765"><table border="0" cellspacing="0" cellpadding="1" width="100%" bgcolor="#000000"><tr><td><table width="100%" border="0" cellspacing="1" cellpadding="3"><tr><td colspan="1" bgcolor="#eecfa1" align="center"><center><b>Main Menu</b></center></td></tr><tr><td bgcolor="#fffacd"><form action="search.php" enctype="application/x-www-form-urlencoded" method="get"><input name="query" type="text" size="20" value="" /><input name="submit" type="submit" value="Search ..." /></form><ul><li><a href="index.html">Home</a></li><li><a href="intro.html">Introduction</a></li><li><a href="docs.html">Documentation</a></li><li><a href="bugs.html">Reporting bugs and getting help</a></li><li><a href="help.html">How to help</a></li><li><a href="downloads.html">Downloads</a></li><li><a href="FAQ.html">FAQ</a></li><li><a href="news.html">News</a></li><li><a href="xsltproc2.html">The xsltproc tool</a></li><li><a href="docbook.html">DocBook</a></li><li><a href="API.html">The programming API</a></li><li><a href="python.html">Python and bindings</a></li><li><a href="internals.html">Library internals</a></li><li><a href="extensions.html">Writing extensions</a></li><li><a href="contribs.html">Contributions</a></li><li><a href="EXSLT/index.html" style="font-weight:bold">libexslt</a></li><li><a href="xslt.html">flat page</a>, <a href="site.xsl">stylesheet</a></li><li><a href="html/index.html" style="font-weight:bold">API Menu</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>Related links</b></center></td></tr><tr><td bgcolor="#fffacd"><ul><li><a href="tutorial/libxslttutorial.html">Tutorial</a>,
           <a href="tutorial2/libxslt_pipes.html">Tutorial2</a></li><li><a href="xsltproc.html">Man page for xsltproc</a></li><li><a href="http://mail.gnome.org/archives/xslt/">Mail archive</a></li><li><a href="http://xmlsoft.org/">XML libxml2</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://garypennington.net/libxml2/">Solaris binaries</a></li><li><a href="http://www.explain.com.au/oss/libxml2xslt.html">MacOsX binaries</a></li><li><a href="http://bugzilla.gnome.org/buglist.cgi?product=libxslt">Bug Tracker</a></li><li><a href="http://codespeak.net/lxml/">lxml Python bindings</a></li><li><a href="http://cpan.uwinnipeg.ca/dist/XML-LibXSLT">Perl XSLT bindings</a></li><li><a href="http://www.zend.com/php5/articles/php5-xmlphp.php#Heading17">XSLT with PHP</a></li><li><a href="http://www.mod-xslt2.com/">Apache module</a></li><li><a href="http://sourceforge.net/projects/libxml2-pas/">Pascal bindings</a></li><li><a href="http://xsldbg.sourceforge.net/">Xsldbg Debugger</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></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 align="center"><a href="APIchunk0.html">A-I</a>
-<a href="APIchunk1.html">J-S</a>
-<a href="APIchunk2.html">T-a</a>
+<a href="APIchunk1.html">J-R</a>
+<a href="APIchunk2.html">S-a</a>
 <a href="APIchunk3.html">b-c</a>
 <a href="APIchunk4.html">d-e</a>
 <a href="APIchunk5.html">f-g</a>
@@ -24,7 +24,8 @@ A:link, A:visited, A:active { text-decoration: underline }
 <a href="APIchunk13.html">y-z</a>
 </h2><h2>Letter n:</h2><dl><dt>name=</dt><dd><a href="html/libxslt-xsltutils.html#xsltGetProfileInformation">xsltGetProfileInformation</a><br />
 </dd><dt>nameURI</dt><dd><a href="html/libxslt-imports.html#xsltFindTemplate">xsltFindTemplate</a><br />
-</dd><dt>named</dt><dd><a href="html/libxslt-imports.html#xsltFindTemplate">xsltFindTemplate</a><br />
+</dd><dt>named</dt><dd><a href="html/libxslt-xsltInternals.html#_xsltStylesheet">_xsltStylesheet</a><br />
+<a href="html/libxslt-imports.html#xsltFindTemplate">xsltFindTemplate</a><br />
 </dd><dt>names</dt><dd><a href="html/libxslt-xsltInternals.html#_xsltPrincipalStylesheetData">_xsltPrincipalStylesheetData</a><br />
 <a href="html/libxslt-transform.html#xsltApplyStylesheet">xsltApplyStylesheet</a><br />
 <a href="html/libxslt-transform.html#xsltApplyStylesheetUser">xsltApplyStylesheetUser</a><br />
@@ -48,6 +49,7 @@ A:link, A:visited, A:active { text-decoration: underline }
 <a href="html/libxslt-xsltInternals.html#xsltRestoreDocumentNamespaces">xsltRestoreDocumentNamespaces</a><br />
 </dd><dt>navigational</dt><dd><a href="html/libxslt-xsltInternals.html#XSLT_ITEM_NAVIGATION_FIELDS">XSLT_ITEM_NAVIGATION_FIELDS</a><br />
 </dd><dt>necessary</dt><dd><a href="html/libxslt-security.html#xsltCheckWrite">xsltCheckWrite</a><br />
+<a href="html/libxslt-xsltInternals.html#xsltExtensionInstructionResultRegister">xsltExtensionInstructionResultRegister</a><br />
 </dd><dt>need</dt><dd><a href="html/libxslt-xsltInternals.html#XSLT_ITEM_COMPATIBILITY_FIELDS">XSLT_ITEM_COMPATIBILITY_FIELDS</a><br />
 <a href="html/libxslt-xsltInternals.html#_xsltStyleItemDocument">_xsltStyleItemDocument</a><br />
 <a href="html/libxslt-xsltInternals.html#_xsltStylesheet">_xsltStylesheet</a><br />
@@ -71,6 +73,8 @@ A:link, A:visited, A:active { text-decoration: underline }
 </dd><dt>negative</dt><dd><a href="html/libxslt-xsltutils.html#xsltCalibrateAdjust">xsltCalibrateAdjust</a><br />
 <a href="html/libxslt-xsltInternals.html#xsltFormatNumberConversion">xsltFormatNumberConversion</a><br />
 </dd><dt>nested</dt><dd><a href="html/libxslt-xsltInternals.html#_xsltStylesheet">_xsltStylesheet</a><br />
+</dd><dt>newer</dt><dd><a href="html/libxslt-xsltInternals.html#xsltExtensionInstructionResultFinalize">xsltExtensionInstructionResultFinalize</a><br />
+<a href="html/libxslt-xsltInternals.html#xsltExtensionInstructionResultRegister">xsltExtensionInstructionResultRegister</a><br />
 </dd><dt>newly</dt><dd><a href="html/libxslt-transform.html#xsltCopyTextString">xsltCopyTextString</a><br />
 <a href="html/libxslt-xsltInternals.html#xsltExtensionInstructionResultRegister">xsltExtensionInstructionResultRegister</a><br />
 <a href="html/libxslt-xsltInternals.html#xsltNewStylesheet">xsltNewStylesheet</a><br />
@@ -135,6 +139,7 @@ A:link, A:visited, A:active { text-decoration: underline }
 </dd></dl><h2>Letter o:</h2><dl><dt>object</dt><dd><a href="html/libxslt-xsltInternals.html#XML_CAST_FPTR">XML_CAST_FPTR</a><br />
 <a href="html/libxslt-functions.html#xsltDocumentFunction">xsltDocumentFunction</a><br />
 <a href="html/libxslt-xsltInternals.html#xsltExtensionInstructionResultRegister">xsltExtensionInstructionResultRegister</a><br />
+<a href="html/libxslt-xsltInternals.html#xsltFlagRVTs">xsltFlagRVTs</a><br />
 <a href="html/libxslt-functions.html#xsltKeyFunction">xsltKeyFunction</a><br />
 <a href="html/libxslt-functions.html#xsltSystemPropertyFunction">xsltSystemPropertyFunction</a><br />
 <a href="html/libxslt-xsltutils.html#xsltXPathCompile">xsltXPathCompile</a><br />
@@ -225,7 +230,8 @@ A:link, A:visited, A:active { text-decoration: underline }
 <a href="html/libxslt-security.html#xsltSetCtxtSecurityPrefs">xsltSetCtxtSecurityPrefs</a><br />
 <a href="html/libxslt-security.html#xsltSetSecurityPrefs">xsltSetSecurityPrefs</a><br />
 </dd><dt>ouput</dt><dd><a href="html/libxslt-xsltInternals.html#xsltFormatNumberConversion">xsltFormatNumberConversion</a><br />
-</dd><dt>out</dt><dd><a href="html/libxslt-xsltutils.html#xsltSetGenericDebugFunc">xsltSetGenericDebugFunc</a><br />
+</dd><dt>out</dt><dd><a href="html/libxslt-variables.html#XSLT_RVT_VARIABLE">XSLT_RVT_VARIABLE</a><br />
+<a href="html/libxslt-xsltutils.html#xsltSetGenericDebugFunc">xsltSetGenericDebugFunc</a><br />
 <a href="html/libxslt-xsltutils.html#xsltSetGenericErrorFunc">xsltSetGenericErrorFunc</a><br />
 <a href="html/libxslt-xsltutils.html#xsltSetTransformErrorFunc">xsltSetTransformErrorFunc</a><br />
 </dd><dt>output</dt><dd><a href="html/libxslt-xsltInternals.html#_xsltStylesheet">_xsltStylesheet</a><br />
@@ -244,10 +250,11 @@ A:link, A:visited, A:active { text-decoration: underline }
 <a href="html/libxslt-templates.html#xsltAttrTemplateProcess">xsltAttrTemplateProcess</a><br />
 </dd><dt>overhead</dt><dd><a href="html/libxslt-xsltInternals.html#xsltRegisterTmpRVT">xsltRegisterTmpRVT</a><br />
 </dd><dt>own</dt><dd><a href="html/libxslt-transform.html#xsltApplyStylesheetUser">xsltApplyStylesheetUser</a><br />
+</dd><dt>ownership</dt><dd><a href="html/libxslt-xsltInternals.html#xsltFlagRVTs">xsltFlagRVTs</a><br />
 </dd><dt>owning</dt><dd><a href="html/libxslt-xsltInternals.html#_xsltCompilerNodeInfo">_xsltCompilerNodeInfo</a><br />
 </dd></dl><h2 align="center"><a href="APIchunk0.html">A-I</a>
-<a href="APIchunk1.html">J-S</a>
-<a href="APIchunk2.html">T-a</a>
+<a href="APIchunk1.html">J-R</a>
+<a href="APIchunk2.html">S-a</a>
 <a href="APIchunk3.html">b-c</a>
 <a href="APIchunk4.html">d-e</a>
 <a href="APIchunk5.html">f-g</a>
index ca83823..d639626 100644 (file)
@@ -9,8 +9,8 @@ H3 {font-family: Verdana,Arial,Helvetica}
 A:link, A:visited, A:active { text-decoration: underline }
     </style><title>API Alphabetic Index p-p for libxslt</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/XSLT/"><img src="Libxslt-Logo-180x168.gif" alt="Made with Libxslt 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 XSLT C library for GNOME</h1><h2>API Alphabetic Index p-p for libxslt</h2></td></tr></table></td></tr></table></td></tr></table><table border="0" cellpadding="4" cellspacing="0" width="100%" align="center"><tr><td bgcolor="#8b7765"><table border="0" cellspacing="0" cellpadding="2" width="100%"><tr><td valign="top" width="200" bgcolor="#8b7765"><table border="0" cellspacing="0" cellpadding="1" width="100%" bgcolor="#000000"><tr><td><table width="100%" border="0" cellspacing="1" cellpadding="3"><tr><td colspan="1" bgcolor="#eecfa1" align="center"><center><b>Main Menu</b></center></td></tr><tr><td bgcolor="#fffacd"><form action="search.php" enctype="application/x-www-form-urlencoded" method="get"><input name="query" type="text" size="20" value="" /><input name="submit" type="submit" value="Search ..." /></form><ul><li><a href="index.html">Home</a></li><li><a href="intro.html">Introduction</a></li><li><a href="docs.html">Documentation</a></li><li><a href="bugs.html">Reporting bugs and getting help</a></li><li><a href="help.html">How to help</a></li><li><a href="downloads.html">Downloads</a></li><li><a href="FAQ.html">FAQ</a></li><li><a href="news.html">News</a></li><li><a href="xsltproc2.html">The xsltproc tool</a></li><li><a href="docbook.html">DocBook</a></li><li><a href="API.html">The programming API</a></li><li><a href="python.html">Python and bindings</a></li><li><a href="internals.html">Library internals</a></li><li><a href="extensions.html">Writing extensions</a></li><li><a href="contribs.html">Contributions</a></li><li><a href="EXSLT/index.html" style="font-weight:bold">libexslt</a></li><li><a href="xslt.html">flat page</a>, <a href="site.xsl">stylesheet</a></li><li><a href="html/index.html" style="font-weight:bold">API Menu</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>Related links</b></center></td></tr><tr><td bgcolor="#fffacd"><ul><li><a href="tutorial/libxslttutorial.html">Tutorial</a>,
           <a href="tutorial2/libxslt_pipes.html">Tutorial2</a></li><li><a href="xsltproc.html">Man page for xsltproc</a></li><li><a href="http://mail.gnome.org/archives/xslt/">Mail archive</a></li><li><a href="http://xmlsoft.org/">XML libxml2</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://garypennington.net/libxml2/">Solaris binaries</a></li><li><a href="http://www.explain.com.au/oss/libxml2xslt.html">MacOsX binaries</a></li><li><a href="http://bugzilla.gnome.org/buglist.cgi?product=libxslt">Bug Tracker</a></li><li><a href="http://codespeak.net/lxml/">lxml Python bindings</a></li><li><a href="http://cpan.uwinnipeg.ca/dist/XML-LibXSLT">Perl XSLT bindings</a></li><li><a href="http://www.zend.com/php5/articles/php5-xmlphp.php#Heading17">XSLT with PHP</a></li><li><a href="http://www.mod-xslt2.com/">Apache module</a></li><li><a href="http://sourceforge.net/projects/libxml2-pas/">Pascal bindings</a></li><li><a href="http://xsldbg.sourceforge.net/">Xsldbg Debugger</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></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 align="center"><a href="APIchunk0.html">A-I</a>
-<a href="APIchunk1.html">J-S</a>
-<a href="APIchunk2.html">T-a</a>
+<a href="APIchunk1.html">J-R</a>
+<a href="APIchunk2.html">S-a</a>
 <a href="APIchunk3.html">b-c</a>
 <a href="APIchunk4.html">d-e</a>
 <a href="APIchunk5.html">f-g</a>
@@ -81,11 +81,16 @@ A:link, A:visited, A:active { text-decoration: underline }
 <a href="html/libxslt-xsltutils.html#xsltSetGenericDebugFunc">xsltSetGenericDebugFunc</a><br />
 <a href="html/libxslt-xsltutils.html#xsltSetGenericErrorFunc">xsltSetGenericErrorFunc</a><br />
 </dd><dt>part</dt><dd><a href="html/libxslt-xsltInternals.html#XSLT_REFACTORED_VARS">XSLT_REFACTORED_VARS</a><br />
+<a href="html/libxslt-variables.html#XSLT_RVT_FUNC_RESULT">XSLT_RVT_FUNC_RESULT</a><br />
+<a href="html/libxslt-variables.html#XSLT_RVT_GLOBAL">XSLT_RVT_GLOBAL</a><br />
+<a href="html/libxslt-variables.html#XSLT_RVT_VARIABLE">XSLT_RVT_VARIABLE</a><br />
 <a href="html/libxslt-xsltInternals.html#_xsltElemPreComp">_xsltElemPreComp</a><br />
 <a href="html/libxslt-numbersInternals.html#_xsltFormatNumberInfo">_xsltFormatNumberInfo</a><br />
 <a href="html/libxslt-xsltInternals.html#_xsltStackElem">_xsltStackElem</a><br />
 <a href="html/libxslt-xsltInternals.html#_xsltTemplate">_xsltTemplate</a><br />
+<a href="html/libxslt-xsltInternals.html#xsltDecimalFormatGetByQName">xsltDecimalFormatGetByQName</a><br />
 <a href="html/libxslt-xsltInternals.html#xsltTransformFunction">xsltTransformFunction</a><br />
+</dd><dt>parts</dt><dd><a href="html/libxslt-xsltInternals.html#xsltFlagRVTs">xsltFlagRVTs</a><br />
 </dd><dt>pass</dt><dd><a href="html/libxslt-xslt.html#XSLT_PARSE_OPTIONS">XSLT_PARSE_OPTIONS</a><br />
 <a href="html/libxslt-templates.html#xsltAttrTemplateValueProcessNode">xsltAttrTemplateValueProcessNode</a><br />
 <a href="html/libxslt-templates.html#xsltEvalXPathStringNs">xsltEvalXPathStringNs</a><br />
@@ -259,8 +264,8 @@ A:link, A:visited, A:active { text-decoration: underline }
 </dd><dt>pushed</dt><dd><a href="html/libxslt-transform.html#xsltLocalVariablePush">xsltLocalVariablePush</a><br />
 </dd><dt>pushes</dt><dd><a href="html/libxslt-transform.html#xsltApplyOneTemplate">xsltApplyOneTemplate</a><br />
 </dd></dl><h2 align="center"><a href="APIchunk0.html">A-I</a>
-<a href="APIchunk1.html">J-S</a>
-<a href="APIchunk2.html">T-a</a>
+<a href="APIchunk1.html">J-R</a>
+<a href="APIchunk2.html">S-a</a>
 <a href="APIchunk3.html">b-c</a>
 <a href="APIchunk4.html">d-e</a>
 <a href="APIchunk5.html">f-g</a>
index af1d285..57db086 100644 (file)
@@ -55,6 +55,7 @@ A:link, A:visited, A:active { text-decoration: underline }
 </p><h2>Type xsltCompMatchPtr:</h2><p><a href="html/libxslt-pattern.html#xsltCompilePattern">xsltCompilePattern</a><br />
 </p><h2>Type xsltDebugTraceCodes:</h2><p><a href="html/libxslt-xsltutils.html#xsltDebugGetDefaultTrace">xsltDebugGetDefaultTrace</a><br />
 </p><h2>Type xsltDecimalFormatPtr:</h2><p><a href="html/libxslt-xsltInternals.html#xsltDecimalFormatGetByName">xsltDecimalFormatGetByName</a><br />
+<a href="html/libxslt-xsltInternals.html#xsltDecimalFormatGetByQName">xsltDecimalFormatGetByQName</a><br />
 </p><h2>Type xsltDocumentPtr:</h2><p><a href="html/libxslt-documents.html#xsltFindDocument">xsltFindDocument</a><br />
 <a href="html/libxslt-documents.html#xsltLoadDocument">xsltLoadDocument</a><br />
 <a href="html/libxslt-documents.html#xsltLoadStyleDocument">xsltLoadStyleDocument</a><br />
index 9510623..8437489 100644 (file)
@@ -68,7 +68,6 @@ A:link, A:visited, A:active { text-decoration: underline }
 <a href="html/libxslt-extensions.html#xsltUnregisterExtModuleTopLevel">xsltUnregisterExtModuleTopLevel</a><br />
 <a href="html/libxslt-extensions.html#xsltXPathGetTransformContext">xsltXPathGetTransformContext</a><br />
 </p><h2><a name="extra" id="extra">Module extra</a>:</h2><p><a href="html/libxslt-extra.html#XSLT_LIBXSLT_NAMESPACE">XSLT_LIBXSLT_NAMESPACE</a><br />
-<a href="html/libxslt-extra.html#XSLT_NORM_SAXON_NAMESPACE">XSLT_NORM_SAXON_NAMESPACE</a><br />
 <a href="html/libxslt-extra.html#XSLT_SAXON_NAMESPACE">XSLT_SAXON_NAMESPACE</a><br />
 <a href="html/libxslt-extra.html#XSLT_XALAN_NAMESPACE">XSLT_XALAN_NAMESPACE</a><br />
 <a href="html/libxslt-extra.html#XSLT_XT_NAMESPACE">XSLT_XT_NAMESPACE</a><br />
@@ -197,6 +196,10 @@ A:link, A:visited, A:active { text-decoration: underline }
 <a href="html/libxslt-transform.html#xsltText">xsltText</a><br />
 <a href="html/libxslt-transform.html#xsltValueOf">xsltValueOf</a><br />
 </p><h2><a name="variables" id="variables">Module variables</a>:</h2><p><a href="html/libxslt-variables.html#XSLT_REGISTER_VARIABLE_LOOKUP">XSLT_REGISTER_VARIABLE_LOOKUP</a><br />
+<a href="html/libxslt-variables.html#XSLT_RVT_FUNC_RESULT">XSLT_RVT_FUNC_RESULT</a><br />
+<a href="html/libxslt-variables.html#XSLT_RVT_GLOBAL">XSLT_RVT_GLOBAL</a><br />
+<a href="html/libxslt-variables.html#XSLT_RVT_LOCAL">XSLT_RVT_LOCAL</a><br />
+<a href="html/libxslt-variables.html#XSLT_RVT_VARIABLE">XSLT_RVT_VARIABLE</a><br />
 <a href="html/libxslt-variables.html#xsltAddStackElemList">xsltAddStackElemList</a><br />
 <a href="html/libxslt-variables.html#xsltEvalGlobalVariables">xsltEvalGlobalVariables</a><br />
 <a href="html/libxslt-variables.html#xsltEvalOneUserParam">xsltEvalOneUserParam</a><br />
@@ -341,6 +344,7 @@ A:link, A:visited, A:active { text-decoration: underline }
 <a href="html/libxslt-xsltInternals.html#xsltCreateRVT">xsltCreateRVT</a><br />
 <a href="html/libxslt-xsltInternals.html#xsltDecimalFormat">xsltDecimalFormat</a><br />
 <a href="html/libxslt-xsltInternals.html#xsltDecimalFormatGetByName">xsltDecimalFormatGetByName</a><br />
+<a href="html/libxslt-xsltInternals.html#xsltDecimalFormatGetByQName">xsltDecimalFormatGetByQName</a><br />
 <a href="html/libxslt-xsltInternals.html#xsltDecimalFormatPtr">xsltDecimalFormatPtr</a><br />
 <a href="html/libxslt-xsltInternals.html#xsltDocument">xsltDocument</a><br />
 <a href="html/libxslt-xsltInternals.html#xsltDocumentPtr">xsltDocumentPtr</a><br />
@@ -353,6 +357,7 @@ A:link, A:visited, A:active { text-decoration: underline }
 <a href="html/libxslt-xsltInternals.html#xsltEvalAVT">xsltEvalAVT</a><br />
 <a href="html/libxslt-xsltInternals.html#xsltExtensionInstructionResultFinalize">xsltExtensionInstructionResultFinalize</a><br />
 <a href="html/libxslt-xsltInternals.html#xsltExtensionInstructionResultRegister">xsltExtensionInstructionResultRegister</a><br />
+<a href="html/libxslt-xsltInternals.html#xsltFlagRVTs">xsltFlagRVTs</a><br />
 <a href="html/libxslt-xsltInternals.html#xsltFormatNumberConversion">xsltFormatNumberConversion</a><br />
 <a href="html/libxslt-xsltInternals.html#xsltFreeAVTList">xsltFreeAVTList</a><br />
 <a href="html/libxslt-xsltInternals.html#xsltFreeRVTs">xsltFreeRVTs</a><br />
index f2eba6c..b29b3f9 100644 (file)
@@ -34,6 +34,7 @@ A:link, A:visited, A:active { text-decoration: underline }
 <a href="html/libxslt-security.html#xsltCheckWrite">xsltCheckWrite</a><br />
 <a href="html/libxslt-pattern.html#xsltCompilePattern">xsltCompilePattern</a><br />
 <a href="html/libxslt-transform.html#xsltCopyTextString">xsltCopyTextString</a><br />
+<a href="html/libxslt-xsltInternals.html#xsltDecimalFormatGetByQName">xsltDecimalFormatGetByQName</a><br />
 <a href="html/libxslt-documents.html#xsltDocLoaderFunc">xsltDocLoaderFunc</a><br />
 <a href="html/libxslt-templates.html#xsltEvalAttrValueTemplate">xsltEvalAttrValueTemplate</a><br />
 <a href="html/libxslt-variables.html#xsltEvalOneUserParam">xsltEvalOneUserParam</a><br />
@@ -93,6 +94,7 @@ A:link, A:visited, A:active { text-decoration: underline }
 </p><h2>Type void *:</h2><p><a href="html/libxslt-documents.html#xsltDocLoaderFunc">xsltDocLoaderFunc</a><br />
 <a href="html/libxslt-xsltInternals.html#xsltEvalAVT">xsltEvalAVT</a><br />
 <a href="html/libxslt-extensions.html#xsltExtShutdownFunction">xsltExtShutdownFunction</a><br />
+<a href="html/libxslt-xsltInternals.html#xsltFlagRVTs">xsltFlagRVTs</a><br />
 <a href="html/libxslt-xsltInternals.html#xsltFreeAVTList">xsltFreeAVTList</a><br />
 <a href="html/libxslt-pattern.html#xsltNormalizeCompSteps">xsltNormalizeCompSteps</a><br />
 <a href="html/libxslt-xsltInternals.html#xsltPointerListAddSize">xsltPointerListAddSize</a><br />
@@ -240,6 +242,7 @@ A:link, A:visited, A:active { text-decoration: underline }
 </p><h2>Type xmlXPathFunction:</h2><p><a href="html/libxslt-extensions.html#xsltRegisterExtFunction">xsltRegisterExtFunction</a><br />
 <a href="html/libxslt-extensions.html#xsltRegisterExtModuleFunction">xsltRegisterExtModuleFunction</a><br />
 </p><h2>Type xmlXPathObjectPtr:</h2><p><a href="html/libxslt-xsltInternals.html#xsltExtensionInstructionResultRegister">xsltExtensionInstructionResultRegister</a><br />
+<a href="html/libxslt-xsltInternals.html#xsltFlagRVTs">xsltFlagRVTs</a><br />
 </p><h2>Type xmlXPathParserContextPtr:</h2><p><a href="html/libxslt-functions.html#xsltDocumentFunction">xsltDocumentFunction</a><br />
 <a href="html/libxslt-functions.html#xsltElementAvailableFunction">xsltElementAvailableFunction</a><br />
 <a href="html/libxslt-functions.html#xsltFormatNumberFunction">xsltFormatNumberFunction</a><br />
@@ -330,6 +333,7 @@ A:link, A:visited, A:active { text-decoration: underline }
 <a href="html/libxslt-xsltInternals.html#xsltCompileAttr">xsltCompileAttr</a><br />
 <a href="html/libxslt-pattern.html#xsltCompilePattern">xsltCompilePattern</a><br />
 <a href="html/libxslt-xsltInternals.html#xsltDecimalFormatGetByName">xsltDecimalFormatGetByName</a><br />
+<a href="html/libxslt-xsltInternals.html#xsltDecimalFormatGetByQName">xsltDecimalFormatGetByQName</a><br />
 <a href="html/libxslt-preproc.html#xsltDocumentComp">xsltDocumentComp</a><br />
 <a href="html/libxslt-templates.html#xsltEvalStaticAttrValueTemplate">xsltEvalStaticAttrValueTemplate</a><br />
 <a href="html/libxslt-attributes.html#xsltFreeAttributeSetsHashes">xsltFreeAttributeSetsHashes</a><br />
@@ -439,6 +443,7 @@ A:link, A:visited, A:active { text-decoration: underline }
 <a href="html/libxslt-documents.html#xsltFindDocument">xsltFindDocument</a><br />
 <a href="html/libxslt-imports.html#xsltFindElemSpaceHandling">xsltFindElemSpaceHandling</a><br />
 <a href="html/libxslt-imports.html#xsltFindTemplate">xsltFindTemplate</a><br />
+<a href="html/libxslt-xsltInternals.html#xsltFlagRVTs">xsltFlagRVTs</a><br />
 <a href="html/libxslt-transform.html#xsltForEach">xsltForEach</a><br />
 <a href="html/libxslt-extensions.html#xsltFreeCtxtExts">xsltFreeCtxtExts</a><br />
 <a href="html/libxslt-documents.html#xsltFreeDocuments">xsltFreeDocuments</a><br />
index f5500a1..1b7483e 100644 (file)
@@ -87,7 +87,6 @@ A:link, A:visited, A:active { text-decoration: underline }
 <a href="html/libxslt-xsltInternals.html#XSLT_MARK_RES_TREE_FRAG">XSLT_MARK_RES_TREE_FRAG</a><br />
 <a href="html/libxslt-xsltInternals.html#XSLT_MAX_SORT">XSLT_MAX_SORT</a><br />
 <a href="html/libxslt-xslt.html#XSLT_NAMESPACE">XSLT_NAMESPACE</a><br />
-<a href="html/libxslt-extra.html#XSLT_NORM_SAXON_NAMESPACE">XSLT_NORM_SAXON_NAMESPACE</a><br />
 <a href="html/libxslt-xsltInternals.html#XSLT_OUTPUT_HTML">XSLT_OUTPUT_HTML</a><br />
 <a href="html/libxslt-xsltInternals.html#XSLT_OUTPUT_TEXT">XSLT_OUTPUT_TEXT</a><br />
 <a href="html/libxslt-xsltInternals.html#XSLT_OUTPUT_XML">XSLT_OUTPUT_XML</a><br />
@@ -101,6 +100,10 @@ A:link, A:visited, A:active { text-decoration: underline }
 <a href="html/libxslt-xsltInternals.html#XSLT_RUNTIME_EXTRA">XSLT_RUNTIME_EXTRA</a><br />
 <a href="html/libxslt-xsltInternals.html#XSLT_RUNTIME_EXTRA_FREE">XSLT_RUNTIME_EXTRA_FREE</a><br />
 <a href="html/libxslt-xsltInternals.html#XSLT_RUNTIME_EXTRA_LST">XSLT_RUNTIME_EXTRA_LST</a><br />
+<a href="html/libxslt-variables.html#XSLT_RVT_FUNC_RESULT">XSLT_RVT_FUNC_RESULT</a><br />
+<a href="html/libxslt-variables.html#XSLT_RVT_GLOBAL">XSLT_RVT_GLOBAL</a><br />
+<a href="html/libxslt-variables.html#XSLT_RVT_LOCAL">XSLT_RVT_LOCAL</a><br />
+<a href="html/libxslt-variables.html#XSLT_RVT_VARIABLE">XSLT_RVT_VARIABLE</a><br />
 <a href="html/libxslt-extra.html#XSLT_SAXON_NAMESPACE">XSLT_SAXON_NAMESPACE</a><br />
 <a href="html/libxslt-security.html#XSLT_SECPREF_CREATE_DIRECTORY">XSLT_SECPREF_CREATE_DIRECTORY</a><br />
 <a href="html/libxslt-security.html#XSLT_SECPREF_READ_FILE">XSLT_SECPREF_READ_FILE</a><br />
@@ -240,6 +243,7 @@ A:link, A:visited, A:active { text-decoration: underline }
 <a href="html/libxslt-xsltutils.html#xsltDebugTraceCodes">xsltDebugTraceCodes</a><br />
 <a href="html/libxslt-xsltInternals.html#xsltDecimalFormat">xsltDecimalFormat</a><br />
 <a href="html/libxslt-xsltInternals.html#xsltDecimalFormatGetByName">xsltDecimalFormatGetByName</a><br />
+<a href="html/libxslt-xsltInternals.html#xsltDecimalFormatGetByQName">xsltDecimalFormatGetByQName</a><br />
 <a href="html/libxslt-xsltInternals.html#xsltDecimalFormatPtr">xsltDecimalFormatPtr</a><br />
 <a href="html/libxslt-xsltutils.html#xsltDefaultSortFunction">xsltDefaultSortFunction</a><br />
 <a href="html/libxslt-xsltutils.html#xsltDoSortFunction">xsltDoSortFunction</a><br />
@@ -284,6 +288,7 @@ A:link, A:visited, A:active { text-decoration: underline }
 <a href="html/libxslt-documents.html#xsltFindDocument">xsltFindDocument</a><br />
 <a href="html/libxslt-imports.html#xsltFindElemSpaceHandling">xsltFindElemSpaceHandling</a><br />
 <a href="html/libxslt-imports.html#xsltFindTemplate">xsltFindTemplate</a><br />
+<a href="html/libxslt-xsltInternals.html#xsltFlagRVTs">xsltFlagRVTs</a><br />
 <a href="html/libxslt-transform.html#xsltForEach">xsltForEach</a><br />
 <a href="html/libxslt-xsltInternals.html#xsltFormatNumberConversion">xsltFormatNumberConversion</a><br />
 <a href="html/libxslt-functions.html#xsltFormatNumberFunction">xsltFormatNumberFunction</a><br />
index a69995a..ce657b6 100644 (file)
@@ -314,7 +314,6 @@ install-data-local:
        $(MKDIR_P) $(DESTDIR)$(HTML_DIR)/html
        -$(INSTALL) -m 0644 $(srcdir)/html/*.html $(DESTDIR)$(HTML_DIR)/html
        -$(INSTALL) -m 0644 $(srcdir)/html/*.png $(DESTDIR)$(HTML_DIR)/html
-       -$(INSTALL) -m 0644 $(srcdir)/html/index.sgml $(DESTDIR)$(HTML_DIR)/html
        $(MKDIR_P) $(DESTDIR)$(HTML_DIR)/EXSLT
        -$(INSTALL) -m 0644 $(srcdir)/EXSLT/*.html $(DESTDIR)$(HTML_DIR)/EXSLT
        $(MKDIR_P) $(DESTDIR)$(HTML_DIR)/tutorial
index 6f95b71..d7364d0 100644 (file)
@@ -240,6 +240,9 @@ PACKAGE_URL = @PACKAGE_URL@
 PACKAGE_VERSION = @PACKAGE_VERSION@
 PATH_SEPARATOR = @PATH_SEPARATOR@
 PERL = @PERL@
+PKG_CONFIG = @PKG_CONFIG@
+PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@
+PKG_CONFIG_PATH = @PKG_CONFIG_PATH@
 PYTHON = @PYTHON@
 PYTHONSODV = @PYTHONSODV@
 PYTHON_INCLUDES = @PYTHON_INCLUDES@
@@ -882,7 +885,6 @@ install-data-local:
        $(MKDIR_P) $(DESTDIR)$(HTML_DIR)/html
        -$(INSTALL) -m 0644 $(srcdir)/html/*.html $(DESTDIR)$(HTML_DIR)/html
        -$(INSTALL) -m 0644 $(srcdir)/html/*.png $(DESTDIR)$(HTML_DIR)/html
-       -$(INSTALL) -m 0644 $(srcdir)/html/index.sgml $(DESTDIR)$(HTML_DIR)/html
        $(MKDIR_P) $(DESTDIR)$(HTML_DIR)/EXSLT
        -$(INSTALL) -m 0644 $(srcdir)/EXSLT/*.html $(DESTDIR)$(HTML_DIR)/EXSLT
        $(MKDIR_P) $(DESTDIR)$(HTML_DIR)/tutorial
index df1d66b..bc12f01 100755 (executable)
@@ -47,6 +47,7 @@ ignored_words = {
   "X_IN_Y": (5, "macro function builder"),
   "XSLT_ITEM_COMMON_FIELDS": (0, "Special macro"),
   "CALLBACK": (0, "macro keyword"),
+  "LIBXSLT_ATTR_FORMAT": (5, "macro for gcc printf args checking extension"),
 }
 
 def escape(raw):
index 9e03622..9fb7889 100644 (file)
@@ -7,13 +7,12 @@ 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>Module extra from libxslt</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/XSLT/"><img src="../Libxslt-Logo-180x168.gif" alt="Made with Libxslt 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 XSLT C library for GNOME</h1><h2>Module extra from libxslt</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="index.html">API Menu</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>Related links</b></center></td></tr><tr><td bgcolor="#fffacd"><ul><li><a href="http://mail.gnome.org/archives/xslt/">Mail archive</a></li><li><a href="http://xmlsoft.org/">XML libxml2</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://garypennington.net/libxml2/">Solaris binaries</a></li><li><a href="http://www.explain.com.au/oss/libxml2xslt.html">MacOsX binaries</a></li><li><a href="http://bugzilla.gnome.org/buglist.cgi?product=libxslt">Bug Tracker</a></li><li><a href="http://codespeak.net/lxml/">lxml Python bindings</a></li><li><a href="http://cpan.uwinnipeg.ca/dist/XML-LibXSLT">Perl XSLT bindings</a></li><li><a href="http://www.zend.com/php5/articles/php5-xmlphp.php#Heading17">XSLT with PHP</a></li><li><a href="http://www.mod-xslt2.com/">Apache module</a></li><li><a href="http://sourceforge.net/projects/libxml2-pas/">Pascal bindings</a></li><li><a href="http://xsldbg.sourceforge.net/">Xsldbg Debugger</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></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="libxslt-extensions.html"><img src="left.png" width="24" height="24" border="0" alt="Prev" /></a></td><th align="left"><a href="libxslt-extensions.html">extensions</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">Home</a></th><th align="right"><a href="libxslt-functions.html">functions</a></th><td><a accesskey="n" href="libxslt-functions.html"><img src="right.png" width="24" height="24" border="0" alt="Next" /></a></td></tr></table><p>implement some extension outside the XSLT namespace but not EXSLT with is in a different library. </p><h2>Table of Contents</h2><pre class="programlisting">#define <a href="#XSLT_LIBXSLT_NAMESPACE">XSLT_LIBXSLT_NAMESPACE</a></pre><pre class="programlisting">#define <a href="#XSLT_NORM_SAXON_NAMESPACE">XSLT_NORM_SAXON_NAMESPACE</a></pre><pre class="programlisting">#define <a href="#XSLT_SAXON_NAMESPACE">XSLT_SAXON_NAMESPACE</a></pre><pre class="programlisting">#define <a href="#XSLT_XALAN_NAMESPACE">XSLT_XALAN_NAMESPACE</a></pre><pre class="programlisting">#define <a href="#XSLT_XT_NAMESPACE">XSLT_XT_NAMESPACE</a></pre><pre class="programlisting">void        <a href="#xsltDebug">xsltDebug</a>                      (<a href="libxslt-xsltInternals.html#xsltTransformContextPtr">xsltTransformContextPtr</a> ctxt, <br />                                   xmlNodePtr node, <br />                                         xmlNodePtr inst, <br />                                         <a href="libxslt-xsltInternals.html#xsltStylePreCompPtr">xsltStylePreCompPtr</a> comp)</pre>
+    </style><title>Module extra from libxslt</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/XSLT/"><img src="../Libxslt-Logo-180x168.gif" alt="Made with Libxslt 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 XSLT C library for GNOME</h1><h2>Module extra from libxslt</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="index.html">API Menu</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>Related links</b></center></td></tr><tr><td bgcolor="#fffacd"><ul><li><a href="http://mail.gnome.org/archives/xslt/">Mail archive</a></li><li><a href="http://xmlsoft.org/">XML libxml2</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://garypennington.net/libxml2/">Solaris binaries</a></li><li><a href="http://www.explain.com.au/oss/libxml2xslt.html">MacOsX binaries</a></li><li><a href="http://bugzilla.gnome.org/buglist.cgi?product=libxslt">Bug Tracker</a></li><li><a href="http://codespeak.net/lxml/">lxml Python bindings</a></li><li><a href="http://cpan.uwinnipeg.ca/dist/XML-LibXSLT">Perl XSLT bindings</a></li><li><a href="http://www.zend.com/php5/articles/php5-xmlphp.php#Heading17">XSLT with PHP</a></li><li><a href="http://www.mod-xslt2.com/">Apache module</a></li><li><a href="http://sourceforge.net/projects/libxml2-pas/">Pascal bindings</a></li><li><a href="http://xsldbg.sourceforge.net/">Xsldbg Debugger</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></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="libxslt-extensions.html"><img src="left.png" width="24" height="24" border="0" alt="Prev" /></a></td><th align="left"><a href="libxslt-extensions.html">extensions</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">Home</a></th><th align="right"><a href="libxslt-functions.html">functions</a></th><td><a accesskey="n" href="libxslt-functions.html"><img src="right.png" width="24" height="24" border="0" alt="Next" /></a></td></tr></table><p>implement some extension outside the XSLT namespace but not EXSLT with is in a different library. </p><h2>Table of Contents</h2><pre class="programlisting">#define <a href="#XSLT_LIBXSLT_NAMESPACE">XSLT_LIBXSLT_NAMESPACE</a></pre><pre class="programlisting">#define <a href="#XSLT_SAXON_NAMESPACE">XSLT_SAXON_NAMESPACE</a></pre><pre class="programlisting">#define <a href="#XSLT_XALAN_NAMESPACE">XSLT_XALAN_NAMESPACE</a></pre><pre class="programlisting">#define <a href="#XSLT_XT_NAMESPACE">XSLT_XT_NAMESPACE</a></pre><pre class="programlisting">void    <a href="#xsltDebug">xsltDebug</a>                      (<a href="libxslt-xsltInternals.html#xsltTransformContextPtr">xsltTransformContextPtr</a> ctxt, <br />                                   xmlNodePtr node, <br />                                         xmlNodePtr inst, <br />                                         <a href="libxslt-xsltInternals.html#xsltStylePreCompPtr">xsltStylePreCompPtr</a> comp)</pre>
 <pre class="programlisting">void       <a href="#xsltFunctionNodeSet">xsltFunctionNodeSet</a>          (xmlXPathParserContextPtr ctxt, <br />                                   int nargs)</pre>
 <pre class="programlisting">void       <a href="#xsltRegisterAllExtras">xsltRegisterAllExtras</a>              (void)</pre>
 <pre class="programlisting">void       <a href="#xsltRegisterExtras">xsltRegisterExtras</a>            (<a href="libxslt-xsltInternals.html#xsltTransformContextPtr">xsltTransformContextPtr</a> ctxt)</pre>
 <h2>Description</h2>
 <h3><a name="XSLT_LIBXSLT_NAMESPACE" id="XSLT_LIBXSLT_NAMESPACE"></a>Macro: XSLT_LIBXSLT_NAMESPACE</h3><pre>#define XSLT_LIBXSLT_NAMESPACE</pre><p>This is the libxslt namespace for specific extensions.</p>
-<h3><a name="XSLT_NORM_SAXON_NAMESPACE" id="XSLT_NORM_SAXON_NAMESPACE"></a>Macro: XSLT_NORM_SAXON_NAMESPACE</h3><pre>#define XSLT_NORM_SAXON_NAMESPACE</pre><p>This is Norm's namespace for SAXON extensions.</p>
 <h3><a name="XSLT_SAXON_NAMESPACE" id="XSLT_SAXON_NAMESPACE"></a>Macro: XSLT_SAXON_NAMESPACE</h3><pre>#define XSLT_SAXON_NAMESPACE</pre><p>This is Michael Kay's Saxon processor namespace for extensions.</p>
 <h3><a name="XSLT_XALAN_NAMESPACE" id="XSLT_XALAN_NAMESPACE"></a>Macro: XSLT_XALAN_NAMESPACE</h3><pre>#define XSLT_XALAN_NAMESPACE</pre><p>This is the Apache project XALAN processor namespace for extensions.</p>
 <h3><a name="XSLT_XT_NAMESPACE" id="XSLT_XT_NAMESPACE"></a>Macro: XSLT_XT_NAMESPACE</h3><pre>#define XSLT_XT_NAMESPACE</pre><p>This is James Clark's XT processor namespace for extensions.</p>
index be71f2c..ddf4682 100644 (file)
@@ -14,7 +14,7 @@ A:link, A:visited, A:active { text-decoration: underline }
 <pre class="programlisting">xmlDocPtr  <a href="#xsltApplyStylesheet">xsltApplyStylesheet</a>  (<a href="libxslt-xsltInternals.html#xsltStylesheetPtr">xsltStylesheetPtr</a> style, <br />                                      xmlDocPtr doc, <br />                                   const char ** params)</pre>
 <pre class="programlisting">xmlDocPtr  <a href="#xsltApplyStylesheetUser">xsltApplyStylesheetUser</a>  (<a href="libxslt-xsltInternals.html#xsltStylesheetPtr">xsltStylesheetPtr</a> style, <br />                                      xmlDocPtr doc, <br />                                   const char ** params, <br />                                    const char * output, <br />                                     FILE * profile, <br />                                  <a href="libxslt-xsltInternals.html#xsltTransformContextPtr">xsltTransformContextPtr</a> userCtxt)</pre>
 <pre class="programlisting">void       <a href="#xsltApplyTemplates">xsltApplyTemplates</a>            (<a href="libxslt-xsltInternals.html#xsltTransformContextPtr">xsltTransformContextPtr</a> ctxt, <br />                                   xmlNodePtr node, <br />                                         xmlNodePtr inst, <br />                                         <a href="libxslt-xsltInternals.html#xsltStylePreCompPtr">xsltStylePreCompPtr</a> castedComp)</pre>
-<pre class="programlisting">void       <a href="#xsltAttribute">xsltAttribute</a>                      (<a href="libxslt-xsltInternals.html#xsltTransformContextPtr">xsltTransformContextPtr</a> ctxt, <br />                                   xmlNodePtr node, <br />                                         xmlNodePtr inst, <br />                                         <a href="libxslt-xsltInternals.html#xsltStylePreCompPtr">xsltStylePreCompPtr</a> comp)</pre>
+<pre class="programlisting">void       <a href="#xsltAttribute">xsltAttribute</a>                      (<a href="libxslt-xsltInternals.html#xsltTransformContextPtr">xsltTransformContextPtr</a> ctxt, <br />                                   xmlNodePtr contextNode, <br />                                  xmlNodePtr inst, <br />                                         <a href="libxslt-xsltInternals.html#xsltStylePreCompPtr">xsltStylePreCompPtr</a> castedComp)</pre>
 <pre class="programlisting">void       <a href="#xsltCallTemplate">xsltCallTemplate</a>                (<a href="libxslt-xsltInternals.html#xsltTransformContextPtr">xsltTransformContextPtr</a> ctxt, <br />                                   xmlNodePtr node, <br />                                         xmlNodePtr inst, <br />                                         <a href="libxslt-xsltInternals.html#xsltStylePreCompPtr">xsltStylePreCompPtr</a> castedComp)</pre>
 <pre class="programlisting">void       <a href="#xsltChoose">xsltChoose</a>                    (<a href="libxslt-xsltInternals.html#xsltTransformContextPtr">xsltTransformContextPtr</a> ctxt, <br />                                   xmlNodePtr contextNode, <br />                                  xmlNodePtr inst, <br />                                         <a href="libxslt-xsltInternals.html#xsltStylePreCompPtr">xsltStylePreCompPtr</a> comp)</pre>
 <pre class="programlisting">void       <a href="#xsltComment">xsltComment</a>                  (<a href="libxslt-xsltInternals.html#xsltTransformContextPtr">xsltTransformContextPtr</a> ctxt, <br />                                   xmlNodePtr node, <br />                                         xmlNodePtr inst, <br />                                         <a href="libxslt-xsltInternals.html#xsltStylePreCompPtr">xsltStylePreCompPtr</a> comp)</pre>
@@ -56,9 +56,9 @@ A:link, A:visited, A:active { text-decoration: underline }
 </pre><p>Apply the stylesheet to the document and allow the user to provide its own transformation context.</p>
 <div class="variablelist"><table border="0"><col align="left" /><tbody><tr><td><span class="term"><i><tt>style</tt></i>:</span></td><td>a parsed XSLT stylesheet</td></tr><tr><td><span class="term"><i><tt>doc</tt></i>:</span></td><td>a parsed XML document</td></tr><tr><td><span class="term"><i><tt>params</tt></i>:</span></td><td>a NULL terminated array of parameters names/values tuples</td></tr><tr><td><span class="term"><i><tt>output</tt></i>:</span></td><td>the targetted output</td></tr><tr><td><span class="term"><i><tt>profile</tt></i>:</span></td><td>profile FILE * output or NULL</td></tr><tr><td><span class="term"><i><tt>userCtxt</tt></i>:</span></td><td>user provided transform context</td></tr><tr><td><span class="term"><i><tt>Returns</tt></i>:</span></td><td>the result document or NULL in case of error</td></tr></tbody></table></div><h3><a name="xsltApplyTemplates" id="xsltApplyTemplates"></a>Function: xsltApplyTemplates</h3><pre class="programlisting">void      xsltApplyTemplates              (<a href="libxslt-xsltInternals.html#xsltTransformContextPtr">xsltTransformContextPtr</a> ctxt, <br />                                   xmlNodePtr node, <br />                                         xmlNodePtr inst, <br />                                         <a href="libxslt-xsltInternals.html#xsltStylePreCompPtr">xsltStylePreCompPtr</a> castedComp)<br />
 </pre><p>Processes the XSLT 'apply-templates' instruction on the current node.</p>
-<div class="variablelist"><table border="0"><col align="left" /><tbody><tr><td><span class="term"><i><tt>ctxt</tt></i>:</span></td><td>a XSLT transformation context</td></tr><tr><td><span class="term"><i><tt>node</tt></i>:</span></td><td>the 'current node' in the source tree</td></tr><tr><td><span class="term"><i><tt>inst</tt></i>:</span></td><td>the element node of an XSLT 'apply-templates' instruction</td></tr><tr><td><span class="term"><i><tt>castedComp</tt></i>:</span></td><td>the compiled instruction</td></tr></tbody></table></div><h3><a name="xsltAttribute" id="xsltAttribute"></a>Function: xsltAttribute</h3><pre class="programlisting">void  xsltAttribute                   (<a href="libxslt-xsltInternals.html#xsltTransformContextPtr">xsltTransformContextPtr</a> ctxt, <br />                                   xmlNodePtr node, <br />                                         xmlNodePtr inst, <br />                                         <a href="libxslt-xsltInternals.html#xsltStylePreCompPtr">xsltStylePreCompPtr</a> comp)<br />
+<div class="variablelist"><table border="0"><col align="left" /><tbody><tr><td><span class="term"><i><tt>ctxt</tt></i>:</span></td><td>a XSLT transformation context</td></tr><tr><td><span class="term"><i><tt>node</tt></i>:</span></td><td>the 'current node' in the source tree</td></tr><tr><td><span class="term"><i><tt>inst</tt></i>:</span></td><td>the element node of an XSLT 'apply-templates' instruction</td></tr><tr><td><span class="term"><i><tt>castedComp</tt></i>:</span></td><td>the compiled instruction</td></tr></tbody></table></div><h3><a name="xsltAttribute" id="xsltAttribute"></a>Function: xsltAttribute</h3><pre class="programlisting">void  xsltAttribute                   (<a href="libxslt-xsltInternals.html#xsltTransformContextPtr">xsltTransformContextPtr</a> ctxt, <br />                                   xmlNodePtr contextNode, <br />                                  xmlNodePtr inst, <br />                                         <a href="libxslt-xsltInternals.html#xsltStylePreCompPtr">xsltStylePreCompPtr</a> castedComp)<br />
 </pre><p>Process the xslt attribute node on the source node</p>
-<div class="variablelist"><table border="0"><col align="left" /><tbody><tr><td><span class="term"><i><tt>ctxt</tt></i>:</span></td><td>a XSLT process context</td></tr><tr><td><span class="term"><i><tt>node</tt></i>:</span></td><td>the node in the source tree.</td></tr><tr><td><span class="term"><i><tt>inst</tt></i>:</span></td><td>the xslt attribute node</td></tr><tr><td><span class="term"><i><tt>comp</tt></i>:</span></td><td>precomputed information</td></tr></tbody></table></div><h3><a name="xsltCallTemplate" id="xsltCallTemplate"></a>Function: xsltCallTemplate</h3><pre class="programlisting">void  xsltCallTemplate                (<a href="libxslt-xsltInternals.html#xsltTransformContextPtr">xsltTransformContextPtr</a> ctxt, <br />                                   xmlNodePtr node, <br />                                         xmlNodePtr inst, <br />                                         <a href="libxslt-xsltInternals.html#xsltStylePreCompPtr">xsltStylePreCompPtr</a> castedComp)<br />
+<div class="variablelist"><table border="0"><col align="left" /><tbody><tr><td><span class="term"><i><tt>ctxt</tt></i>:</span></td><td>a XSLT process context</td></tr><tr><td><span class="term"><i><tt>contextNode</tt></i>:</span></td><td>the current node in the source tree</td></tr><tr><td><span class="term"><i><tt>inst</tt></i>:</span></td><td>the xsl:attribute element</td></tr><tr><td><span class="term"><i><tt>castedComp</tt></i>:</span></td><td>precomputed information</td></tr></tbody></table></div><h3><a name="xsltCallTemplate" id="xsltCallTemplate"></a>Function: xsltCallTemplate</h3><pre class="programlisting">void    xsltCallTemplate                (<a href="libxslt-xsltInternals.html#xsltTransformContextPtr">xsltTransformContextPtr</a> ctxt, <br />                                   xmlNodePtr node, <br />                                         xmlNodePtr inst, <br />                                         <a href="libxslt-xsltInternals.html#xsltStylePreCompPtr">xsltStylePreCompPtr</a> castedComp)<br />
 </pre><p>Processes the XSLT call-template instruction on the source node.</p>
 <div class="variablelist"><table border="0"><col align="left" /><tbody><tr><td><span class="term"><i><tt>ctxt</tt></i>:</span></td><td>a XSLT transformation context</td></tr><tr><td><span class="term"><i><tt>node</tt></i>:</span></td><td>the "current node" in the source tree</td></tr><tr><td><span class="term"><i><tt>inst</tt></i>:</span></td><td>the XSLT 'call-template' instruction</td></tr><tr><td><span class="term"><i><tt>castedComp</tt></i>:</span></td><td>the compiled information of the instruction</td></tr></tbody></table></div><h3><a name="xsltChoose" id="xsltChoose"></a>Function: xsltChoose</h3><pre class="programlisting">void     xsltChoose                      (<a href="libxslt-xsltInternals.html#xsltTransformContextPtr">xsltTransformContextPtr</a> ctxt, <br />                                   xmlNodePtr contextNode, <br />                                  xmlNodePtr inst, <br />                                         <a href="libxslt-xsltInternals.html#xsltStylePreCompPtr">xsltStylePreCompPtr</a> comp)<br />
 </pre><p>Processes the xsl:choose instruction on the source node.</p>
index 2a7f71d..a8fc618 100644 (file)
@@ -7,7 +7,7 @@ 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>Module variables from libxslt</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/XSLT/"><img src="../Libxslt-Logo-180x168.gif" alt="Made with Libxslt 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 XSLT C library for GNOME</h1><h2>Module variables from libxslt</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="index.html">API Menu</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>Related links</b></center></td></tr><tr><td bgcolor="#fffacd"><ul><li><a href="http://mail.gnome.org/archives/xslt/">Mail archive</a></li><li><a href="http://xmlsoft.org/">XML libxml2</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://garypennington.net/libxml2/">Solaris binaries</a></li><li><a href="http://www.explain.com.au/oss/libxml2xslt.html">MacOsX binaries</a></li><li><a href="http://bugzilla.gnome.org/buglist.cgi?product=libxslt">Bug Tracker</a></li><li><a href="http://codespeak.net/lxml/">lxml Python bindings</a></li><li><a href="http://cpan.uwinnipeg.ca/dist/XML-LibXSLT">Perl XSLT bindings</a></li><li><a href="http://www.zend.com/php5/articles/php5-xmlphp.php#Heading17">XSLT with PHP</a></li><li><a href="http://www.mod-xslt2.com/">Apache module</a></li><li><a href="http://sourceforge.net/projects/libxml2-pas/">Pascal bindings</a></li><li><a href="http://xsldbg.sourceforge.net/">Xsldbg Debugger</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></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="libxslt-transform.html"><img src="left.png" width="24" height="24" border="0" alt="Prev" /></a></td><th align="left"><a href="libxslt-transform.html">transform</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">Home</a></th><th align="right"><a href="libxslt-xslt.html">xslt</a></th><td><a accesskey="n" href="libxslt-xslt.html"><img src="right.png" width="24" height="24" border="0" alt="Next" /></a></td></tr></table><p>interface for the variable matching and lookup. </p><h2>Table of Contents</h2><pre class="programlisting">#define <a href="#XSLT_REGISTER_VARIABLE_LOOKUP">XSLT_REGISTER_VARIABLE_LOOKUP</a></pre><pre class="programlisting">int   <a href="#xsltAddStackElemList">xsltAddStackElemList</a>                (<a href="libxslt-xsltInternals.html#xsltTransformContextPtr">xsltTransformContextPtr</a> ctxt, <br />                                   <a href="libxslt-xsltInternals.html#xsltStackElemPtr">xsltStackElemPtr</a> elems)</pre>
+    </style><title>Module variables from libxslt</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/XSLT/"><img src="../Libxslt-Logo-180x168.gif" alt="Made with Libxslt 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 XSLT C library for GNOME</h1><h2>Module variables from libxslt</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="index.html">API Menu</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>Related links</b></center></td></tr><tr><td bgcolor="#fffacd"><ul><li><a href="http://mail.gnome.org/archives/xslt/">Mail archive</a></li><li><a href="http://xmlsoft.org/">XML libxml2</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://garypennington.net/libxml2/">Solaris binaries</a></li><li><a href="http://www.explain.com.au/oss/libxml2xslt.html">MacOsX binaries</a></li><li><a href="http://bugzilla.gnome.org/buglist.cgi?product=libxslt">Bug Tracker</a></li><li><a href="http://codespeak.net/lxml/">lxml Python bindings</a></li><li><a href="http://cpan.uwinnipeg.ca/dist/XML-LibXSLT">Perl XSLT bindings</a></li><li><a href="http://www.zend.com/php5/articles/php5-xmlphp.php#Heading17">XSLT with PHP</a></li><li><a href="http://www.mod-xslt2.com/">Apache module</a></li><li><a href="http://sourceforge.net/projects/libxml2-pas/">Pascal bindings</a></li><li><a href="http://xsldbg.sourceforge.net/">Xsldbg Debugger</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></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="libxslt-transform.html"><img src="left.png" width="24" height="24" border="0" alt="Prev" /></a></td><th align="left"><a href="libxslt-transform.html">transform</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">Home</a></th><th align="right"><a href="libxslt-xslt.html">xslt</a></th><td><a accesskey="n" href="libxslt-xslt.html"><img src="right.png" width="24" height="24" border="0" alt="Next" /></a></td></tr></table><p>interface for the variable matching and lookup. </p><h2>Table of Contents</h2><pre class="programlisting">#define <a href="#XSLT_REGISTER_VARIABLE_LOOKUP">XSLT_REGISTER_VARIABLE_LOOKUP</a></pre><pre class="programlisting">#define <a href="#XSLT_RVT_FUNC_RESULT">XSLT_RVT_FUNC_RESULT</a></pre><pre class="programlisting">#define <a href="#XSLT_RVT_GLOBAL">XSLT_RVT_GLOBAL</a></pre><pre class="programlisting">#define <a href="#XSLT_RVT_LOCAL">XSLT_RVT_LOCAL</a></pre><pre class="programlisting">#define <a href="#XSLT_RVT_VARIABLE">XSLT_RVT_VARIABLE</a></pre><pre class="programlisting">int       <a href="#xsltAddStackElemList">xsltAddStackElemList</a>                (<a href="libxslt-xsltInternals.html#xsltTransformContextPtr">xsltTransformContextPtr</a> ctxt, <br />                                   <a href="libxslt-xsltInternals.html#xsltStackElemPtr">xsltStackElemPtr</a> elems)</pre>
 <pre class="programlisting">int        <a href="#xsltEvalGlobalVariables">xsltEvalGlobalVariables</a>          (<a href="libxslt-xsltInternals.html#xsltTransformContextPtr">xsltTransformContextPtr</a> ctxt)</pre>
 <pre class="programlisting">int        <a href="#xsltEvalOneUserParam">xsltEvalOneUserParam</a>                (<a href="libxslt-xsltInternals.html#xsltTransformContextPtr">xsltTransformContextPtr</a> ctxt, <br />                                   const xmlChar * name, <br />                                    const xmlChar * value)</pre>
 <pre class="programlisting">int        <a href="#xsltEvalUserParams">xsltEvalUserParams</a>            (<a href="libxslt-xsltInternals.html#xsltTransformContextPtr">xsltTransformContextPtr</a> ctxt, <br />                                   const char ** params)</pre>
@@ -23,6 +23,10 @@ A:link, A:visited, A:active { text-decoration: underline }
 <pre class="programlisting">xmlXPathObjectPtr  <a href="#xsltXPathVariableLookup">xsltXPathVariableLookup</a>  (void * ctxt, <br />                                             const xmlChar * name, <br />                                            const xmlChar * ns_uri)</pre>
 <h2>Description</h2>
 <h3><a name="XSLT_REGISTER_VARIABLE_LOOKUP" id="XSLT_REGISTER_VARIABLE_LOOKUP"></a>Macro: XSLT_REGISTER_VARIABLE_LOOKUP</h3><pre>#define XSLT_REGISTER_VARIABLE_LOOKUP</pre><p>Registering macro, not general purpose at all but used in different modules.</p>
+<h3><a name="XSLT_RVT_FUNC_RESULT" id="XSLT_RVT_FUNC_RESULT"></a>Macro: XSLT_RVT_FUNC_RESULT</h3><pre>#define XSLT_RVT_FUNC_RESULT</pre><p>RVT is part of results returned with func:result. The RVT won't be destroyed after exiting a template and will be reset to <a href="libxslt-variables.html#XSLT_RVT_LOCAL">XSLT_RVT_LOCAL</a> or <a href="libxslt-variables.html#XSLT_RVT_VARIABLE">XSLT_RVT_VARIABLE</a> in the template that receives the return value.</p>
+<h3><a name="XSLT_RVT_GLOBAL" id="XSLT_RVT_GLOBAL"></a>Macro: XSLT_RVT_GLOBAL</h3><pre>#define XSLT_RVT_GLOBAL</pre><p>RVT is part of a global variable.</p>
+<h3><a name="XSLT_RVT_LOCAL" id="XSLT_RVT_LOCAL"></a>Macro: XSLT_RVT_LOCAL</h3><pre>#define XSLT_RVT_LOCAL</pre><p>RVT is destroyed after the current instructions ends.</p>
+<h3><a name="XSLT_RVT_VARIABLE" id="XSLT_RVT_VARIABLE"></a>Macro: XSLT_RVT_VARIABLE</h3><pre>#define XSLT_RVT_VARIABLE</pre><p>RVT is part of a local variable and destroyed after the variable goes out of scope.</p>
 <h3><a name="xsltAddStackElemList" id="xsltAddStackElemList"></a>Function: xsltAddStackElemList</h3><pre class="programlisting">int    xsltAddStackElemList            (<a href="libxslt-xsltInternals.html#xsltTransformContextPtr">xsltTransformContextPtr</a> ctxt, <br />                                   <a href="libxslt-xsltInternals.html#xsltStackElemPtr">xsltStackElemPtr</a> elems)<br />
 </pre><p>Push an element list onto the stack.</p>
 <div class="variablelist"><table border="0"><col align="left" /><tbody><tr><td><span class="term"><i><tt>ctxt</tt></i>:</span></td><td>xn XSLT transformation context</td></tr><tr><td><span class="term"><i><tt>elems</tt></i>:</span></td><td>a stack element list</td></tr><tr><td><span class="term"><i><tt>Returns</tt></i>:</span></td><td>0 in case of success, -1 in case of failure.</td></tr></tbody></table></div><h3><a name="xsltEvalGlobalVariables" id="xsltEvalGlobalVariables"></a>Function: xsltEvalGlobalVariables</h3><pre class="programlisting">int      xsltEvalGlobalVariables         (<a href="libxslt-xsltInternals.html#xsltTransformContextPtr">xsltTransformContextPtr</a> ctxt)<br />
index 5cd9cc3..6c45032 100644 (file)
@@ -125,12 +125,14 @@ The content of this structure is not made public by the API.
 <pre class="programlisting">void       <a href="#xsltCompileAttr">xsltCompileAttr</a>                  (<a href="libxslt-xsltInternals.html#xsltStylesheetPtr">xsltStylesheetPtr</a> style, <br />                                      xmlAttrPtr attr)</pre>
 <pre class="programlisting">xmlDocPtr  <a href="#xsltCreateRVT">xsltCreateRVT</a>              (<a href="libxslt-xsltInternals.html#xsltTransformContextPtr">xsltTransformContextPtr</a> ctxt)</pre>
 <pre class="programlisting"><a href="libxslt-xsltInternals.html#xsltDecimalFormatPtr">xsltDecimalFormatPtr</a> <a href="#xsltDecimalFormatGetByName">xsltDecimalFormatGetByName</a>    (<a href="libxslt-xsltInternals.html#xsltStylesheetPtr">xsltStylesheetPtr</a> style, <br />                                                      xmlChar * name)</pre>
+<pre class="programlisting"><a href="libxslt-xsltInternals.html#xsltDecimalFormatPtr">xsltDecimalFormatPtr</a> <a href="#xsltDecimalFormatGetByQName">xsltDecimalFormatGetByQName</a>  (<a href="libxslt-xsltInternals.html#xsltStylesheetPtr">xsltStylesheetPtr</a> style, <br />                                                      const xmlChar * nsUri, <br />                                                   const xmlChar * name)</pre>
 <pre class="programlisting">Function type: <a href="#xsltElemPreCompDeallocator">xsltElemPreCompDeallocator</a>
 void   <a href="#xsltElemPreCompDeallocator">xsltElemPreCompDeallocator</a>    (<a href="libxslt-xsltInternals.html#xsltElemPreCompPtr">xsltElemPreCompPtr</a> comp)
 </pre>
 <pre class="programlisting">xmlChar *  <a href="#xsltEvalAVT">xsltEvalAVT</a>          (<a href="libxslt-xsltInternals.html#xsltTransformContextPtr">xsltTransformContextPtr</a> ctxt, <br />                                   void * avt, <br />                                      xmlNodePtr node)</pre>
 <pre class="programlisting">int        <a href="#xsltExtensionInstructionResultFinalize">xsltExtensionInstructionResultFinalize</a>    (<a href="libxslt-xsltInternals.html#xsltTransformContextPtr">xsltTransformContextPtr</a> ctxt)</pre>
 <pre class="programlisting">int        <a href="#xsltExtensionInstructionResultRegister">xsltExtensionInstructionResultRegister</a>    (<a href="libxslt-xsltInternals.html#xsltTransformContextPtr">xsltTransformContextPtr</a> ctxt, <br />                                           xmlXPathObjectPtr obj)</pre>
+<pre class="programlisting">int        <a href="#xsltFlagRVTs">xsltFlagRVTs</a>                        (<a href="libxslt-xsltInternals.html#xsltTransformContextPtr">xsltTransformContextPtr</a> ctxt, <br />                                   xmlXPathObjectPtr obj, <br />                                   void * val)</pre>
 <pre class="programlisting">xmlXPathError      <a href="#xsltFormatNumberConversion">xsltFormatNumberConversion</a>    (<a href="libxslt-xsltInternals.html#xsltDecimalFormatPtr">xsltDecimalFormatPtr</a> self, <br />                                                 xmlChar * format, <br />                                                double number, <br />                                           xmlChar ** result)</pre>
 <pre class="programlisting">void       <a href="#xsltFreeAVTList">xsltFreeAVTList</a>                  (void * avt)</pre>
 <pre class="programlisting">void       <a href="#xsltFreeRVTs">xsltFreeRVTs</a>                        (<a href="libxslt-xsltInternals.html#xsltTransformContextPtr">xsltTransformContextPtr</a> ctxt)</pre>
@@ -250,6 +252,7 @@ void        <a href="#xsltTransformFunction">xsltTransformFunction</a>              (<a href="libxs
     xmlChar *  percent
     xmlChar *  permille
     xmlChar *  zeroDigit
+    const xmlChar *    nsUri
 }</pre><h3><a name="xsltDocument" id="xsltDocument">Structure xsltDocument</a></h3><pre class="programlisting">Structure xsltDocument<br />struct _xsltDocument {
     struct _xsltDocument *     next    : documents are kept in a chained list
     int        main    : is this the main document
@@ -560,6 +563,7 @@ The content of this structure is not made public by the API.
     <a href="libxslt-xsltInternals.html#xsltCompilerCtxtPtr">xsltCompilerCtxtPtr</a>   compCtxt        : TODO: Change this to (void *).
     <a href="libxslt-xsltInternals.html#xsltPrincipalStylesheetDataPtr">xsltPrincipalStylesheetDataPtr</a>     principalData   : * Forwards-compatible processing *
     int        forwards_compatible
+    xmlHashTablePtr    namedTemplates  : hash table of named templates
 }</pre><h3><a name="xsltTemplate" id="xsltTemplate">Structure xsltTemplate</a></h3><pre class="programlisting">Structure xsltTemplate<br />struct _xsltTemplate {
     struct _xsltTemplate *     next    : chained list sorted by priority
     struct _xsltStylesheet *   style   : the containing stylesheet
@@ -636,8 +640,8 @@ The content of this structure is not made public by the API.
     xmlDocPtr  persistRVT      : list of persistant RVTs
     int        ctxtflags       : * Speed optimization when coalescing tex
     const xmlChar *    lasttext        : last text node content
-    unsigned int       lasttsize       : last text node size
-    unsigned int       lasttuse        : * Per Context Debugging *
+    int        lasttsize       : last text node size
+    int        lasttuse        : * Per Context Debugging *
     int        debugStatus     : the context level debug status
     unsigned long *    traceCode       : pointer to the variable holding the mas
     int        parserOptions   : * dictionary: shared between stylesheet,
@@ -652,9 +656,9 @@ The content of this structure is not made public by the API.
     <a href="libxslt-xsltInternals.html#xsltTransformCachePtr">xsltTransformCachePtr</a>       cache
     void *     contextVariable : the current variable item
     xmlDocPtr  localRVT        : list of local tree fragments; will be f
-    xmlDocPtr  localRVTBase
+    xmlDocPtr  localRVTBase    : Obsolete
     int        keyInitLevel    : Needed to catch recursive keys issues
-    int        funcLevel       : Needed to catch recursive functions iss
+    int        depth   : Needed to catch recursions
     int        maxTemplateDepth
     int        maxTemplateVars
 }</pre><h3>Enum <a name="xsltTransformState" id="xsltTransformState">xsltTransformState</a></h3><pre class="programlisting">Enum xsltTransformState {
@@ -678,16 +682,20 @@ The content of this structure is not made public by the API.
 </pre><p>Creates a Result Value Tree (the XSLT 1.0 term for this is "Result Tree Fragment")</p>
 <div class="variablelist"><table border="0"><col align="left" /><tbody><tr><td><span class="term"><i><tt>ctxt</tt></i>:</span></td><td>an XSLT transformation context</td></tr><tr><td><span class="term"><i><tt>Returns</tt></i>:</span></td><td>the result value tree or NULL in case of API or internal errors.</td></tr></tbody></table></div><h3><a name="xsltDecimalFormatGetByName" id="xsltDecimalFormatGetByName"></a>Function: xsltDecimalFormatGetByName</h3><pre class="programlisting"><a href="libxslt-xsltInternals.html#xsltDecimalFormatPtr">xsltDecimalFormatPtr</a> xsltDecimalFormatGetByName      (<a href="libxslt-xsltInternals.html#xsltStylesheetPtr">xsltStylesheetPtr</a> style, <br />                                                      xmlChar * name)<br />
 </pre><p>Find decimal-format by name</p>
-<div class="variablelist"><table border="0"><col align="left" /><tbody><tr><td><span class="term"><i><tt>style</tt></i>:</span></td><td>the XSLT stylesheet</td></tr><tr><td><span class="term"><i><tt>name</tt></i>:</span></td><td>the decimal-format name to find</td></tr><tr><td><span class="term"><i><tt>Returns</tt></i>:</span></td><td>the <a href="libxslt-xsltInternals.html#xsltDecimalFormatPtr">xsltDecimalFormatPtr</a></td></tr></tbody></table></div><h3><a name="xsltElemPreCompDeallocator" id="xsltElemPreCompDeallocator"></a>Function type: xsltElemPreCompDeallocator</h3><pre class="programlisting">Function type: xsltElemPreCompDeallocator
+<div class="variablelist"><table border="0"><col align="left" /><tbody><tr><td><span class="term"><i><tt>style</tt></i>:</span></td><td>the XSLT stylesheet</td></tr><tr><td><span class="term"><i><tt>name</tt></i>:</span></td><td>the decimal-format name to find</td></tr><tr><td><span class="term"><i><tt>Returns</tt></i>:</span></td><td>the <a href="libxslt-xsltInternals.html#xsltDecimalFormatPtr">xsltDecimalFormatPtr</a></td></tr></tbody></table></div><h3><a name="xsltDecimalFormatGetByQName" id="xsltDecimalFormatGetByQName"></a>Function: xsltDecimalFormatGetByQName</h3><pre class="programlisting"><a href="libxslt-xsltInternals.html#xsltDecimalFormatPtr">xsltDecimalFormatPtr</a> xsltDecimalFormatGetByQName     (<a href="libxslt-xsltInternals.html#xsltStylesheetPtr">xsltStylesheetPtr</a> style, <br />                                                      const xmlChar * nsUri, <br />                                                   const xmlChar * name)<br />
+</pre><p>Find decimal-format by QName</p>
+<div class="variablelist"><table border="0"><col align="left" /><tbody><tr><td><span class="term"><i><tt>style</tt></i>:</span></td><td>the XSLT stylesheet</td></tr><tr><td><span class="term"><i><tt>nsUri</tt></i>:</span></td><td>the namespace URI of the QName</td></tr><tr><td><span class="term"><i><tt>name</tt></i>:</span></td><td>the local part of the QName</td></tr><tr><td><span class="term"><i><tt>Returns</tt></i>:</span></td><td>the <a href="libxslt-xsltInternals.html#xsltDecimalFormatPtr">xsltDecimalFormatPtr</a></td></tr></tbody></table></div><h3><a name="xsltElemPreCompDeallocator" id="xsltElemPreCompDeallocator"></a>Function type: xsltElemPreCompDeallocator</h3><pre class="programlisting">Function type: xsltElemPreCompDeallocator
 void   xsltElemPreCompDeallocator      (<a href="libxslt-xsltInternals.html#xsltElemPreCompPtr">xsltElemPreCompPtr</a> comp)
 </pre><p>Deallocates an #xsltElemPreComp structure.</p><div class="variablelist"><table border="0"><col align="left" /><tbody><tr><td><span class="term"><i><tt>comp</tt></i>:</span></td><td>the #xsltElemPreComp to free up</td></tr></tbody></table></div><br />
 <h3><a name="xsltEvalAVT" id="xsltEvalAVT"></a>Function: xsltEvalAVT</h3><pre class="programlisting">xmlChar * xsltEvalAVT             (<a href="libxslt-xsltInternals.html#xsltTransformContextPtr">xsltTransformContextPtr</a> ctxt, <br />                                   void * avt, <br />                                      xmlNodePtr node)<br />
 </pre><p>Process the given AVT, and return the new string value.</p>
 <div class="variablelist"><table border="0"><col align="left" /><tbody><tr><td><span class="term"><i><tt>ctxt</tt></i>:</span></td><td>the XSLT transformation context</td></tr><tr><td><span class="term"><i><tt>avt</tt></i>:</span></td><td>the prevompiled attribute value template info</td></tr><tr><td><span class="term"><i><tt>node</tt></i>:</span></td><td>the node hosting the attribute</td></tr><tr><td><span class="term"><i><tt>Returns</tt></i>:</span></td><td>the computed string value or NULL, must be deallocated by the caller.</td></tr></tbody></table></div><h3><a name="xsltExtensionInstructionResultFinalize" id="xsltExtensionInstructionResultFinalize"></a>Function: xsltExtensionInstructionResultFinalize</h3><pre class="programlisting">int        xsltExtensionInstructionResultFinalize  (<a href="libxslt-xsltInternals.html#xsltTransformContextPtr">xsltTransformContextPtr</a> ctxt)<br />
 </pre><p>Finalizes the data (e.g. result tree fragments) created within a value-returning process (e.g. EXSLT's function). Tree fragments marked as being returned by a function are set to normal state, which means that the fragment garbage collector will free them after the function-calling process exits.</p>
-<div class="variablelist"><table border="0"><col align="left" /><tbody><tr><td><span class="term"><i><tt>ctxt</tt></i>:</span></td><td>an XSLT transformation context</td></tr><tr><td><span class="term"><i><tt>Returns</tt></i>:</span></td><td>0 in case of success and -1 in case of API or internal errors.</td></tr></tbody></table></div><h3><a name="xsltExtensionInstructionResultRegister" id="xsltExtensionInstructionResultRegister"></a>Function: xsltExtensionInstructionResultRegister</h3><pre class="programlisting">int      xsltExtensionInstructionResultRegister  (<a href="libxslt-xsltInternals.html#xsltTransformContextPtr">xsltTransformContextPtr</a> ctxt, <br />                                           xmlXPathObjectPtr obj)<br />
+<div class="variablelist"><table border="0"><col align="left" /><tbody><tr><td><span class="term"><i><tt>ctxt</tt></i>:</span></td><td>an XSLT transformation context</td></tr><tr><td><span class="term"><i><tt>Returns</tt></i>:</span></td><td>0 in case of success and -1 in case of API or internal errors. This function is unsupported in newer releases of libxslt.</td></tr></tbody></table></div><h3><a name="xsltExtensionInstructionResultRegister" id="xsltExtensionInstructionResultRegister"></a>Function: xsltExtensionInstructionResultRegister</h3><pre class="programlisting">int   xsltExtensionInstructionResultRegister  (<a href="libxslt-xsltInternals.html#xsltTransformContextPtr">xsltTransformContextPtr</a> ctxt, <br />                                           xmlXPathObjectPtr obj)<br />
 </pre><p>Marks the result of a value-returning extension instruction in order to avoid it being garbage collected before the extension instruction exits. Note that one still has to additionally register any newly created tree fragments (via xsltCreateRVT()) with xsltRegisterLocalRVT().</p>
-<div class="variablelist"><table border="0"><col align="left" /><tbody><tr><td><span class="term"><i><tt>ctxt</tt></i>:</span></td><td>an XSLT transformation context</td></tr><tr><td><span class="term"><i><tt>obj</tt></i>:</span></td><td>an XPath object to be inspected for result tree fragments</td></tr><tr><td><span class="term"><i><tt>Returns</tt></i>:</span></td><td>0 in case of success and -1 in case of error.</td></tr></tbody></table></div><h3><a name="xsltFormatNumberConversion" id="xsltFormatNumberConversion"></a>Function: xsltFormatNumberConversion</h3><pre class="programlisting">xmlXPathError       xsltFormatNumberConversion      (<a href="libxslt-xsltInternals.html#xsltDecimalFormatPtr">xsltDecimalFormatPtr</a> self, <br />                                                 xmlChar * format, <br />                                                double number, <br />                                           xmlChar ** result)<br />
+<div class="variablelist"><table border="0"><col align="left" /><tbody><tr><td><span class="term"><i><tt>ctxt</tt></i>:</span></td><td>an XSLT transformation context</td></tr><tr><td><span class="term"><i><tt>obj</tt></i>:</span></td><td>an XPath object to be inspected for result tree fragments</td></tr><tr><td><span class="term"><i><tt>Returns</tt></i>:</span></td><td>0 in case of success and -1 in case of error. It isn't necessary to call this function in newer releases of libxslt.</td></tr></tbody></table></div><h3><a name="xsltFlagRVTs" id="xsltFlagRVTs"></a>Function: xsltFlagRVTs</h3><pre class="programlisting">int    xsltFlagRVTs                    (<a href="libxslt-xsltInternals.html#xsltTransformContextPtr">xsltTransformContextPtr</a> ctxt, <br />                                   xmlXPathObjectPtr obj, <br />                                   void * val)<br />
+</pre><p>Updates ownership information of RVTs in @obj according to @val. @val = <a href="libxslt-variables.html#XSLT_RVT_FUNC_RESULT">XSLT_RVT_FUNC_RESULT</a> for the result of an extension function, so its RVTs won't be destroyed after leaving the returning scope. @val = <a href="libxslt-variables.html#XSLT_RVT_LOCAL">XSLT_RVT_LOCAL</a> for the result of an extension function to reset the state of its RVTs after it was returned to a new scope. @val = <a href="libxslt-variables.html#XSLT_RVT_GLOBAL">XSLT_RVT_GLOBAL</a> for parts of global variables.</p>
+<div class="variablelist"><table border="0"><col align="left" /><tbody><tr><td><span class="term"><i><tt>ctxt</tt></i>:</span></td><td>an XSLT transformation context</td></tr><tr><td><span class="term"><i><tt>obj</tt></i>:</span></td><td>an XPath object to be inspected for result tree fragments</td></tr><tr><td><span class="term"><i><tt>val</tt></i>:</span></td><td>the flag value</td></tr><tr><td><span class="term"><i><tt>Returns</tt></i>:</span></td><td>0 in case of success and -1 in case of error.</td></tr></tbody></table></div><h3><a name="xsltFormatNumberConversion" id="xsltFormatNumberConversion"></a>Function: xsltFormatNumberConversion</h3><pre class="programlisting">xmlXPathError        xsltFormatNumberConversion      (<a href="libxslt-xsltInternals.html#xsltDecimalFormatPtr">xsltDecimalFormatPtr</a> self, <br />                                                 xmlChar * format, <br />                                                double number, <br />                                           xmlChar ** result)<br />
 </pre><p>format-number() uses the JDK 1.1 DecimalFormat class: http://java.sun.com/products/jdk/1.1/docs/api/java.text.DecimalFormat.html Structure: pattern := subpattern{;subpattern} subpattern := {prefix}integer{.fraction}{suffix} prefix := '\\u0000'..'\\uFFFD' - specialCharacters suffix := '\\u0000'..'\\uFFFD' - specialCharacters integer := '#'* '0'* '0' fraction := '0'* '#'* Notation: X* 0 or more instances of X (X | Y) either X or Y. X..Y any character from X up to Y, inclusive. S - T characters in S, except those in T Special Characters: Symbol Meaning 0 a digit # a digit, zero shows as absent . placeholder for decimal separator , placeholder for grouping separator. ; separates formats. - default negative prefix. % multiply by 100 and show as percentage ? multiply by 1000 and show as per mille X any other characters can be used in the prefix or suffix ' used to quote special characters in a prefix or suffix.</p>
 <div class="variablelist"><table border="0"><col align="left" /><tbody><tr><td><span class="term"><i><tt>self</tt></i>:</span></td><td>the decimal format</td></tr><tr><td><span class="term"><i><tt>format</tt></i>:</span></td><td>the format requested</td></tr><tr><td><span class="term"><i><tt>number</tt></i>:</span></td><td>the value to format</td></tr><tr><td><span class="term"><i><tt>result</tt></i>:</span></td><td>the place to ouput the result</td></tr><tr><td><span class="term"><i><tt>Returns</tt></i>:</span></td><td>a possible XPath error</td></tr></tbody></table></div><h3><a name="xsltFreeAVTList" id="xsltFreeAVTList"></a>Function: xsltFreeAVTList</h3><pre class="programlisting">void      xsltFreeAVTList                 (void * avt)<br />
 </pre><p>Free up the memory associated to the attribute value templates</p>
index 155f050..0fd8dba 100644 (file)
@@ -119,7 +119,7 @@ int xsltAddCallCallback             (<a href="libxslt-xsltInternals.html#xsltTemplatePtr">x
 </pre><p>reorder the current node list @list accordingly to the document order This function is slow, obsolete and should not be used anymore.</p>
 <div class="variablelist"><table border="0"><col align="left" /><tbody><tr><td><span class="term"><i><tt>list</tt></i>:</span></td><td>the node set</td></tr></tbody></table></div><h3><a name="xsltDropCallCallback" id="xsltDropCallCallback"></a>Function type: xsltDropCallCallback</h3><pre class="programlisting">Function type: xsltDropCallCallback
 void   xsltDropCallCallback            (void)
-</pre><p></p><div class="variablelist"><table border="0"><col align="left" /><tbody></tbody></table></div><br />
+</pre><p></p><br />
 <h3><a name="xsltGetCNsProp" id="xsltGetCNsProp"></a>Function: xsltGetCNsProp</h3><pre class="programlisting">const xmlChar *  xsltGetCNsProp          (<a href="libxslt-xsltInternals.html#xsltStylesheetPtr">xsltStylesheetPtr</a> style, <br />                                      xmlNodePtr node, <br />                                         const xmlChar * name, <br />                                    const xmlChar * nameSpace)<br />
 </pre><p>Similar to xmlGetNsProp() but with a slightly different semantic Search and get the value of an attribute associated to a node This attribute has to be anchored in the namespace specified, or has no namespace and the element is in that namespace. This does the entity substitution. This function looks in DTD attribute declaration for #FIXED or default declaration values unless DTD use has been turned off.</p>
 <div class="variablelist"><table border="0"><col align="left" /><tbody><tr><td><span class="term"><i><tt>style</tt></i>:</span></td><td>the stylesheet</td></tr><tr><td><span class="term"><i><tt>node</tt></i>:</span></td><td>the node</td></tr><tr><td><span class="term"><i><tt>name</tt></i>:</span></td><td>the attribute name</td></tr><tr><td><span class="term"><i><tt>nameSpace</tt></i>:</span></td><td>the URI of the namespace</td></tr><tr><td><span class="term"><i><tt>Returns</tt></i>:</span></td><td>the attribute value or NULL if not found. The string is allocated in the stylesheet dictionary.</td></tr></tbody></table></div><h3><a name="xsltGetDebuggerStatus" id="xsltGetDebuggerStatus"></a>Function: xsltGetDebuggerStatus</h3><pre class="programlisting">int  xsltGetDebuggerStatus           (void)<br />
index 1cf7c89..a0bcbdf 100644 (file)
@@ -83,7 +83,6 @@
      <exports symbol='XSLT_XALAN_NAMESPACE' type='macro'/>
      <exports symbol='XSLT_SAXON_NAMESPACE' type='macro'/>
      <exports symbol='XSLT_LIBXSLT_NAMESPACE' type='macro'/>
-     <exports symbol='XSLT_NORM_SAXON_NAMESPACE' type='macro'/>
      <exports symbol='xsltFunctionNodeSet' type='function'/>
      <exports symbol='xsltRegisterExtras' type='function'/>
      <exports symbol='xsltDebug' type='function'/>
      <description>interface for the variable matching and lookup. </description>
      <author>Daniel Veillard </author>
      <exports symbol='XSLT_REGISTER_VARIABLE_LOOKUP' type='macro'/>
+     <exports symbol='XSLT_RVT_FUNC_RESULT' type='macro'/>
+     <exports symbol='XSLT_RVT_GLOBAL' type='macro'/>
+     <exports symbol='XSLT_RVT_LOCAL' type='macro'/>
+     <exports symbol='XSLT_RVT_VARIABLE' type='macro'/>
      <exports symbol='xsltFreeGlobalVariables' type='function'/>
      <exports symbol='xsltQuoteUserParams' type='function'/>
      <exports symbol='xsltXPathVariableLookup' type='function'/>
      <exports symbol='xsltParseStylesheetImportedDoc' type='function'/>
      <exports symbol='xsltFreeStackElemList' type='function'/>
      <exports symbol='xsltAllocateExtra' type='function'/>
+     <exports symbol='xsltFlagRVTs' type='function'/>
      <exports symbol='xsltParseSequenceConstructor' type='function'/>
      <exports symbol='xsltRegisterTmpRVT' type='function'/>
      <exports symbol='xsltInitAllDocKeys' type='function'/>
+     <exports symbol='xsltDecimalFormatGetByName' type='function'/>
      <exports symbol='xsltExtensionInstructionResultFinalize' type='function'/>
      <exports symbol='xsltPointerListFree' type='function'/>
      <exports symbol='xsltIsBlank' type='function'/>
      <exports symbol='xsltParseTemplateContent' type='function'/>
      <exports symbol='xsltNewStylesheet' type='function'/>
      <exports symbol='xsltParseStylesheetProcess' type='function'/>
-     <exports symbol='xsltDecimalFormatGetByName' type='function'/>
+     <exports symbol='xsltDecimalFormatGetByQName' type='function'/>
      <exports symbol='xsltTransformFunction' type='function'/>
      <exports symbol='xsltRegisterLocalRVT' type='function'/>
      <exports symbol='xsltParseStylesheetDoc' type='function'/>
     <macro name='XSLT_NAMESPACE' file='xslt'>
       <info>The XSLT specification namespace.</info>
     </macro>
-    <macro name='XSLT_NORM_SAXON_NAMESPACE' file='extra'>
-      <info>This is Norm&apos;s namespace for SAXON extensions.</info>
-    </macro>
     <macro name='XSLT_PARSE_OPTIONS' file='xslt'>
       <info>The set of options to pass to an xmlReadxxx when loading files for XSLT consumption.</info>
     </macro>
       <arg name='ctxt' info='the transformation context'/>
       <arg name='nr' info='the index'/>
     </macro>
+    <macro name='XSLT_RVT_FUNC_RESULT' file='variables'>
+      <info>RVT is part of results returned with func:result. The RVT won&apos;t be destroyed after exiting a template and will be reset to XSLT_RVT_LOCAL or XSLT_RVT_VARIABLE in the template that receives the return value.</info>
+    </macro>
+    <macro name='XSLT_RVT_GLOBAL' file='variables'>
+      <info>RVT is part of a global variable.</info>
+    </macro>
+    <macro name='XSLT_RVT_LOCAL' file='variables'>
+      <info>RVT is destroyed after the current instructions ends.</info>
+    </macro>
+    <macro name='XSLT_RVT_VARIABLE' file='variables'>
+      <info>RVT is part of a local variable and destroyed after the variable goes out of scope.</info>
+    </macro>
     <macro name='XSLT_SAXON_NAMESPACE' file='extra'>
       <info>This is Michael Kay&apos;s Saxon processor namespace for extensions.</info>
     </macro>
@@ -991,6 +1005,7 @@ extension element'/>
       <field name='percent' type='xmlChar *' info=''/>
       <field name='permille' type='xmlChar *' info=''/>
       <field name='zeroDigit' type='xmlChar *' info=''/>
+      <field name='nsUri' type='const xmlChar *' info=''/>
     </struct>
     <typedef name='xsltDecimalFormatPtr' file='xsltInternals' type='xsltDecimalFormat *'/>
     <struct name='xsltDocument' file='xsltInternals' type='struct _xsltDocument'>
@@ -1435,6 +1450,7 @@ TODO: We need to get rid of this.
       <field name='principalData' type='xsltPrincipalStylesheetDataPtr' info='* Forwards-compatible processing
 *'/>
       <field name='forwards_compatible' type='int' info=''/>
+      <field name='namedTemplates' type='xmlHashTablePtr' info=' hash table of named templates'/>
     </struct>
     <typedef name='xsltStylesheetPtr' file='xsltInternals' type='xsltStylesheet *'/>
     <struct name='xsltTemplate' file='xsltInternals' type='struct _xsltTemplate'>
@@ -1524,8 +1540,8 @@ TODO: We need to get rid of this.
       <field name='ctxtflags' type='int' info='* Speed optimization when coalescing text nodes
 *'/>
       <field name='lasttext' type='const xmlChar *' info=' last text node content'/>
-      <field name='lasttsize' type='unsigned int' info=' last text node size'/>
-      <field name='lasttuse' type='unsigned int' info='* Per Context Debugging
+      <field name='lasttsize' type='int' info=' last text node size'/>
+      <field name='lasttuse' type='int' info='* Per Context Debugging
 *'/>
       <field name='debugStatus' type='int' info=' the context level debug status'/>
       <field name='traceCode' type='unsigned long *' info=' pointer to the variable holding the mask'/>
@@ -1545,9 +1561,9 @@ TODO: We need to get rid of this.
       <field name='localRVT' type='xmlDocPtr' info=' list of local tree fragments; will be freed when
 the instruction which created the fragment
 exits'/>
-      <field name='localRVTBase' type='xmlDocPtr' info=''/>
+      <field name='localRVTBase' type='xmlDocPtr' info=' Obsolete'/>
       <field name='keyInitLevel' type='int' info=' Needed to catch recursive keys issues'/>
-      <field name='funcLevel' type='int' info=' Needed to catch recursive functions issues'/>
+      <field name='depth' type='int' info=' Needed to catch recursions'/>
       <field name='maxTemplateDepth' type='int' info=''/>
       <field name='maxTemplateVars' type='int' info=''/>
     </struct>
@@ -1720,9 +1736,9 @@ exits'/>
       <info>Process the xslt attribute node on the source node</info>
       <return type='void'/>
       <arg name='ctxt' type='xsltTransformContextPtr' info='a XSLT process context'/>
-      <arg name='node' type='xmlNodePtr' info='the node in the source tree.'/>
-      <arg name='inst' type='xmlNodePtr' info='the xslt attribute node'/>
-      <arg name='comp' type='xsltStylePreCompPtr' info='precomputed information'/>
+      <arg name='contextNode' type='xmlNodePtr' info='the current node in the source tree'/>
+      <arg name='inst' type='xmlNodePtr' info='the xsl:attribute element'/>
+      <arg name='castedComp' type='xsltStylePreCompPtr' info='precomputed information'/>
     </function>
     <function name='xsltCalibrateAdjust' file='xsltutils'>
       <info>Used for to correct the calibration for xsltTimestamp()</info>
@@ -1880,6 +1896,13 @@ exits'/>
       <arg name='style' type='xsltStylesheetPtr' info='the XSLT stylesheet'/>
       <arg name='name' type='xmlChar *' info='the decimal-format name to find'/>
     </function>
+    <function name='xsltDecimalFormatGetByQName' file='xsltInternals'>
+      <info>Find decimal-format by QName</info>
+      <return type='xsltDecimalFormatPtr' info='the xsltDecimalFormatPtr'/>
+      <arg name='style' type='xsltStylesheetPtr' info='the XSLT stylesheet'/>
+      <arg name='nsUri' type='const xmlChar *' info='the namespace URI of the QName'/>
+      <arg name='name' type='const xmlChar *' info='the local part of the QName'/>
+    </function>
     <function name='xsltDefaultSortFunction' file='xsltutils'>
       <info>reorder the current node list accordingly to the set of sorting requirement provided by the arry of nodes.</info>
       <return type='void'/>
@@ -2069,12 +2092,12 @@ exits'/>
     </functype>
     <function name='xsltExtensionInstructionResultFinalize' file='xsltInternals'>
       <info>Finalizes the data (e.g. result tree fragments) created within a value-returning process (e.g. EXSLT&apos;s function). Tree fragments marked as being returned by a function are set to normal state, which means that the fragment garbage collector will free them after the function-calling process exits.</info>
-      <return type='int' info='0 in case of success and -1 in case of API or internal errors.'/>
+      <return type='int' info='0 in case of success and -1 in case of API or internal errors.  This function is unsupported in newer releases of libxslt.'/>
       <arg name='ctxt' type='xsltTransformContextPtr' info='an XSLT transformation context'/>
     </function>
     <function name='xsltExtensionInstructionResultRegister' file='xsltInternals'>
       <info>Marks the result of a value-returning extension instruction in order to avoid it being garbage collected before the extension instruction exits. Note that one still has to additionally register any newly created tree fragments (via xsltCreateRVT()) with xsltRegisterLocalRVT().</info>
-      <return type='int' info='0 in case of success and -1 in case of error.'/>
+      <return type='int' info='0 in case of success and -1 in case of error.  It isn&apos;t necessary to call this function in newer releases of libxslt.'/>
       <arg name='ctxt' type='xsltTransformContextPtr' info='an XSLT transformation context'/>
       <arg name='obj' type='xmlXPathObjectPtr' info='an XPath object to be inspected for result tree fragments'/>
     </function>
@@ -2097,6 +2120,13 @@ exits'/>
       <arg name='name' type='const xmlChar *' info='the template name'/>
       <arg name='nameURI' type='const xmlChar *' info='the template name URI'/>
     </function>
+    <function name='xsltFlagRVTs' file='xsltInternals'>
+      <info>Updates ownership information of RVTs in @obj according to @val.  @val = XSLT_RVT_FUNC_RESULT for the result of an extension function, so its RVTs won&apos;t be destroyed after leaving the returning scope. @val = XSLT_RVT_LOCAL for the result of an extension function to reset the state of its RVTs after it was returned to a new scope. @val = XSLT_RVT_GLOBAL for parts of global variables.</info>
+      <return type='int' info='0 in case of success and -1 in case of error.'/>
+      <arg name='ctxt' type='xsltTransformContextPtr' info='an XSLT transformation context'/>
+      <arg name='obj' type='xmlXPathObjectPtr' info='an XPath object to be inspected for result tree fragments'/>
+      <arg name='val' type='void *' info='the flag value'/>
+    </function>
     <function name='xsltForEach' file='transform'>
       <info>Process the xslt for-each node on the source node</info>
       <return type='void'/>
index 3d2169f..ce0f95f 100644 (file)
@@ -80,7 +80,6 @@
     <reference name='XSLT_MARK_RES_TREE_FRAG' href='html/libxslt-xsltInternals.html#XSLT_MARK_RES_TREE_FRAG'/>
     <reference name='XSLT_MAX_SORT' href='html/libxslt-xsltInternals.html#XSLT_MAX_SORT'/>
     <reference name='XSLT_NAMESPACE' href='html/libxslt-xslt.html#XSLT_NAMESPACE'/>
-    <reference name='XSLT_NORM_SAXON_NAMESPACE' href='html/libxslt-extra.html#XSLT_NORM_SAXON_NAMESPACE'/>
     <reference name='XSLT_OUTPUT_HTML' href='html/libxslt-xsltInternals.html#XSLT_OUTPUT_HTML'/>
     <reference name='XSLT_OUTPUT_TEXT' href='html/libxslt-xsltInternals.html#XSLT_OUTPUT_TEXT'/>
     <reference name='XSLT_OUTPUT_XML' href='html/libxslt-xsltInternals.html#XSLT_OUTPUT_XML'/>
     <reference name='XSLT_RUNTIME_EXTRA' href='html/libxslt-xsltInternals.html#XSLT_RUNTIME_EXTRA'/>
     <reference name='XSLT_RUNTIME_EXTRA_FREE' href='html/libxslt-xsltInternals.html#XSLT_RUNTIME_EXTRA_FREE'/>
     <reference name='XSLT_RUNTIME_EXTRA_LST' href='html/libxslt-xsltInternals.html#XSLT_RUNTIME_EXTRA_LST'/>
+    <reference name='XSLT_RVT_FUNC_RESULT' href='html/libxslt-variables.html#XSLT_RVT_FUNC_RESULT'/>
+    <reference name='XSLT_RVT_GLOBAL' href='html/libxslt-variables.html#XSLT_RVT_GLOBAL'/>
+    <reference name='XSLT_RVT_LOCAL' href='html/libxslt-variables.html#XSLT_RVT_LOCAL'/>
+    <reference name='XSLT_RVT_VARIABLE' href='html/libxslt-variables.html#XSLT_RVT_VARIABLE'/>
     <reference name='XSLT_SAXON_NAMESPACE' href='html/libxslt-extra.html#XSLT_SAXON_NAMESPACE'/>
     <reference name='XSLT_SECPREF_CREATE_DIRECTORY' href='html/libxslt-security.html#XSLT_SECPREF_CREATE_DIRECTORY'/>
     <reference name='XSLT_SECPREF_READ_FILE' href='html/libxslt-security.html#XSLT_SECPREF_READ_FILE'/>
     <reference name='xsltDebugTraceCodes' href='html/libxslt-xsltutils.html#xsltDebugTraceCodes'/>
     <reference name='xsltDecimalFormat' href='html/libxslt-xsltInternals.html#xsltDecimalFormat'/>
     <reference name='xsltDecimalFormatGetByName' href='html/libxslt-xsltInternals.html#xsltDecimalFormatGetByName'/>
+    <reference name='xsltDecimalFormatGetByQName' href='html/libxslt-xsltInternals.html#xsltDecimalFormatGetByQName'/>
     <reference name='xsltDecimalFormatPtr' href='html/libxslt-xsltInternals.html#xsltDecimalFormatPtr'/>
     <reference name='xsltDefaultSortFunction' href='html/libxslt-xsltutils.html#xsltDefaultSortFunction'/>
     <reference name='xsltDoSortFunction' href='html/libxslt-xsltutils.html#xsltDoSortFunction'/>
     <reference name='xsltFindDocument' href='html/libxslt-documents.html#xsltFindDocument'/>
     <reference name='xsltFindElemSpaceHandling' href='html/libxslt-imports.html#xsltFindElemSpaceHandling'/>
     <reference name='xsltFindTemplate' href='html/libxslt-imports.html#xsltFindTemplate'/>
+    <reference name='xsltFlagRVTs' href='html/libxslt-xsltInternals.html#xsltFlagRVTs'/>
     <reference name='xsltForEach' href='html/libxslt-transform.html#xsltForEach'/>
     <reference name='xsltFormatNumberConversion' href='html/libxslt-xsltInternals.html#xsltFormatNumberConversion'/>
     <reference name='xsltFormatNumberFunction' href='html/libxslt-functions.html#xsltFormatNumberFunction'/>
       <ref name='XSLT_MARK_RES_TREE_FRAG'/>
       <ref name='XSLT_MAX_SORT'/>
       <ref name='XSLT_NAMESPACE'/>
-      <ref name='XSLT_NORM_SAXON_NAMESPACE'/>
       <ref name='XSLT_OUTPUT_HTML'/>
       <ref name='XSLT_OUTPUT_TEXT'/>
       <ref name='XSLT_OUTPUT_XML'/>
       <ref name='XSLT_RUNTIME_EXTRA'/>
       <ref name='XSLT_RUNTIME_EXTRA_FREE'/>
       <ref name='XSLT_RUNTIME_EXTRA_LST'/>
+      <ref name='XSLT_RVT_FUNC_RESULT'/>
+      <ref name='XSLT_RVT_GLOBAL'/>
+      <ref name='XSLT_RVT_LOCAL'/>
+      <ref name='XSLT_RVT_VARIABLE'/>
       <ref name='XSLT_SAXON_NAMESPACE'/>
       <ref name='XSLT_SECPREF_CREATE_DIRECTORY'/>
       <ref name='XSLT_SECPREF_READ_FILE'/>
       <ref name='xsltDebugTraceCodes'/>
       <ref name='xsltDecimalFormat'/>
       <ref name='xsltDecimalFormatGetByName'/>
+      <ref name='xsltDecimalFormatGetByQName'/>
       <ref name='xsltDecimalFormatPtr'/>
       <ref name='xsltDefaultSortFunction'/>
       <ref name='xsltDoSortFunction'/>
       <ref name='xsltFindDocument'/>
       <ref name='xsltFindElemSpaceHandling'/>
       <ref name='xsltFindTemplate'/>
+      <ref name='xsltFlagRVTs'/>
       <ref name='xsltForEach'/>
       <ref name='xsltFormatNumberConversion'/>
       <ref name='xsltFormatNumberFunction'/>
     </type>
     <type name='xsltDecimalFormatPtr'>
       <ref name='xsltDecimalFormatGetByName'/>
+      <ref name='xsltDecimalFormatGetByQName'/>
     </type>
     <type name='xsltDocumentPtr'>
       <ref name='xsltFindDocument'/>
       <ref name='xsltCheckWrite'/>
       <ref name='xsltCompilePattern'/>
       <ref name='xsltCopyTextString'/>
+      <ref name='xsltDecimalFormatGetByQName'/>
       <ref name='xsltDocLoaderFunc'/>
       <ref name='xsltEvalAttrValueTemplate'/>
       <ref name='xsltEvalOneUserParam'/>
       <ref name='xsltDocLoaderFunc'/>
       <ref name='xsltEvalAVT'/>
       <ref name='xsltExtShutdownFunction'/>
+      <ref name='xsltFlagRVTs'/>
       <ref name='xsltFreeAVTList'/>
       <ref name='xsltNormalizeCompSteps'/>
       <ref name='xsltPointerListAddSize'/>
     </type>
     <type name='xmlXPathObjectPtr'>
       <ref name='xsltExtensionInstructionResultRegister'/>
+      <ref name='xsltFlagRVTs'/>
     </type>
     <type name='xmlXPathParserContextPtr'>
       <ref name='xsltDocumentFunction'/>
       <ref name='xsltCompileAttr'/>
       <ref name='xsltCompilePattern'/>
       <ref name='xsltDecimalFormatGetByName'/>
+      <ref name='xsltDecimalFormatGetByQName'/>
       <ref name='xsltDocumentComp'/>
       <ref name='xsltEvalStaticAttrValueTemplate'/>
       <ref name='xsltFreeAttributeSetsHashes'/>
       <ref name='xsltFindDocument'/>
       <ref name='xsltFindElemSpaceHandling'/>
       <ref name='xsltFindTemplate'/>
+      <ref name='xsltFlagRVTs'/>
       <ref name='xsltForEach'/>
       <ref name='xsltFreeCtxtExts'/>
       <ref name='xsltFreeDocuments'/>
     </file>
     <file name='extra'>
       <ref name='XSLT_LIBXSLT_NAMESPACE'/>
-      <ref name='XSLT_NORM_SAXON_NAMESPACE'/>
       <ref name='XSLT_SAXON_NAMESPACE'/>
       <ref name='XSLT_XALAN_NAMESPACE'/>
       <ref name='XSLT_XT_NAMESPACE'/>
     </file>
     <file name='variables'>
       <ref name='XSLT_REGISTER_VARIABLE_LOOKUP'/>
+      <ref name='XSLT_RVT_FUNC_RESULT'/>
+      <ref name='XSLT_RVT_GLOBAL'/>
+      <ref name='XSLT_RVT_LOCAL'/>
+      <ref name='XSLT_RVT_VARIABLE'/>
       <ref name='xsltAddStackElemList'/>
       <ref name='xsltEvalGlobalVariables'/>
       <ref name='xsltEvalOneUserParam'/>
       <ref name='xsltCreateRVT'/>
       <ref name='xsltDecimalFormat'/>
       <ref name='xsltDecimalFormatGetByName'/>
+      <ref name='xsltDecimalFormatGetByQName'/>
       <ref name='xsltDecimalFormatPtr'/>
       <ref name='xsltDocument'/>
       <ref name='xsltDocumentPtr'/>
       <ref name='xsltEvalAVT'/>
       <ref name='xsltExtensionInstructionResultFinalize'/>
       <ref name='xsltExtensionInstructionResultRegister'/>
+      <ref name='xsltFlagRVTs'/>
       <ref name='xsltFormatNumberConversion'/>
       <ref name='xsltFreeAVTList'/>
       <ref name='xsltFreeRVTs'/>
         </word>
         <word name='Find'>
           <ref name='xsltDecimalFormatGetByName'/>
+          <ref name='xsltDecimalFormatGetByQName'/>
           <ref name='xsltFindElemSpaceHandling'/>
           <ref name='xsltGetNamespace'/>
           <ref name='xsltGetSpecialNamespace'/>
         <word name='Needed'>
           <ref name='_xsltTransformContext'/>
         </word>
-        <word name='Norm'>
-          <ref name='XSLT_NORM_SAXON_NAMESPACE'/>
-        </word>
         <word name='Not'>
           <ref name='_xsltStylesheet'/>
           <ref name='xsltGetPlainNamespace'/>
           <ref name='xsltInitAllDocKeys'/>
         </word>
         <word name='Obsolete'>
+          <ref name='_xsltTransformContext'/>
           <ref name='xsltGetPlainNamespace'/>
           <ref name='xsltRegisterTmpRVT'/>
           <ref name='xsltTemplateProcess'/>
         <word name='QName'>
           <ref name='_xsltStackElem'/>
           <ref name='_xsltTemplate'/>
+          <ref name='xsltDecimalFormatGetByQName'/>
           <ref name='xsltEvalAttrValueTemplate'/>
           <ref name='xsltGetQNameURI'/>
           <ref name='xsltGetQNameURI2'/>
           <ref name='_xsltTransformContext'/>
         </word>
         <word name='RVT'>
+          <ref name='XSLT_RVT_FUNC_RESULT'/>
+          <ref name='XSLT_RVT_GLOBAL'/>
+          <ref name='XSLT_RVT_LOCAL'/>
+          <ref name='XSLT_RVT_VARIABLE'/>
           <ref name='_xsltTransformContext'/>
           <ref name='xsltRegisterLocalRVT'/>
           <ref name='xsltReleaseRVT'/>
         </word>
         <word name='RVTs'>
           <ref name='_xsltTransformContext'/>
+          <ref name='xsltFlagRVTs'/>
         </word>
         <word name='Read'>
           <ref name='xsltGetUTF8Char'/>
           <ref name='_xsltTransformContext'/>
         </word>
       </letter>
+    </chunk>
+    <chunk name='chunk2'>
       <letter name='S'>
         <word name='SAX'>
           <ref name='xsltRunStylesheet'/>
           <ref name='xsltRunStylesheetUser'/>
         </word>
-        <word name='SAXON'>
-          <ref name='XSLT_NORM_SAXON_NAMESPACE'/>
-        </word>
         <word name='Sampling'>
           <ref name='XSLT_TIMESTAMP_TICS_PER_SEC'/>
         </word>
           <ref name='xsltFormatNumberConversion'/>
         </word>
       </letter>
-    </chunk>
-    <chunk name='chunk2'>
       <letter name='T'>
         <word name='TEMP'>
           <ref name='_xsltCompilerCtxt'/>
         <word name='Update'>
           <ref name='xsltSetSecurityPrefs'/>
         </word>
+        <word name='Updates'>
+          <ref name='xsltFlagRVTs'/>
+        </word>
         <word name='Use'>
           <ref name='xsltRegisterTmpRVT'/>
         </word>
           <ref name='xsltRunStylesheet'/>
           <ref name='xsltRunStylesheetUser'/>
         </word>
+        <word name='XSLT_RVT_FUNC_RESULT'>
+          <ref name='xsltFlagRVTs'/>
+        </word>
+        <word name='XSLT_RVT_GLOBAL'>
+          <ref name='xsltFlagRVTs'/>
+        </word>
+        <word name='XSLT_RVT_LOCAL'>
+          <ref name='XSLT_RVT_FUNC_RESULT'/>
+          <ref name='xsltFlagRVTs'/>
+        </word>
+        <word name='XSLT_RVT_VARIABLE'>
+          <ref name='XSLT_RVT_FUNC_RESULT'/>
+        </word>
       </letter>
       <letter name='a'>
         <word name='absent'>
           <ref name='XSLT_RUNTIME_EXTRA_LST'/>
         </word>
         <word name='according'>
+          <ref name='xsltFlagRVTs'/>
           <ref name='xsltRunStylesheet'/>
           <ref name='xsltRunStylesheetUser'/>
           <ref name='xsltStrxfrm'/>
           <ref name='xsltSetDebuggerCallbacks'/>
         </word>
         <word name='after'>
+          <ref name='XSLT_RVT_FUNC_RESULT'/>
+          <ref name='XSLT_RVT_LOCAL'/>
+          <ref name='XSLT_RVT_VARIABLE'/>
           <ref name='xsltExtensionInstructionResultFinalize'/>
+          <ref name='xsltFlagRVTs'/>
           <ref name='xsltGetProfileInformation'/>
           <ref name='xsltLocaleStrcmp'/>
           <ref name='xsltParseStylesheetDoc'/>
           <ref name='xslAddCall'/>
           <ref name='xslDropCall'/>
           <ref name='xsltDocLoaderFunc'/>
+          <ref name='xsltExtensionInstructionResultRegister'/>
         </word>
         <word name='call-template'>
           <ref name='_xsltStyleItemCallTemplate'/>
         </word>
         <word name='decimal-format'>
           <ref name='xsltDecimalFormatGetByName'/>
+          <ref name='xsltDecimalFormatGetByQName'/>
         </word>
         <word name='declaration'>
           <ref name='xsltCopyNamespace'/>
           <ref name='xsltFindDocument'/>
           <ref name='xsltGetExtInfo'/>
         </word>
+        <word name='destroyed'>
+          <ref name='XSLT_RVT_FUNC_RESULT'/>
+          <ref name='XSLT_RVT_LOCAL'/>
+          <ref name='XSLT_RVT_VARIABLE'/>
+          <ref name='xsltFlagRVTs'/>
+        </word>
         <word name='details'>
           <ref name='xsltEvalOneUserParam'/>
         </word>
         <word name='end'>
           <ref name='_xsltElemPreComp'/>
         </word>
+        <word name='ends'>
+          <ref name='XSLT_RVT_LOCAL'/>
+        </word>
         <word name='engine'>
           <ref name='xsltDocLoaderFunc'/>
           <ref name='xsltSetCtxtParseOptions'/>
           <ref name='xsltRegisterTmpRVT'/>
         </word>
         <word name='exiting'>
+          <ref name='XSLT_RVT_FUNC_RESULT'/>
           <ref name='xsltApplyOneTemplate'/>
         </word>
         <word name='exits'>
         </word>
         <word name='extensions'>
           <ref name='XSLT_LIBXSLT_NAMESPACE'/>
-          <ref name='XSLT_NORM_SAXON_NAMESPACE'/>
           <ref name='XSLT_SAXON_NAMESPACE'/>
           <ref name='XSLT_XALAN_NAMESPACE'/>
           <ref name='XSLT_XT_NAMESPACE'/>
         <word name='flag'>
           <ref name='XSLT_STRANGE'/>
           <ref name='XSLT_TODO'/>
+          <ref name='xsltFlagRVTs'/>
         </word>
         <word name='flags'>
           <ref name='xsltXPathCompileFlags'/>
           <ref name='_xsltTransformContext'/>
           <ref name='xsltExtensionInstructionResultFinalize'/>
           <ref name='xsltExtensionInstructionResultRegister'/>
+          <ref name='xsltFlagRVTs'/>
         </word>
         <word name='free'>
           <ref name='XSLT_RUNTIME_EXTRA_FREE'/>
         <word name='full'>
           <ref name='xsltSplitQName'/>
         </word>
+        <word name='func:result'>
+          <ref name='XSLT_RVT_FUNC_RESULT'/>
+        </word>
         <word name='function-available'>
           <ref name='xsltFunctionAvailableFunction'/>
         </word>
           <ref name='xsltQuoteOneUserParam'/>
         </word>
         <word name='global'>
+          <ref name='XSLT_RVT_GLOBAL'/>
           <ref name='_xsltElemPreComp'/>
           <ref name='_xsltTransformContext'/>
           <ref name='xsltCleanupGlobals'/>
           <ref name='xsltEvalGlobalVariables'/>
           <ref name='xsltEvalOneUserParam'/>
           <ref name='xsltEvalUserParams'/>
+          <ref name='xsltFlagRVTs'/>
           <ref name='xsltFreeGlobalVariables'/>
           <ref name='xsltInitCtxtKeys'/>
           <ref name='xsltInitGlobals'/>
           <ref name='xsltSetCtxtSortFunc'/>
           <ref name='xsltSetSortFunc'/>
         </word>
+        <word name='goes'>
+          <ref name='XSLT_RVT_VARIABLE'/>
+        </word>
         <word name='goto'>
           <ref name='CHECK_STOPPEDE'/>
         </word>
           <ref name='xsltCopyOf'/>
           <ref name='xsltDocumentElem'/>
           <ref name='xsltElement'/>
+          <ref name='xsltFlagRVTs'/>
           <ref name='xsltForEach'/>
           <ref name='xsltIf'/>
           <ref name='xsltInitCtxtKey'/>
         </word>
         <word name='inspected'>
           <ref name='xsltExtensionInstructionResultRegister'/>
+          <ref name='xsltFlagRVTs'/>
         </word>
         <word name='instances'>
           <ref name='xsltFormatNumberConversion'/>
           <ref name='xsltRegisterTmpRVT'/>
         </word>
         <word name='instructions'>
+          <ref name='XSLT_RVT_LOCAL'/>
           <ref name='_xsltTemplate'/>
           <ref name='xsltApplyOneTemplate'/>
           <ref name='xsltParseAnyXSLTElem'/>
         <word name='invoking'>
           <ref name='xsltGetSpecialNamespace'/>
         </word>
+        <word name='isn'>
+          <ref name='xsltExtensionInstructionResultRegister'/>
+        </word>
         <word name='issues'>
           <ref name='_xsltTransformContext'/>
         </word>
           <ref name='xsltAllocateExtra'/>
           <ref name='xsltAllocateExtraCtxt'/>
           <ref name='xsltApplyStylesheetUser'/>
+          <ref name='xsltFlagRVTs'/>
           <ref name='xsltFreeGlobalVariables'/>
           <ref name='xsltGetNamespace'/>
           <ref name='xsltParseGlobalParam'/>
         <word name='leaks'>
           <ref name='xsltAttrListTemplateProcess'/>
         </word>
+        <word name='leaving'>
+          <ref name='xsltFlagRVTs'/>
+        </word>
         <word name='left'>
           <ref name='xsltApplyOneTemplate'/>
         </word>
         <word name='libxslt'>
           <ref name='XSLT_LIBXSLT_NAMESPACE'/>
           <ref name='XSLT_REFACTORED_VARS'/>
+          <ref name='xsltExtensionInstructionResultFinalize'/>
+          <ref name='xsltExtensionInstructionResultRegister'/>
           <ref name='xsltFunctionNodeSet'/>
         </word>
         <word name='lifespan'>
           <ref name='xsltSetLoaderFunc'/>
         </word>
         <word name='local'>
+          <ref name='XSLT_RVT_VARIABLE'/>
           <ref name='_xsltCompilerCtxt'/>
           <ref name='_xsltStackElem'/>
           <ref name='_xsltTemplate'/>
           <ref name='_xsltTransformContext'/>
+          <ref name='xsltDecimalFormatGetByQName'/>
           <ref name='xsltLocalVariablePush'/>
           <ref name='xsltParseStylesheetParam'/>
           <ref name='xsltParseStylesheetVariable'/>
           <ref name='xsltFindTemplate'/>
         </word>
         <word name='named'>
+          <ref name='_xsltStylesheet'/>
           <ref name='xsltFindTemplate'/>
         </word>
         <word name='names'>
         </word>
         <word name='necessary'>
           <ref name='xsltCheckWrite'/>
+          <ref name='xsltExtensionInstructionResultRegister'/>
         </word>
         <word name='need'>
           <ref name='XSLT_ITEM_COMPATIBILITY_FIELDS'/>
         <word name='nested'>
           <ref name='_xsltStylesheet'/>
         </word>
+        <word name='newer'>
+          <ref name='xsltExtensionInstructionResultFinalize'/>
+          <ref name='xsltExtensionInstructionResultRegister'/>
+        </word>
         <word name='newly'>
           <ref name='xsltCopyTextString'/>
           <ref name='xsltExtensionInstructionResultRegister'/>
           <ref name='XML_CAST_FPTR'/>
           <ref name='xsltDocumentFunction'/>
           <ref name='xsltExtensionInstructionResultRegister'/>
+          <ref name='xsltFlagRVTs'/>
           <ref name='xsltKeyFunction'/>
           <ref name='xsltSystemPropertyFunction'/>
           <ref name='xsltXPathCompile'/>
           <ref name='xsltFormatNumberConversion'/>
         </word>
         <word name='out'>
+          <ref name='XSLT_RVT_VARIABLE'/>
           <ref name='xsltSetGenericDebugFunc'/>
           <ref name='xsltSetGenericErrorFunc'/>
           <ref name='xsltSetTransformErrorFunc'/>
         <word name='own'>
           <ref name='xsltApplyStylesheetUser'/>
         </word>
+        <word name='ownership'>
+          <ref name='xsltFlagRVTs'/>
+        </word>
         <word name='owning'>
           <ref name='_xsltCompilerNodeInfo'/>
         </word>
         </word>
         <word name='part'>
           <ref name='XSLT_REFACTORED_VARS'/>
+          <ref name='XSLT_RVT_FUNC_RESULT'/>
+          <ref name='XSLT_RVT_GLOBAL'/>
+          <ref name='XSLT_RVT_VARIABLE'/>
           <ref name='_xsltElemPreComp'/>
           <ref name='_xsltFormatNumberInfo'/>
           <ref name='_xsltStackElem'/>
           <ref name='_xsltTemplate'/>
+          <ref name='xsltDecimalFormatGetByQName'/>
           <ref name='xsltTransformFunction'/>
         </word>
+        <word name='parts'>
+          <ref name='xsltFlagRVTs'/>
+        </word>
         <word name='pass'>
           <ref name='XSLT_PARSE_OPTIONS'/>
           <ref name='xsltAttrTemplateValueProcessNode'/>
           <ref name='XSLT_ITEM_COMPATIBILITY_FIELDS'/>
           <ref name='_xsltEffectiveNs'/>
         </word>
+        <word name='receives'>
+          <ref name='XSLT_RVT_FUNC_RESULT'/>
+        </word>
         <word name='record'>
           <ref name='xsltParseGlobalParam'/>
           <ref name='xsltParseStylesheetOutput'/>
         <word name='recorded'>
           <ref name='xsltParseStylesheetCallerParam'/>
         </word>
+        <word name='recursions'>
+          <ref name='_xsltTransformContext'/>
+        </word>
         <word name='recursive'>
           <ref name='_xsltTransformContext'/>
         </word>
           <ref name='_xsltStylesheet'/>
           <ref name='xsltParseStylesheetOutput'/>
         </word>
+        <word name='releases'>
+          <ref name='xsltExtensionInstructionResultFinalize'/>
+          <ref name='xsltExtensionInstructionResultRegister'/>
+        </word>
         <word name='remain'>
           <ref name='xsltLocalVariablePop'/>
         </word>
           <ref name='xsltNeedElemSpaceHandling'/>
         </word>
         <word name='reset'>
+          <ref name='XSLT_RVT_FUNC_RESULT'/>
+          <ref name='xsltFlagRVTs'/>
           <ref name='xsltSetGenericDebugFunc'/>
           <ref name='xsltSetGenericErrorFunc'/>
           <ref name='xsltSetSortFunc'/>
           <ref name='xsltXPathCompileFlags'/>
         </word>
         <word name='results'>
+          <ref name='XSLT_RVT_FUNC_RESULT'/>
           <ref name='xsltParseTemplateContent'/>
         </word>
         <word name='retrieve'>
         <word name='return'>
           <ref name='CHECK_STOPPED'/>
           <ref name='CHECK_STOPPED0'/>
+          <ref name='XSLT_RVT_FUNC_RESULT'/>
           <ref name='xsltAllocateExtra'/>
           <ref name='xsltAllocateExtraCtxt'/>
           <ref name='xsltAttrTemplateValueProcess'/>
           <ref name='xsltSplitQName'/>
         </word>
         <word name='returned'>
+          <ref name='XSLT_RVT_FUNC_RESULT'/>
           <ref name='xsltExtensionInstructionResultFinalize'/>
+          <ref name='xsltFlagRVTs'/>
           <ref name='xsltGetProfileInformation'/>
           <ref name='xsltGetQNameURI'/>
           <ref name='xsltParseStylesheetDoc'/>
         </word>
+        <word name='returning'>
+          <ref name='xsltFlagRVTs'/>
+        </word>
         <word name='reuse'>
           <ref name='xsltApplyOneTemplate'/>
           <ref name='xsltReleaseRVT'/>
           <ref name='xsltNormalizeCompSteps'/>
         </word>
         <word name='scope'>
+          <ref name='XSLT_RVT_VARIABLE'/>
           <ref name='_xsltKeyDef'/>
           <ref name='_xsltStylePreComp'/>
           <ref name='_xsltStylesheet'/>
           <ref name='xsltApplyOneTemplate'/>
           <ref name='xsltEvalXPathPredicate'/>
+          <ref name='xsltFlagRVTs'/>
           <ref name='xsltGetQNameURI'/>
           <ref name='xsltGetTemplate'/>
         </word>
           <ref name='xslHandleDebugger'/>
           <ref name='xsltCleanupTemplates'/>
           <ref name='xsltExtensionInstructionResultFinalize'/>
+          <ref name='xsltFlagRVTs'/>
           <ref name='xsltGetXIncludeDefault'/>
         </word>
         <word name='states'>
           <ref name='xsltEvalUserParams'/>
           <ref name='xsltExtensionInstructionResultFinalize'/>
           <ref name='xsltExtensionInstructionResultRegister'/>
+          <ref name='xsltFlagRVTs'/>
           <ref name='xsltInitAllDocKeys'/>
           <ref name='xsltInitCtxtKey'/>
           <ref name='xsltLocalVariablePush'/>
           <ref name='IS_XSLT_REAL_NODE'/>
           <ref name='XSLT_ITEM_COMPATIBILITY_FIELDS'/>
           <ref name='XSLT_LOCALE_NONE'/>
+          <ref name='XSLT_RVT_FUNC_RESULT'/>
           <ref name='XSLT_STRANGE'/>
           <ref name='xslHandleDebugger'/>
           <ref name='xsltApplyOneTemplate'/>
         <word name='unstructured'>
           <ref name='_xsltCompilerCtxt'/>
         </word>
+        <word name='unsupported'>
+          <ref name='xsltExtensionInstructionResultFinalize'/>
+        </word>
         <word name='unused'>
           <ref name='xsltDocumentComp'/>
           <ref name='xsltSecurityAllow'/>
           <ref name='xsltCleanupGlobals'/>
           <ref name='xsltEvalGlobalVariables'/>
           <ref name='xsltEvalUserParams'/>
+          <ref name='xsltFlagRVTs'/>
           <ref name='xsltFreeGlobalVariables'/>
           <ref name='xsltInitGlobals'/>
           <ref name='xsltLocalVariablePop'/>
           <ref name='_xsltStackElem'/>
           <ref name='_xsltTemplate'/>
           <ref name='xsltEvalXPathPredicate'/>
+          <ref name='xsltFlagRVTs'/>
           <ref name='xsltNewLocale'/>
           <ref name='xsltNextImport'/>
           <ref name='xsltRegisterExtPrefix'/>
         </word>
         <word name='with'>
           <ref name='CHECK_STOPPED0'/>
+          <ref name='XSLT_RVT_FUNC_RESULT'/>
           <ref name='xsltAttrTemplateValueProcessNode'/>
           <ref name='xsltEvalAttrValueTemplate'/>
           <ref name='xsltEvalStaticAttrValueTemplate'/>
           <ref name='_xsltTransformContext'/>
         </word>
         <word name='won'>
+          <ref name='XSLT_RVT_FUNC_RESULT'/>
           <ref name='_xsltTemplate'/>
           <ref name='xsltCopyNamespaceList'/>
+          <ref name='xsltFlagRVTs'/>
         </word>
         <word name='work'>
           <ref name='xsltCheckWrite'/>
         <word name='xsl:apply-templates'>
           <ref name='xsltTransformFunction'/>
         </word>
+        <word name='xsl:attribute'>
+          <ref name='xsltAttribute'/>
+        </word>
         <word name='xsl:choose'>
           <ref name='xsltChoose'/>
         </word>
         </word>
         <word name='xsltDecimalFormatPtr'>
           <ref name='xsltDecimalFormatGetByName'/>
+          <ref name='xsltDecimalFormatGetByQName'/>
         </word>
         <word name='xsltDocLoaderFunc'>
           <ref name='xsltDocLoaderFunc'/>
     </chunk>
     <chunks>
       <chunk name='chunk0' start='A' end='I'/>
-      <chunk name='chunk1' start='J' end='S'/>
-      <chunk name='chunk2' start='T' end='a'/>
+      <chunk name='chunk1' start='J' end='R'/>
+      <chunk name='chunk2' start='S' end='a'/>
       <chunk name='chunk3' start='b' end='c'/>
       <chunk name='chunk4' start='d' end='e'/>
       <chunk name='chunk5' start='f' end='g'/>
index 5664e71..79545be 100644 (file)
       <xsl:with-param name="text" select="info"/>
     </xsl:call-template>
     </p>
-    <xsl:if test="arg | return">
+    <xsl:if test="arg | return/@info">
       <div class="variablelist"><table border="0"><col align="left"/><tbody>
       <xsl:for-each select="arg">
         <tr>
index e1bbb38..52f1cff 100644 (file)
@@ -81,7 +81,7 @@
     <symbol file="pattern">xsltFreeCompMatchList</symbol>
     <symbol file="pattern">xsltFreeTemplateHashes</symbol>
     <symbol file="pattern">xsltGetTemplate</symbol>
-    <symbol file="pattern">xsltMatchPattern</symbol>
+    <symbol removed="1.0.12" file="pattern">xsltMatchPattern</symbol>
     <symbol file="pattern">xsltTestCompMatchList</symbol>
     <symbol file="preproc">xsltDocumentComp</symbol>
     <symbol file="preproc">xsltFreeStylePreComps</symbol>
     <symbol file="xslt">xsltLibxmlVersion</symbol>
     <symbol file="xslt">xsltLibxsltVersion</symbol>
     <symbol file="xslt">xsltMaxDepth</symbol>
+    <!-- xsltMaxVars was added in 1.1.27 with a wrong version. -->
     <symbol file="xslt">xsltMaxVars</symbol>
     <symbol file="xsltInternals">xsltParseStylesheetImportedDoc</symbol>
     <symbol file="xsltutils">xsltSetCtxtSortFunc</symbol>
     <symbol file="documents">xsltSetLoaderFunc</symbol>
   </release>
   <release version="1.1.18">
-    <symbol file="xsltInternals">xsltConstNamespaceNameXSLT</symbol>
+    <symbol switch="REFACTORED" file="xsltInternals">xsltConstNamespaceNameXSLT</symbol>
     <symbol file="xsltInternals">xsltExtensionInstructionResultFinalize</symbol>
     <symbol file="xsltInternals">xsltExtensionInstructionResultRegister</symbol>
     <symbol file="xsltInternals">xsltInitCtxtKey</symbol>
     <symbol file="xslt">xsltInit</symbol>
-    <symbol file="xsltInternals">xsltParseAnyXSLTElem</symbol>
-    <symbol file="xsltInternals">xsltParseSequenceConstructor</symbol>
-    <symbol file="xsltInternals">xsltPointerListAddSize</symbol>
-    <symbol file="xsltInternals">xsltPointerListClear</symbol>
-    <symbol file="xsltInternals">xsltPointerListCreate</symbol>
-    <symbol file="xsltInternals">xsltPointerListFree</symbol>
+    <symbol switch="REFACTORED" file="xsltInternals">xsltParseAnyXSLTElem</symbol>
+    <symbol switch="REFACTORED" file="xsltInternals">xsltParseSequenceConstructor</symbol>
+    <symbol switch="REFACTORED" file="xsltInternals">xsltPointerListAddSize</symbol>
+    <symbol switch="REFACTORED" file="xsltInternals">xsltPointerListClear</symbol>
+    <symbol switch="REFACTORED" file="xsltInternals">xsltPointerListCreate</symbol>
+    <symbol switch="REFACTORED" file="xsltInternals">xsltPointerListFree</symbol>
     <symbol file="xsltInternals">xsltRegisterLocalRVT</symbol>
     <symbol file="xsltInternals">xsltReleaseRVT</symbol>
-    <symbol file="xsltInternals">xsltRestoreDocumentNamespaces</symbol>
-    <symbol file="extensions">xsltStyleStylesheetLevelGetExtData</symbol>
+    <symbol switch="REFACTORED" file="xsltInternals">xsltRestoreDocumentNamespaces</symbol>
+    <symbol switch="REFACTORED" file="extensions">xsltStyleStylesheetLevelGetExtData</symbol>
     <symbol removed="1.1.28" file="xsltInternals">xsltTransStorageAdd</symbol>
     <symbol removed="1.1.28" file="xsltInternals">xsltTransStorageRemove</symbol>
     <symbol file="xsltInternals">xsltUninit</symbol>
-    <symbol file="xsltInternals">xsltXSLTAttrMarker</symbol>
+    <symbol switch="REFACTORED" file="xsltInternals">xsltXSLTAttrMarker</symbol>
   </release>
   <release version="1.1.20">
     <symbol file="transform">xsltLocalVariablePop</symbol>
     <symbol file="xsltlocale">xsltFreeLocales</symbol>
     <symbol file="xsltutils">xsltXPathCompileFlags</symbol>
   </release>
+  <release version="1.1.30">
+    <symbol file="xsltInternals">xsltFlagRVTs</symbol>
+    <symbol file="xsltInternals">xsltDecimalFormatGetByQName</symbol>
+  </release>
 </symbols>
index 3965e90..b46913e 100644 (file)
       <xsl:apply-templates select="."/>
     </xsl:for-each>
 
+    <xsl:if test="not($prev)">
+      <xsl:text>
+  local:
+    *;
+</xsl:text>
+    </xsl:if>
+
     <xsl:text>} </xsl:text>
     <xsl:if test="$prev">
       <xsl:text>LIBXML2_</xsl:text>
         <xsl:text>
 </xsl:text>
       </xsl:when>
+      <xsl:when test="@switch">
+        <xsl:text># </xsl:text>
+        <xsl:value-of select="$name"/>
+        <xsl:text>; requires switch </xsl:text>
+        <xsl:value-of select="@switch"/>
+        <xsl:text>
+</xsl:text>
+      </xsl:when>
       <xsl:otherwise>
         <!-- make sure we can find that symbol exported from the API list -->
         <xsl:variable name="def"
index 1cf5138..5449524 100644 (file)
@@ -27,7 +27,7 @@ libexslt_la_SOURCES =                   \
        libexslt.h                      \
        dynamic.c
 
-libexslt_la_LIBADD = $(top_builddir)/libxslt/libxslt.la $(EXTRA_LIBS) $(LIBGCRYPT_LIBS)
+libexslt_la_LIBADD = $(top_builddir)/libxslt/libxslt.la $(EXTRA_LIBS) $(LIBGCRYPT_LIBS) $(M_LIBS)
 libexslt_la_LDFLAGS = $(WIN32_EXTRA_LDFLAGS) -version-info $(LIBEXSLT_VERSION_INFO)
 
 man_MANS = libexslt.3
index 57d4a6f..1092c4d 100644 (file)
@@ -132,7 +132,8 @@ am__installdirs = "$(DESTDIR)$(libdir)" "$(DESTDIR)$(man3dir)" \
 LTLIBRARIES = $(lib_LTLIBRARIES)
 am__DEPENDENCIES_1 =
 libexslt_la_DEPENDENCIES = $(top_builddir)/libxslt/libxslt.la \
-       $(am__DEPENDENCIES_1) $(am__DEPENDENCIES_1)
+       $(am__DEPENDENCIES_1) $(am__DEPENDENCIES_1) \
+       $(am__DEPENDENCIES_1)
 am_libexslt_la_OBJECTS = exslt.lo common.lo crypto.lo math.lo sets.lo \
        functions.lo strings.lo date.lo saxon.lo dynamic.lo
 libexslt_la_OBJECTS = $(am_libexslt_la_OBJECTS)
@@ -300,6 +301,9 @@ PACKAGE_URL = @PACKAGE_URL@
 PACKAGE_VERSION = @PACKAGE_VERSION@
 PATH_SEPARATOR = @PATH_SEPARATOR@
 PERL = @PERL@
+PKG_CONFIG = @PKG_CONFIG@
+PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@
+PKG_CONFIG_PATH = @PKG_CONFIG_PATH@
 PYTHON = @PYTHON@
 PYTHONSODV = @PYTHONSODV@
 PYTHON_INCLUDES = @PYTHON_INCLUDES@
@@ -415,7 +419,7 @@ libexslt_la_SOURCES = \
        libexslt.h                      \
        dynamic.c
 
-libexslt_la_LIBADD = $(top_builddir)/libxslt/libxslt.la $(EXTRA_LIBS) $(LIBGCRYPT_LIBS)
+libexslt_la_LIBADD = $(top_builddir)/libxslt/libxslt.la $(EXTRA_LIBS) $(LIBGCRYPT_LIBS) $(M_LIBS)
 libexslt_la_LDFLAGS = $(WIN32_EXTRA_LDFLAGS) -version-info $(LIBEXSLT_VERSION_INFO)
 man_MANS = libexslt.3
 EXTRA_DIST = $(man_MANS)
index 451a60d..91be04f 100644 (file)
@@ -60,12 +60,6 @@ exsltNodeSetFunction (xmlXPathParserContextPtr ctxt, int nargs) {
            xsltTransformError(tctxt, NULL, tctxt->inst,
                "exsltNodeSetFunction: Failed to create a node set object.\n");
            tctxt->state = XSLT_STATE_STOPPED;
-       } else {
-           /*
-            * Mark it as a function result in order to avoid garbage
-            * collecting of tree fragments
-            */
-           xsltExtensionInstructionResultRegister(tctxt, obj);
        }
        if (strval != NULL)
            xmlFree (strval);
index 3af6f7f..8687802 100644 (file)
@@ -79,14 +79,14 @@ typedef enum {
     XS_GYEAR       = (XS_GMONTH << 1),
     XS_GYEARMONTH  = (XS_GYEAR  | XS_GMONTH),
     XS_DATE        = (XS_GYEAR  | XS_GMONTH | XS_GDAY),
-    XS_DATETIME    = (XS_DATE   | XS_TIME),
-    XS_DURATION    = (XS_GYEAR  << 1)
+    XS_DATETIME    = (XS_DATE   | XS_TIME)
 } exsltDateType;
 
 /* Date value */
-typedef struct _exsltDateValDate exsltDateValDate;
-typedef exsltDateValDate *exsltDateValDatePtr;
-struct _exsltDateValDate {
+typedef struct _exsltDateVal exsltDateVal;
+typedef exsltDateVal *exsltDateValPtr;
+struct _exsltDateVal {
+    exsltDateType      type;
     long               year;
     unsigned int       mon     :4;     /* 1 <=  mon    <= 12   */
     unsigned int       day     :5;     /* 1 <=  day    <= 31   */
@@ -98,22 +98,13 @@ struct _exsltDateValDate {
 };
 
 /* Duration value */
-typedef struct _exsltDateValDuration exsltDateValDuration;
-typedef exsltDateValDuration *exsltDateValDurationPtr;
-struct _exsltDateValDuration {
-    long               mon;            /* mon stores years also */
+typedef struct _exsltDateDurVal exsltDateDurVal;
+typedef exsltDateDurVal *exsltDateDurValPtr;
+struct _exsltDateDurVal {
+    long       mon;    /* mon stores years also */
     long       day;
-    double             sec;            /* sec stores min and hour also */
-};
-
-typedef struct _exsltDateVal exsltDateVal;
-typedef exsltDateVal *exsltDateValPtr;
-struct _exsltDateVal {
-    exsltDateType       type;
-    union {
-        exsltDateValDate        date;
-        exsltDateValDuration    dur;
-    } value;
+    double     sec;    /* sec stores min and hour also
+                          0 <= sec < SECS_PER_DAY */
 };
 
 /****************************************************************
@@ -139,7 +130,6 @@ struct _exsltDateVal {
        ((c == 0) || (c == 'Z') || (c == '+') || (c == '-'))
 
 #define VALID_ALWAYS(num)      (num >= 0)
-#define VALID_YEAR(yr)          (yr != 0)
 #define VALID_MONTH(mon)        ((mon >= 1) && (mon <= 12))
 /* VALID_DAY should only be used when month is unknown */
 #define VALID_DAY(day)          ((day >= 1) && (day <= 31))
@@ -148,7 +138,7 @@ struct _exsltDateVal {
 #define VALID_SEC(sec)          ((sec >= 0) && (sec < 60))
 #define VALID_TZO(tzo)          ((tzo > -1440) && (tzo < 1440))
 #define IS_LEAP(y)                                             \
-       (((y % 4 == 0) && (y % 100 != 0)) || (y % 400 == 0))
+       (((y & 3) == 0) && ((y % 25 != 0) || ((y & 15) == 0)))
 
 static const unsigned long daysInMonth[12] =
        { 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31 };
@@ -164,7 +154,7 @@ static const unsigned long daysInMonthLeap[12] =
            (dt->day <= daysInMonth[dt->mon - 1]))
 
 #define VALID_DATE(dt)                                         \
-       (VALID_YEAR(dt->year) && VALID_MONTH(dt->mon) && VALID_MDAY(dt))
+       (VALID_MONTH(dt->mon) && VALID_MDAY(dt))
 
 /*
     hour and min structure vals are unsigned, so normal macros give
@@ -177,9 +167,14 @@ static const unsigned long daysInMonthLeap[12] =
 #define VALID_DATETIME(dt)                                     \
        (VALID_DATE(dt) && VALID_TIME(dt))
 
-#define SECS_PER_MIN            (60)
-#define SECS_PER_HOUR           (60 * SECS_PER_MIN)
-#define SECS_PER_DAY            (24 * SECS_PER_HOUR)
+#define SECS_PER_MIN            60
+#define MINS_PER_HOUR           60
+#define HOURS_PER_DAY           24
+#define SECS_PER_HOUR           (MINS_PER_HOUR * SECS_PER_MIN)
+#define SECS_PER_DAY            (HOURS_PER_DAY * SECS_PER_HOUR)
+#define MINS_PER_DAY            (HOURS_PER_DAY * MINS_PER_HOUR)
+#define DAYS_PER_EPOCH          (400 * 365 + 100 - 4 + 1)
+#define YEARS_PER_EPOCH         400
 
 static const unsigned long dayInYearByMonth[12] =
        { 0, 31, 59, 90, 120, 151, 181, 212, 243, 273, 304, 334 };
@@ -201,10 +196,14 @@ static const unsigned long dayInLeapYearByMonth[12] =
  * xs:gYear. It is supposed that @dt->year is big enough to contain
  * the year.
  *
+ * According to XML Schema Part 2, the year "0000" is an illegal year value
+ * which probably means that the year preceding AD 1 is BC 1. Internally,
+ * we allow a year 0 and adjust the value when parsing and formatting.
+ *
  * Returns 0 or the error code
  */
 static int
-_exsltDateParseGYear (exsltDateValDatePtr dt, const xmlChar **str)
+_exsltDateParseGYear (exsltDateValPtr dt, const xmlChar **str)
 {
     const xmlChar *cur = *str, *firstChar;
     int isneg = 0, digcnt = 0;
@@ -221,6 +220,8 @@ _exsltDateParseGYear (exsltDateValDatePtr dt, const xmlChar **str)
     firstChar = cur;
 
     while ((*cur >= '0') && (*cur <= '9')) {
+        if (dt->year >= LONG_MAX / 10)
+            return -1;
        dt->year = dt->year * 10 + (*cur - '0');
        cur++;
        digcnt++;
@@ -231,17 +232,18 @@ _exsltDateParseGYear (exsltDateValDatePtr dt, const xmlChar **str)
     if ((digcnt < 4) || ((digcnt > 4) && (*firstChar == '0')))
        return 1;
 
-    if (isneg)
-       dt->year = - dt->year;
-
-    if (!VALID_YEAR(dt->year))
+    if (dt->year == 0)
        return 2;
 
+    /* The internal representation of negative years is continuous. */
+    if (isneg)
+       dt->year = -dt->year + 1;
+
     *str = cur;
 
 #ifdef DEBUG_EXSLT_DATE
     xsltGenericDebug(xsltGenericDebugContext,
-                    "Parsed year %04i\n", dt->year);
+                    "Parsed year %04ld\n", dt->year);
 #endif
 
     return 0;
@@ -256,12 +258,12 @@ _exsltDateParseGYear (exsltDateValDatePtr dt, const xmlChar **str)
  * @cur is updated to point after the xsl:gYear.
  */
 #define FORMAT_GYEAR(yr, cur)                                  \
-       if (yr < 0) {                                           \
+       if (yr <= 0) {                                          \
            *cur = '-';                                         \
            cur++;                                              \
        }                                                       \
        {                                                       \
-           long year = (yr < 0) ? - yr : yr;                   \
+           long year = (yr <= 0) ? -yr + 1 : yr;               \
            xmlChar tmp_buf[100], *tmp = tmp_buf;               \
            /* result is in reverse-order */                    \
            while (year > 0) {                                  \
@@ -381,7 +383,7 @@ _exsltDateParseGYear (exsltDateValDatePtr dt, const xmlChar **str)
  * Returns 0 or the error code
  */
 static int
-_exsltDateParseGMonth (exsltDateValDatePtr dt, const xmlChar **str)
+_exsltDateParseGMonth (exsltDateValPtr dt, const xmlChar **str)
 {
     const xmlChar *cur = *str;
     int ret = 0;
@@ -423,7 +425,7 @@ _exsltDateParseGMonth (exsltDateValDatePtr dt, const xmlChar **str)
  * Returns 0 or the error code
  */
 static int
-_exsltDateParseGDay (exsltDateValDatePtr dt, const xmlChar **str)
+_exsltDateParseGDay (exsltDateValPtr dt, const xmlChar **str)
 {
     const xmlChar *cur = *str;
     int ret = 0;
@@ -444,7 +446,7 @@ _exsltDateParseGDay (exsltDateValDatePtr dt, const xmlChar **str)
 
 /**
  * FORMAT_GDAY:
- * @dt:  the #exsltDateValDate to format
+ * @dt:  the #exsltDateVal to format
  * @cur: a pointer to an allocated buffer
  *
  * Formats @dt in xsl:gDay format. Result is appended to @cur and
@@ -455,7 +457,7 @@ _exsltDateParseGDay (exsltDateValDatePtr dt, const xmlChar **str)
 
 /**
  * FORMAT_DATE:
- * @dt:  the #exsltDateValDate to format
+ * @dt:  the #exsltDateVal to format
  * @cur: a pointer to an allocated buffer
  *
  * Formats @dt in xsl:date format. Result is appended to @cur and
@@ -483,7 +485,7 @@ _exsltDateParseGDay (exsltDateValDatePtr dt, const xmlChar **str)
  * Returns 0 or the error code
  */
 static int
-_exsltDateParseTime (exsltDateValDatePtr dt, const xmlChar **str)
+_exsltDateParseTime (exsltDateValPtr dt, const xmlChar **str)
 {
     const xmlChar *cur = *str;
     unsigned int hour = 0; /* use temp var in case str is not xs:time */
@@ -528,7 +530,7 @@ _exsltDateParseTime (exsltDateValDatePtr dt, const xmlChar **str)
 
 /**
  * FORMAT_TIME:
- * @dt:  the #exsltDateValDate to format
+ * @dt:  the #exsltDateVal to format
  * @cur: a pointer to an allocated buffer
  *
  * Formats @dt in xsl:time format. Result is appended to @cur and
@@ -555,7 +557,7 @@ _exsltDateParseTime (exsltDateValDatePtr dt, const xmlChar **str)
  * Returns 0 or the error code
  */
 static int
-_exsltDateParseTimeZone (exsltDateValDatePtr dt, const xmlChar **str)
+_exsltDateParseTimeZone (exsltDateValPtr dt, const xmlChar **str)
 {
     const xmlChar *cur;
     int ret = 0;
@@ -670,10 +672,8 @@ exsltDateCreateDate (exsltDateType type)
     }
     memset (ret, 0, sizeof(exsltDateVal));
 
-    if (type != XS_DURATION) {
-        ret->value.date.mon = 1;
-        ret->value.date.day = 1;
-    }
+    ret->mon = 1;
+    ret->day = 1;
 
     if (type != EXSLT_UNKNOWN)
         ret->type = type;
@@ -696,54 +696,41 @@ exsltDateFreeDate (exsltDateValPtr date) {
 }
 
 /**
- * PARSE_DIGITS:
- * @num:  the integer to fill in
- * @cur:  an #xmlChar *
- * @num_type: an integer flag
+ * exsltDateCreateDuration:
  *
- * Parses a digits integer and updates @num with the value. @cur is
- * updated to point just after the integer.
- * In case of error, @num_type is set to -1, values of @num and
- * @cur are undefined.
+ * Creates a new #exsltDateDurVal, uninitialized.
+ *
+ * Returns the #exsltDateDurValPtr
  */
-#define PARSE_DIGITS(num, cur, num_type)                       \
-       if ((*cur < '0') || (*cur > '9'))                       \
-           num_type = -1;                                      \
-        else                                                    \
-           while ((*cur >= '0') && (*cur <= '9')) {            \
-               num = num * 10 + (*cur - '0');                  \
-               cur++;                                          \
-            }
+static exsltDateDurValPtr
+exsltDateCreateDuration (void)
+{
+    exsltDateDurValPtr ret;
+
+    ret = (exsltDateDurValPtr) xmlMalloc(sizeof(exsltDateDurVal));
+    if (ret == NULL) {
+       xsltGenericError(xsltGenericErrorContext,
+                        "exsltDateCreateDuration: out of memory\n");
+       return (NULL);
+    }
+    memset (ret, 0, sizeof(exsltDateDurVal));
+
+    return ret;
+}
 
 /**
- * PARSE_NUM:
- * @num:  the double to fill in
- * @cur:  an #xmlChar *
- * @num_type: an integer flag
+ * exsltDateFreeDuration:
+ * @date: an #exsltDateDurValPtr
  *
- * Parses a float or integer and updates @num with the value. @cur is
- * updated to point just after the number. If the number is a float,
- * then it must have an integer part and a decimal part; @num_type will
- * be set to 1. If there is no decimal part, @num_type is set to zero.
- * In case of error, @num_type is set to -1, values of @num and
- * @cur are undefined.
+ * Frees up the @duration
  */
-#define PARSE_NUM(num, cur, num_type)                          \
-        num = 0;                                                \
-       PARSE_DIGITS(num, cur, num_type);                       \
-       if (!num_type && (*cur == '.')) {                       \
-           double mult = 1;                                    \
-           cur++;                                              \
-           if ((*cur < '0') || (*cur > '9'))                   \
-               num_type = -1;                                  \
-            else                                                \
-                num_type = 1;                                   \
-           while ((*cur >= '0') && (*cur <= '9')) {            \
-               mult /= 10;                                     \
-               num += (*cur - '0') * mult;                     \
-               cur++;                                          \
-           }                                                   \
-       }
+static void
+exsltDateFreeDuration (exsltDateDurValPtr duration) {
+    if (duration == NULL)
+       return;
+
+    xmlFree(duration);
+}
 
 #ifdef WITH_TIME
 /**
@@ -806,15 +793,15 @@ exsltDateCurrent (void)
     }
 
     /* get real year, not years since 1900 */
-    ret->value.date.year = localTm.tm_year + 1900;
+    ret->year = localTm.tm_year + 1900;
 
-    ret->value.date.mon  = localTm.tm_mon + 1;
-    ret->value.date.day  = localTm.tm_mday;
-    ret->value.date.hour = localTm.tm_hour;
-    ret->value.date.min  = localTm.tm_min;
+    ret->mon  = localTm.tm_mon + 1;
+    ret->day  = localTm.tm_mday;
+    ret->hour = localTm.tm_hour;
+    ret->min  = localTm.tm_min;
 
     /* floating point seconds */
-    ret->value.date.sec  = (double) localTm.tm_sec;
+    ret->sec  = (double) localTm.tm_sec;
 
     /* determine the time zone offset from local to gm time */
 #if HAVE_GMTIME_R
@@ -824,13 +811,13 @@ exsltDateCurrent (void)
     if (tb != NULL)
         gmTm = *tb;
 #endif
-    ret->value.date.tz_flag = 0;
+    ret->tz_flag = 0;
 #if 0
-    ret->value.date.tzo = (((ret->value.date.day * 1440) +
-                            (ret->value.date.hour * 60) +
-                             ret->value.date.min) -
-                           ((gmTm.tm_mday * 1440) + (gmTm.tm_hour * 60) +
-                             gmTm.tm_min));
+    ret->tzo = (((ret->day * 1440) +
+                 (ret->hour * 60) +
+                  ret->min) -
+                ((gmTm.tm_mday * 1440) + (gmTm.tm_hour * 60) +
+                  gmTm.tm_min));
 #endif
     local_s = localTm.tm_hour * SECS_PER_HOUR +
         localTm.tm_min * SECS_PER_MIN +
@@ -841,19 +828,19 @@ exsltDateCurrent (void)
         gmTm.tm_sec;
 
     if (localTm.tm_year < gmTm.tm_year) {
-       ret->value.date.tzo = -((SECS_PER_DAY - local_s) + gm_s)/60;
+       ret->tzo = -((SECS_PER_DAY - local_s) + gm_s)/60;
     } else if (localTm.tm_year > gmTm.tm_year) {
-       ret->value.date.tzo = ((SECS_PER_DAY - gm_s) + local_s)/60;
+       ret->tzo = ((SECS_PER_DAY - gm_s) + local_s)/60;
     } else if (localTm.tm_mon < gmTm.tm_mon) {
-       ret->value.date.tzo = -((SECS_PER_DAY - local_s) + gm_s)/60;
+       ret->tzo = -((SECS_PER_DAY - local_s) + gm_s)/60;
     } else if (localTm.tm_mon > gmTm.tm_mon) {
-       ret->value.date.tzo = ((SECS_PER_DAY - gm_s) + local_s)/60;
+       ret->tzo = ((SECS_PER_DAY - gm_s) + local_s)/60;
     } else if (localTm.tm_mday < gmTm.tm_mday) {
-       ret->value.date.tzo = -((SECS_PER_DAY - local_s) + gm_s)/60;
+       ret->tzo = -((SECS_PER_DAY - local_s) + gm_s)/60;
     } else if (localTm.tm_mday > gmTm.tm_mday) {
-       ret->value.date.tzo = ((SECS_PER_DAY - gm_s) + local_s)/60;
+       ret->tzo = ((SECS_PER_DAY - gm_s) + local_s)/60;
     } else  {
-       ret->value.date.tzo = (local_s - gm_s)/60;
+       ret->tzo = (local_s - gm_s)/60;
     }
 
     return ret;
@@ -877,7 +864,7 @@ exsltDateParse (const xmlChar *dateTime)
 
 #define RETURN_TYPE_IF_VALID(t)                                        \
     if (IS_TZO_CHAR(*cur)) {                                   \
-       ret = _exsltDateParseTimeZone(&(dt->value.date), &cur); \
+       ret = _exsltDateParseTimeZone(dt, &cur);                \
        if (ret == 0) {                                         \
            if (*cur != 0)                                      \
                goto error;                                     \
@@ -906,7 +893,7 @@ exsltDateParse (const xmlChar *dateTime)
        /* is it an xs:gDay? */
        if (*cur == '-') {
          ++cur;
-           ret = _exsltDateParseGDay(&(dt->value.date), &cur);
+           ret = _exsltDateParseGDay(dt, &cur);
            if (ret != 0)
                goto error;
 
@@ -918,7 +905,7 @@ exsltDateParse (const xmlChar *dateTime)
        /*
         * it should be an xs:gMonthDay or xs:gMonth
         */
-       ret = _exsltDateParseGMonth(&(dt->value.date), &cur);
+       ret = _exsltDateParseGMonth(dt, &cur);
        if (ret != 0)
            goto error;
 
@@ -934,7 +921,7 @@ exsltDateParse (const xmlChar *dateTime)
        }
 
        /* it should be an xs:gMonthDay */
-       ret = _exsltDateParseGDay(&(dt->value.date), &cur);
+       ret = _exsltDateParseGDay(dt, &cur);
        if (ret != 0)
            goto error;
 
@@ -948,7 +935,7 @@ exsltDateParse (const xmlChar *dateTime)
      * Try to parse an xs:time then fallback on right-truncated dates.
      */
     if ((*cur >= '0') && (*cur <= '9')) {
-       ret = _exsltDateParseTime(&(dt->value.date), &cur);
+       ret = _exsltDateParseTime(dt, &cur);
        if (ret == 0) {
            /* it's an xs:time */
            RETURN_TYPE_IF_VALID(XS_TIME);
@@ -958,7 +945,7 @@ exsltDateParse (const xmlChar *dateTime)
     /* fallback on date parsing */
     cur = dateTime;
 
-    ret = _exsltDateParseGYear(&(dt->value.date), &cur);
+    ret = _exsltDateParseGYear(dt, &cur);
     if (ret != 0)
        goto error;
 
@@ -969,7 +956,7 @@ exsltDateParse (const xmlChar *dateTime)
        goto error;
     cur++;
 
-    ret = _exsltDateParseGMonth(&(dt->value.date), &cur);
+    ret = _exsltDateParseGMonth(dt, &cur);
     if (ret != 0)
        goto error;
 
@@ -980,8 +967,8 @@ exsltDateParse (const xmlChar *dateTime)
        goto error;
     cur++;
 
-    ret = _exsltDateParseGDay(&(dt->value.date), &cur);
-    if ((ret != 0) || !VALID_DATE((&(dt->value.date))))
+    ret = _exsltDateParseGDay(dt, &cur);
+    if ((ret != 0) || !VALID_DATE(dt))
        goto error;
 
     /* is it an xs:date? */
@@ -992,12 +979,12 @@ exsltDateParse (const xmlChar *dateTime)
     cur++;
 
     /* it should be an xs:dateTime */
-    ret = _exsltDateParseTime(&(dt->value.date), &cur);
+    ret = _exsltDateParseTime(dt, &cur);
     if (ret != 0)
        goto error;
 
-    ret = _exsltDateParseTimeZone(&(dt->value.date), &cur);
-    if ((ret != 0) || (*cur != 0) || !VALID_DATETIME((&(dt->value.date))))
+    ret = _exsltDateParseTimeZone(dt, &cur);
+    if ((ret != 0) || (*cur != 0) || !VALID_DATETIME(dt))
        goto error;
 
     dt->type = XS_DATETIME;
@@ -1016,15 +1003,17 @@ error:
  *
  * Parses a duration string
  *
- * Returns a newly built #exsltDateValPtr of NULL in case of error
+ * Returns a newly built #exsltDateDurValPtr of NULL in case of error
  */
-static exsltDateValPtr
+static exsltDateDurValPtr
 exsltDateParseDuration (const xmlChar *duration)
 {
     const xmlChar  *cur = duration;
-    exsltDateValPtr dur;
+    exsltDateDurValPtr dur;
     int isneg = 0;
     unsigned int seq = 0;
+    long days, secs = 0;
+    double sec_frac = 0.0;
 
     if (duration == NULL)
        return NULL;
@@ -1038,15 +1027,15 @@ exsltDateParseDuration (const xmlChar *duration)
     if (*cur++ != 'P')
        return NULL;
 
-    dur = exsltDateCreateDate(XS_DURATION);
+    dur = exsltDateCreateDuration();
     if (dur == NULL)
        return NULL;
 
     while (*cur != 0) {
-        double         num;
-        int            num_type = 0;  /* -1 = invalid, 0 = int, 1 = floating */
+        long           num = 0;
+        size_t         has_digits = 0;
+        int            has_frac = 0;
         const xmlChar  desig[] = {'Y', 'M', 'D', 'H', 'M', 'S'};
-        const double   multi[] = { 0.0, 0.0, 86400.0, 3600.0, 60.0, 1.0, 0.0};
 
         /* input string should be empty or invalid date/time item */
         if (seq >= sizeof(desig))
@@ -1054,67 +1043,123 @@ exsltDateParseDuration (const xmlChar *duration)
 
         /* T designator must be present for time items */
         if (*cur == 'T') {
-            if (seq <= 3) {
-                seq = 3;
-                cur++;
-            } else
-                return NULL;
+            if (seq > 3)
+                goto error;
+            cur++;
+            seq = 3;
         } else if (seq == 3)
             goto error;
 
-        /* parse the number portion of the item */
-        PARSE_NUM(num, cur, num_type);
-
-        if ((num_type == -1) || (*cur == 0))
-            goto error;
-
-        /* update duration based on item type */
-        while (seq < sizeof(desig)) {
-            if (*cur == desig[seq]) {
+        /* Parse integral part. */
+        while (*cur >= '0' && *cur <= '9') {
+            long digit = *cur - '0';
 
-                /* verify numeric type; only seconds can be float */
-                if ((num_type != 0) && (seq < (sizeof(desig)-1)))
-                    goto error;
+            if (num > LONG_MAX / 10)
+                goto error;
+            num *= 10;
+            if (num > LONG_MAX - digit)
+                goto error;
+            num += digit;
 
-                switch (seq) {
-                    case 0:
-                        dur->value.dur.mon = (long)num * 12;
-                        break;
-                    case 1:
-                        dur->value.dur.mon += (long)num;
-                        break;
-                    default:
-                        /* convert to seconds using multiplier */
-                        dur->value.dur.sec += num * multi[seq];
-                        seq++;
-                        break;
-                }
+            has_digits = 1;
+            cur++;
+        }
 
-                break;          /* exit loop */
+        if (*cur == '.') {
+            /* Parse fractional part. */
+            double mult = 1.0;
+            cur++;
+            has_frac = 1;
+            while (*cur >= '0' && *cur <= '9') {
+                mult /= 10.0;
+                sec_frac += (*cur - '0') * mult;
+                has_digits = 1;
+                cur++;
             }
-            /* no date designators found? */
-            if (++seq == 3)
+        }
+
+        while (*cur != desig[seq]) {
+            seq++;
+            /* No T designator or invalid char. */
+            if (seq == 3 || seq == sizeof(desig))
                 goto error;
         }
         cur++;
+
+        if (!has_digits || (has_frac && (seq != 5)))
+            goto error;
+
+        switch (seq) {
+            case 0:
+                /* Year */
+                if (num > LONG_MAX / 12)
+                    goto error;
+                dur->mon = num * 12;
+                break;
+            case 1:
+                /* Month */
+                if (dur->mon > LONG_MAX - num)
+                    goto error;
+                dur->mon += num;
+                break;
+            case 2:
+                /* Day */
+                dur->day = num;
+                break;
+            case 3:
+                /* Hour */
+                days = num / HOURS_PER_DAY;
+                if (dur->day > LONG_MAX - days)
+                    goto error;
+                dur->day += days;
+                secs = (num % HOURS_PER_DAY) * SECS_PER_HOUR;
+                break;
+            case 4:
+                /* Minute */
+                days = num / MINS_PER_DAY;
+                if (dur->day > LONG_MAX - days)
+                    goto error;
+                dur->day += days;
+                secs += (num % MINS_PER_DAY) * SECS_PER_MIN;
+                break;
+            case 5:
+                /* Second */
+                days = num / SECS_PER_DAY;
+                if (dur->day > LONG_MAX - days)
+                    goto error;
+                dur->day += days;
+                secs += num % SECS_PER_DAY;
+                break;
+        }
+
+        seq++;
     }
 
+    days = secs / SECS_PER_DAY;
+    if (dur->day > LONG_MAX - days)
+        goto error;
+    dur->day += days;
+    dur->sec = (secs % SECS_PER_DAY) + sec_frac;
+
     if (isneg) {
-        dur->value.dur.mon = -dur->value.dur.mon;
-        dur->value.dur.day = -dur->value.dur.day;
-        dur->value.dur.sec = -dur->value.dur.sec;
+        dur->mon = -dur->mon;
+        dur->day = -dur->day;
+        if (dur->sec != 0.0) {
+            dur->sec = SECS_PER_DAY - dur->sec;
+            dur->day -= 1;
+        }
     }
 
 #ifdef DEBUG_EXSLT_DATE
     xsltGenericDebug(xsltGenericDebugContext,
-                    "Parsed duration %f\n", dur->value.dur.sec);
+                    "Parsed duration %f\n", dur->sec);
 #endif
 
     return dur;
 
 error:
     if (dur != NULL)
-       exsltDateFreeDate(dur);
+       exsltDateFreeDuration(dur);
     return NULL;
 }
 
@@ -1126,49 +1171,47 @@ error:
  * @item:       char designator
  *
  */
-#define FORMAT_ITEM(num, cur, limit, item)                      \
-        if (num != 0) {                                         \
-            long comp = (long)num / limit;                      \
-            if (comp != 0) {                                    \
-                FORMAT_FLOAT((double)comp, cur, 0);             \
-                *cur++ = item;                                  \
-                num -= (double)(comp * limit);                  \
-            }                                                   \
+#define FORMAT_ITEM(num, cur, limit, item)                     \
+        if (num >= limit) {                                    \
+            double comp = floor(num / limit);                  \
+            FORMAT_FLOAT(comp, cur, 0);                                \
+            *cur++ = item;                                     \
+            num -= comp * limit;                               \
         }
 
 /**
  * exsltDateFormatDuration:
- * @dt: an #exsltDateValDurationPtr
+ * @dur: an #exsltDateDurValPtr
  *
- * Formats @dt in xs:duration format.
+ * Formats the duration.
  *
  * Returns a newly allocated string, or NULL in case of error
  */
 static xmlChar *
-exsltDateFormatDuration (const exsltDateValDurationPtr dt)
+exsltDateFormatDuration (const exsltDateDurValPtr dur)
 {
     xmlChar buf[100], *cur = buf;
     double secs, days;
     double years, months;
 
-    if (dt == NULL)
+    if (dur == NULL)
        return NULL;
 
     /* quick and dirty check */
-    if ((dt->sec == 0.0) && (dt->day == 0) && (dt->mon == 0))
+    if ((dur->sec == 0.0) && (dur->day == 0) && (dur->mon == 0))
         return xmlStrdup((xmlChar*)"P0D");
 
-    secs   = dt->sec;
-    days   = (double)dt->day;
-    years  = (double)(dt->mon / 12);
-    months = (double)(dt->mon % 12);
+    secs   = dur->sec;
+    days   = (double)dur->day;
+    years  = (double)(dur->mon / 12);
+    months = (double)(dur->mon % 12);
 
     *cur = '\0';
-    if (secs < 0.0) {
-        secs = -secs;
-        *cur = '-';
-    }
     if (days < 0) {
+        if (secs != 0.0) {
+            secs = SECS_PER_DAY - secs;
+            days += 1;
+        }
         days = -days;
         *cur = '-';
     }
@@ -1193,12 +1236,6 @@ exsltDateFormatDuration (const exsltDateValDurationPtr dt)
         FORMAT_ITEM(months, cur, 1, 'M');
     }
 
-    if (secs >= SECS_PER_DAY) {
-        double tmp = floor(secs / SECS_PER_DAY);
-        days += tmp;
-        secs -= (tmp * SECS_PER_DAY);
-    }
-
     FORMAT_ITEM(days, cur, 1, 'D');
     if (secs > 0.0) {
         *cur++ = 'T';
@@ -1217,14 +1254,14 @@ exsltDateFormatDuration (const exsltDateValDurationPtr dt)
 
 /**
  * exsltDateFormatDateTime:
- * @dt: an #exsltDateValDatePtr
+ * @dt: an #exsltDateValPtr
  *
  * Formats @dt in xs:dateTime format.
  *
  * Returns a newly allocated string, or NULL in case of error
  */
 static xmlChar *
-exsltDateFormatDateTime (const exsltDateValDatePtr dt)
+exsltDateFormatDateTime (const exsltDateValPtr dt)
 {
     xmlChar buf[100], *cur = buf;
 
@@ -1243,14 +1280,14 @@ exsltDateFormatDateTime (const exsltDateValDatePtr dt)
 
 /**
  * exsltDateFormatDate:
- * @dt: an #exsltDateValDatePtr
+ * @dt: an #exsltDateValPtr
  *
  * Formats @dt in xs:date format.
  *
  * Returns a newly allocated string, or NULL in case of error
  */
 static xmlChar *
-exsltDateFormatDate (const exsltDateValDatePtr dt)
+exsltDateFormatDate (const exsltDateValPtr dt)
 {
     xmlChar buf[100], *cur = buf;
 
@@ -1268,14 +1305,14 @@ exsltDateFormatDate (const exsltDateValDatePtr dt)
 
 /**
  * exsltDateFormatTime:
- * @dt: an #exsltDateValDatePtr
+ * @dt: an #exsltDateValPtr
  *
  * Formats @dt in xs:time format.
  *
  * Returns a newly allocated string, or NULL in case of error
  */
 static xmlChar *
-exsltDateFormatTime (const exsltDateValDatePtr dt)
+exsltDateFormatTime (const exsltDateValPtr dt)
 {
     xmlChar buf[100], *cur = buf;
 
@@ -1309,14 +1346,12 @@ exsltDateFormat (const exsltDateValPtr dt)
        return NULL;
 
     switch (dt->type) {
-    case XS_DURATION:
-        return exsltDateFormatDuration(&(dt->value.dur));
     case XS_DATETIME:
-        return exsltDateFormatDateTime(&(dt->value.date));
+        return exsltDateFormatDateTime(dt);
     case XS_DATE:
-        return exsltDateFormatDate(&(dt->value.date));
+        return exsltDateFormatDate(dt);
     case XS_TIME:
-        return exsltDateFormatTime(&(dt->value.date));
+        return exsltDateFormatTime(dt);
     default:
         break;
     }
@@ -1324,15 +1359,15 @@ exsltDateFormat (const exsltDateValPtr dt)
     if (dt->type & XS_GYEAR) {
         xmlChar buf[100], *cur = buf;
 
-        FORMAT_GYEAR(dt->value.date.year, cur);
+        FORMAT_GYEAR(dt->year, cur);
         if (dt->type == XS_GYEARMONTH) {
            *cur = '-';
            cur++;
-           FORMAT_GMONTH(dt->value.date.mon, cur);
+           FORMAT_GMONTH(dt->mon, cur);
         }
 
-        if (dt->value.date.tz_flag || (dt->value.date.tzo != 0)) {
-           FORMAT_TZ(dt->value.date.tzo, cur);
+        if (dt->tz_flag || (dt->tzo != 0)) {
+           FORMAT_TZ(dt->tzo, cur);
         }
         *cur = 0;
         return xmlStrdup(buf);
@@ -1348,7 +1383,7 @@ exsltDateFormat (const exsltDateValPtr dt)
  * Convert mon and year of @dt to total number of days. Take the
  * number of years since (or before) 1 AD and add the number of leap
  * years. This is a function  because negative
- * years must be handled a little differently and there is no zero year.
+ * years must be handled a little differently.
  *
  * Returns number of days.
  */
@@ -1357,16 +1392,16 @@ _exsltDateCastYMToDays (const exsltDateValPtr dt)
 {
     long ret;
 
-    if (dt->value.date.year < 0)
-        ret = (dt->value.date.year * 365) +
-              (((dt->value.date.year+1)/4)-((dt->value.date.year+1)/100)+
-               ((dt->value.date.year+1)/400)) +
-              DAY_IN_YEAR(0, dt->value.date.mon, dt->value.date.year);
+    if (dt->year <= 0)
+        ret = ((dt->year-1) * 365) +
+              (((dt->year)/4)-((dt->year)/100)+
+               ((dt->year)/400)) +
+              DAY_IN_YEAR(0, dt->mon, dt->year) - 1;
     else
-        ret = ((dt->value.date.year-1) * 365) +
-              (((dt->value.date.year-1)/4)-((dt->value.date.year-1)/100)+
-               ((dt->value.date.year-1)/400)) +
-              DAY_IN_YEAR(0, dt->value.date.mon, dt->value.date.year);
+        ret = ((dt->year-1) * 365) +
+              (((dt->year-1)/4)-((dt->year-1)/100)+
+               ((dt->year-1)/400)) +
+              DAY_IN_YEAR(0, dt->mon, dt->year);
 
     return ret;
 }
@@ -1380,42 +1415,8 @@ _exsltDateCastYMToDays (const exsltDateValPtr dt)
  * Returns seconds.
  */
 #define TIME_TO_NUMBER(dt)                              \
-    ((double)((dt->value.date.hour * SECS_PER_HOUR) +   \
-              (dt->value.date.min * SECS_PER_MIN)) + dt->value.date.sec)
-
-/**
- * exsltDateCastDateToNumber:
- * @dt:  an #exsltDateValPtr
- *
- * Calculates the number of seconds from year zero.
- *
- * Returns seconds from zero year.
- */
-static double
-exsltDateCastDateToNumber (const exsltDateValPtr dt)
-{
-    double ret = 0.0;
-
-    if (dt == NULL)
-        return 0.0;
-
-    if ((dt->type & XS_GYEAR) == XS_GYEAR) {
-        ret = (double)_exsltDateCastYMToDays(dt) * SECS_PER_DAY;
-    }
-
-    /* add in days */
-    if (dt->type == XS_DURATION) {
-        ret += (double)dt->value.dur.day * SECS_PER_DAY;
-        ret += dt->value.dur.sec;
-    } else {
-        ret += (double)dt->value.date.day * SECS_PER_DAY;
-        /* add in time */
-        ret += TIME_TO_NUMBER(dt);
-    }
-
-
-    return ret;
-}
+    ((double)((dt->hour * SECS_PER_HOUR) +   \
+              (dt->min * SECS_PER_MIN)) + dt->sec)
 
 /**
  * _exsltDateTruncateDate:
@@ -1433,19 +1434,19 @@ _exsltDateTruncateDate (exsltDateValPtr dt, exsltDateType type)
         return 1;
 
     if ((type & XS_TIME) != XS_TIME) {
-        dt->value.date.hour = 0;
-        dt->value.date.min  = 0;
-        dt->value.date.sec  = 0.0;
+        dt->hour = 0;
+        dt->min  = 0;
+        dt->sec  = 0.0;
     }
 
     if ((type & XS_GDAY) != XS_GDAY)
-        dt->value.date.day = 1;
+        dt->day = 1;
 
     if ((type & XS_GMONTH) != XS_GMONTH)
-        dt->value.date.mon = 1;
+        dt->mon = 1;
 
     if ((type & XS_GYEAR) != XS_GYEAR)
-        dt->value.date.year = 0;
+        dt->year = 0;
 
     dt->type = type;
 
@@ -1461,7 +1462,7 @@ _exsltDateTruncateDate (exsltDateValPtr dt, exsltDateType type)
  * a Monday so all other days are calculated from there. Take the
  * number of years since (or before) add the number of leap years and
  * the day-in-year and mod by 7. This is a function  because negative
- * years must be handled a little differently and there is no zero year.
+ * years must be handled a little differently.
  *
  * Returns day in week (Sunday = 0).
  */
@@ -1470,8 +1471,8 @@ _exsltDateDayInWeek(long yday, long yr)
 {
     long ret;
 
-    if (yr < 0) {
-        ret = ((yr + (((yr+1)/4)-((yr+1)/100)+((yr+1)/400)) + yday) % 7);
+    if (yr <= 0) {
+        ret = ((yr-2 + ((yr/4)-(yr/100)+(yr/400)) + yday) % 7);
         if (ret < 0)
             ret += 7;
     } else
@@ -1480,18 +1481,10 @@ _exsltDateDayInWeek(long yday, long yr)
     return ret;
 }
 
-/*
- * macros for adding date/times and durations
- */
-#define FQUOTIENT(a,b)                  ((floor(((double)a/(double)b))))
-#define MODULO(a,b)                     ((a - FQUOTIENT(a,b) * b))
-#define FQUOTIENT_RANGE(a,low,high)     (FQUOTIENT((a-low),(high-low)))
-#define MODULO_RANGE(a,low,high)        ((MODULO((a-low),(high-low)))+low)
-
 /**
  * _exsltDateAdd:
  * @dt: an #exsltDateValPtr
- * @dur: an #exsltDateValPtr of type #XS_DURATION
+ * @dur: an #exsltDateDurValPtr
  *
  * Compute a new date/time from @dt and @dur. This function assumes @dt
  * is either #XS_DATETIME, #XS_DATE, #XS_GYEARMONTH, or #XS_GYEAR.
@@ -1499,12 +1492,11 @@ _exsltDateDayInWeek(long yday, long yr)
  * Returns date/time pointer or NULL.
  */
 static exsltDateValPtr
-_exsltDateAdd (exsltDateValPtr dt, exsltDateValPtr dur)
+_exsltDateAdd (exsltDateValPtr dt, exsltDateDurValPtr dur)
 {
     exsltDateValPtr ret;
-    long carry, tempdays, temp;
-    exsltDateValDatePtr r, d;
-    exsltDateValDurationPtr u;
+    long carry, temp;
+    double sum;
 
     if ((dt == NULL) || (dur == NULL))
         return NULL;
@@ -1513,105 +1505,119 @@ _exsltDateAdd (exsltDateValPtr dt, exsltDateValPtr dur)
     if (ret == NULL)
         return NULL;
 
-    r = &(ret->value.date);
-    d = &(dt->value.date);
-    u = &(dur->value.dur);
+    /*
+     * Note that temporary values may need more bits than the values in
+     * bit field.
+     */
 
     /* month */
-    carry  = d->mon + u->mon;
-    r->mon = (unsigned int)MODULO_RANGE(carry, 1, 13);
-    carry  = (long)FQUOTIENT_RANGE(carry, 1, 13);
+    temp  = dt->mon + dur->mon % 12;
+    carry = dur->mon / 12;
+    if (temp < 1) {
+        temp  += 12;
+        carry -= 1;
+    }
+    else if (temp > 12) {
+        temp  -= 12;
+        carry += 1;
+    }
+    ret->mon = temp;
 
-    /* year (may be modified later) */
-    r->year = d->year + carry;
-    if (r->year == 0) {
-        if (d->year > 0)
-            r->year--;
-        else
-            r->year++;
+    /*
+     * year (may be modified later)
+     *
+     * Add epochs from dur->day now to avoid overflow later and to speed up
+     * pathological cases.
+     */
+    carry += (dur->day / DAYS_PER_EPOCH) * YEARS_PER_EPOCH;
+    if ((carry > 0 && dt->year > LONG_MAX - carry) ||
+        (carry < 0 && dt->year < LONG_MIN - carry)) {
+        /* Overflow */
+        exsltDateFreeDate(ret);
+        return NULL;
     }
+    ret->year = dt->year + carry;
 
     /* time zone */
-    r->tzo     = d->tzo;
-    r->tz_flag = d->tz_flag;
+    ret->tzo     = dt->tzo;
+    ret->tz_flag = dt->tz_flag;
 
     /* seconds */
-    r->sec = d->sec + u->sec;
-    carry  = (long)FQUOTIENT((long)r->sec, 60);
-    if (r->sec != 0.0) {
-        r->sec = MODULO(r->sec, 60.0);
-    }
+    sum    = dt->sec + dur->sec;
+    ret->sec = fmod(sum, 60.0);
+    carry  = (long)(sum / 60.0);
 
     /* minute */
-    carry += d->min;
-    r->min = (unsigned int)MODULO(carry, 60);
-    carry  = (long)FQUOTIENT(carry, 60);
+    temp  = dt->min + carry % 60;
+    carry = carry / 60;
+    if (temp >= 60) {
+        temp  -= 60;
+        carry += 1;
+    }
+    ret->min = temp;
 
     /* hours */
-    carry  += d->hour;
-    r->hour = (unsigned int)MODULO(carry, 24);
-    carry   = (long)FQUOTIENT(carry, 24);
+    temp  = dt->hour + carry % 24;
+    carry = carry / 24;
+    if (temp >= 24) {
+        temp  -= 24;
+        carry += 1;
+    }
+    ret->hour = temp;
 
-    /*
-     * days
-     * Note we use tempdays because the temporary values may need more
-     * than 5 bits
-     */
-    if ((VALID_YEAR(r->year)) && (VALID_MONTH(r->mon)) &&
-                  (d->day > MAX_DAYINMONTH(r->year, r->mon)))
-        tempdays = MAX_DAYINMONTH(r->year, r->mon);
-    else if (d->day < 1)
-        tempdays = 1;
+    /* days */
+    if (dt->day > MAX_DAYINMONTH(ret->year, ret->mon))
+        temp = MAX_DAYINMONTH(ret->year, ret->mon);
+    else if (dt->day < 1)
+        temp = 1;
     else
-        tempdays = d->day;
+        temp = dt->day;
 
-    tempdays += u->day + carry;
+    temp += dur->day % DAYS_PER_EPOCH + carry;
 
     while (1) {
-        if (tempdays < 1) {
-            long tmon = (long)MODULO_RANGE((int)r->mon-1, 1, 13);
-            long tyr  = r->year + (long)FQUOTIENT_RANGE((int)r->mon-1, 1, 13);
-            if (tyr == 0)
-                tyr--;
-           /*
-            * Coverity detected an overrun in daysInMonth
-            * of size 12 at position 12 with index variable "((r)->mon - 1)"
-            */
-           if (tmon < 0)
-               tmon = 0;
-           if (tmon > 12)
-               tmon = 12;
-            tempdays += MAX_DAYINMONTH(tyr, tmon);
-            carry = -1;
-        } else if (tempdays > (long)MAX_DAYINMONTH(r->year, r->mon)) {
-            tempdays = tempdays - MAX_DAYINMONTH(r->year, r->mon);
-            carry = 1;
+        if (temp < 1) {
+            if (ret->mon > 1) {
+                ret->mon -= 1;
+            }
+            else {
+                if (ret->year == LONG_MIN) {
+                    exsltDateFreeDate(ret);
+                    return NULL;
+                }
+                ret->mon   = 12;
+                ret->year -= 1;
+            }
+            temp += MAX_DAYINMONTH(ret->year, ret->mon);
+        } else if (temp > (long)MAX_DAYINMONTH(ret->year, ret->mon)) {
+            temp -= MAX_DAYINMONTH(ret->year, ret->mon);
+            if (ret->mon < 12) {
+                ret->mon += 1;
+            }
+            else {
+                if (ret->year == LONG_MAX) {
+                    exsltDateFreeDate(ret);
+                    return NULL;
+                }
+                ret->mon   = 1;
+                ret->year += 1;
+            }
         } else
             break;
-
-        temp = r->mon + carry;
-        r->mon = (unsigned int)MODULO_RANGE(temp, 1, 13);
-        r->year = r->year + (long)FQUOTIENT_RANGE(temp, 1, 13);
-        if (r->year == 0) {
-            if (temp < 1)
-                r->year--;
-            else
-                r->year++;
-       }
     }
 
-    r->day = tempdays;
+    ret->day = temp;
 
     /*
      * adjust the date/time type to the date values
      */
     if (ret->type != XS_DATETIME) {
-        if ((r->hour) || (r->min) || (r->sec))
+        if ((ret->hour) || (ret->min) || (ret->sec))
             ret->type = XS_DATETIME;
         else if (ret->type != XS_DATE) {
-            if (r->day != 1)
+            if (ret->day != 1)
                 ret->type = XS_DATE;
-            else if ((ret->type != XS_GYEARMONTH) && (r->mon != 1))
+            else if ((ret->type != XS_GYEARMONTH) && (ret->mon != 1))
                 ret->type = XS_GYEARMONTH;
         }
     }
@@ -1629,12 +1635,12 @@ _exsltDateAdd (exsltDateValPtr dt, exsltDateValPtr dur)
  * (i.e. y - x). If the @flag is set then even if the least specific
  * format of @x or @y is xs:gYear or xs:gYearMonth.
  *
- * Returns date/time pointer or NULL.
+ * Returns a duration pointer or NULL.
  */
-static exsltDateValPtr
+static exsltDateDurValPtr
 _exsltDateDifference (exsltDateValPtr x, exsltDateValPtr y, int flag)
 {
-    exsltDateValPtr ret;
+    exsltDateDurValPtr ret;
 
     if ((x == NULL) || (y == NULL))
         return NULL;
@@ -1655,30 +1661,37 @@ _exsltDateDifference (exsltDateValPtr x, exsltDateValPtr y, int flag)
         }
     }
 
-    ret = exsltDateCreateDate(XS_DURATION);
+    ret = exsltDateCreateDuration();
     if (ret == NULL)
         return NULL;
 
     if (((x->type == XS_GYEAR) || (x->type == XS_GYEARMONTH)) && (!flag)) {
         /* compute the difference in months */
-        ret->value.dur.mon = ((y->value.date.year * 12) + y->value.date.mon) -
-                             ((x->value.date.year * 12) + x->value.date.mon);
-       /* The above will give a wrong result if x and y are on different sides
-        of the September 1752. Resolution is welcome :-) */
+        if ((x->year >= LONG_MAX / 24) || (x->year <= LONG_MIN / 24) ||
+            (y->year >= LONG_MAX / 24) || (y->year <= LONG_MIN / 24)) {
+            /* Possible overflow. */
+            exsltDateFreeDuration(ret);
+            return NULL;
+        }
+        ret->mon = (y->year - x->year) * 12 + (y->mon - x->mon);
     } else {
-        ret->value.dur.day  = _exsltDateCastYMToDays(y) -
-                              _exsltDateCastYMToDays(x);
-        ret->value.dur.day += y->value.date.day - x->value.date.day;
-        ret->value.dur.sec  = TIME_TO_NUMBER(y) - TIME_TO_NUMBER(x);
-        ret->value.dur.sec += (x->value.date.tzo - y->value.date.tzo) *
-                              SECS_PER_MIN;
-       if (ret->value.dur.day > 0.0 && ret->value.dur.sec < 0.0) {
-           ret->value.dur.day -= 1;
-           ret->value.dur.sec = ret->value.dur.sec + SECS_PER_DAY;
-       } else if (ret->value.dur.day < 0.0 && ret->value.dur.sec > 0.0) {
-           ret->value.dur.day += 1;
-           ret->value.dur.sec = ret->value.dur.sec - SECS_PER_DAY;
-       }
+        long carry;
+
+        if ((x->year > LONG_MAX / 731) || (x->year < LONG_MIN / 731) ||
+            (y->year > LONG_MAX / 731) || (y->year < LONG_MIN / 731)) {
+            /* Possible overflow. */
+            exsltDateFreeDuration(ret);
+            return NULL;
+        }
+
+        ret->sec  = TIME_TO_NUMBER(y) - TIME_TO_NUMBER(x);
+        ret->sec += (x->tzo - y->tzo) * SECS_PER_MIN;
+        carry    = (long)floor(ret->sec / SECS_PER_DAY);
+        ret->sec  = ret->sec - carry * SECS_PER_DAY;
+
+        ret->day  = _exsltDateCastYMToDays(y) - _exsltDateCastYMToDays(x);
+        ret->day += y->day - x->day;
+        ret->day += carry;
     }
 
     return ret;
@@ -1686,9 +1699,9 @@ _exsltDateDifference (exsltDateValPtr x, exsltDateValPtr y, int flag)
 
 /**
  * _exsltDateAddDurCalc
- * @ret: an exsltDateValPtr for the return value:
- * @x: an exsltDateValPtr for the first operand
- * @y: an exsltDateValPtr for the second operand
+ * @ret: an exsltDateDurValPtr for the return value:
+ * @x: an exsltDateDurValPtr for the first operand
+ * @y: an exsltDateDurValPtr for the second operand
  *
  * Add two durations, catering for possible negative values.
  * The sum is placed in @ret.
@@ -1696,72 +1709,76 @@ _exsltDateDifference (exsltDateValPtr x, exsltDateValPtr y, int flag)
  * Returns 1 for success, 0 if error detected.
  */
 static int
-_exsltDateAddDurCalc (exsltDateValPtr ret, exsltDateValPtr x,
-                     exsltDateValPtr y)
+_exsltDateAddDurCalc (exsltDateDurValPtr ret, exsltDateDurValPtr x,
+                     exsltDateDurValPtr y)
 {
-    long carry;
-
     /* months */
-    ret->value.dur.mon = x->value.dur.mon + y->value.dur.mon;
-
-    /* seconds */
-    ret->value.dur.sec = x->value.dur.sec + y->value.dur.sec;
-    carry = (long)FQUOTIENT(ret->value.dur.sec, SECS_PER_DAY);
-    if (ret->value.dur.sec != 0.0) {
-        ret->value.dur.sec = MODULO(ret->value.dur.sec, SECS_PER_DAY);
-       /*
-        * Our function MODULO always gives us a positive value, so
-        * if we end up with a "-ve" carry we need to adjust it
-        * appropriately (bug 154021)
-        */
-       if ((carry < 0) && (ret->value.dur.sec != 0)) {
-           /* change seconds to equiv negative modulus */
-           ret->value.dur.sec = ret->value.dur.sec - SECS_PER_DAY;
-           carry++;
-       }
+    if ((x->mon > 0 && y->mon > LONG_MAX - x->mon) ||
+        (x->mon < 0 && y->mon < LONG_MIN - x->mon)) {
+        /* Overflow */
+        return 0;
     }
+    ret->mon = x->mon + y->mon;
 
     /* days */
-    ret->value.dur.day = x->value.dur.day + y->value.dur.day + carry;
+    if ((x->day > 0 && y->day > LONG_MAX - x->day) ||
+        (x->day < 0 && y->day < LONG_MIN - x->day)) {
+        /* Overflow */
+        return 0;
+    }
+    ret->day = x->day + y->day;
+
+    /* seconds */
+    ret->sec = x->sec + y->sec;
+    if (ret->sec >= SECS_PER_DAY) {
+        if (ret->day == LONG_MAX) {
+            /* Overflow */
+            return 0;
+        }
+        ret->sec -= SECS_PER_DAY;
+        ret->day += 1;
+    }
 
     /*
      * are the results indeterminate? i.e. how do you subtract days from
      * months or years?
      */
-    if ((((ret->value.dur.day > 0) || (ret->value.dur.sec > 0)) &&
-         (ret->value.dur.mon < 0)) ||
-        (((ret->value.dur.day < 0) || (ret->value.dur.sec < 0)) &&
-         (ret->value.dur.mon > 0))) {
-        return 0;
+    if (ret->day >= 0) {
+        if (((ret->day > 0) || (ret->sec > 0)) && (ret->mon < 0))
+            return 0;
+    }
+    else {
+        if (ret->mon > 0)
+            return 0;
     }
     return 1;
 }
 
 /**
  * _exsltDateAddDuration:
- * @x: an #exsltDateValPtr of type #XS_DURATION
- * @y: an #exsltDateValPtr of type #XS_DURATION
+ * @x: an #exsltDateDurValPtr
+ * @y: an #exsltDateDurValPtr
  *
  * Compute a new duration from @x and @y.
  *
- * Returns date/time pointer or NULL.
+ * Returns a duration pointer or NULL.
  */
-static exsltDateValPtr
-_exsltDateAddDuration (exsltDateValPtr x, exsltDateValPtr y)
+static exsltDateDurValPtr
+_exsltDateAddDuration (exsltDateDurValPtr x, exsltDateDurValPtr y)
 {
-    exsltDateValPtr ret;
+    exsltDateDurValPtr ret;
 
     if ((x == NULL) || (y == NULL))
         return NULL;
 
-    ret = exsltDateCreateDate(XS_DURATION);
+    ret = exsltDateCreateDuration();
     if (ret == NULL)
         return NULL;
 
     if (_exsltDateAddDurCalc(ret, x, y))
         return ret;
 
-    exsltDateFreeDate(ret);
+    exsltDateFreeDuration(ret);
     return NULL;
 }
 
@@ -1788,7 +1805,7 @@ exsltDateDateTime (void)
 
     cur = exsltDateCurrent();
     if (cur != NULL) {
-       ret = exsltDateFormatDateTime(&(cur->value.date));
+       ret = exsltDateFormatDateTime(cur);
        exsltDateFreeDate(cur);
     }
 #endif
@@ -1834,7 +1851,7 @@ exsltDateDate (const xmlChar *dateTime)
        }
     }
 
-    ret = exsltDateFormatDate(&(dt->value.date));
+    ret = exsltDateFormatDate(dt);
     exsltDateFreeDate(dt);
 
     return ret;
@@ -1878,7 +1895,7 @@ exsltDateTime (const xmlChar *dateTime)
        }
     }
 
-    ret = exsltDateFormatTime(&(dt->value.date));
+    ret = exsltDateFormatTime(dt);
     exsltDateFreeDate(dt);
 
     return ret;
@@ -1908,6 +1925,7 @@ static double
 exsltDateYear (const xmlChar *dateTime)
 {
     exsltDateValPtr dt;
+    long year;
     double ret;
 
     if (dateTime == NULL) {
@@ -1927,7 +1945,9 @@ exsltDateYear (const xmlChar *dateTime)
        }
     }
 
-    ret = (double) dt->value.date.year;
+    year = dt->year;
+    if (year <= 0) year -= 1; /* Adjust for missing year 0. */
+    ret = (double) year;
     exsltDateFreeDate(dt);
 
     return ret;
@@ -1956,16 +1976,32 @@ exsltDateYear (const xmlChar *dateTime)
 static xmlXPathObjectPtr
 exsltDateLeapYear (const xmlChar *dateTime)
 {
-    double year;
+    exsltDateValPtr dt = NULL;
+    xmlXPathObjectPtr ret;
 
-    year = exsltDateYear(dateTime);
-    if (xmlXPathIsNaN(year))
-       return xmlXPathNewFloat(xmlXPathNAN);
+    if (dateTime == NULL) {
+#ifdef WITH_TIME
+       dt = exsltDateCurrent();
+#endif
+    } else {
+       dt = exsltDateParse(dateTime);
+       if ((dt != NULL) &&
+            (dt->type != XS_DATETIME) && (dt->type != XS_DATE) &&
+           (dt->type != XS_GYEARMONTH) && (dt->type != XS_GYEAR)) {
+           exsltDateFreeDate(dt);
+           dt = NULL;
+       }
+    }
 
-    if (IS_LEAP((long)year))
-       return xmlXPathNewBoolean(1);
+    if (dt == NULL) {
+        ret = xmlXPathNewFloat(xmlXPathNAN);
+    }
+    else {
+        ret = xmlXPathNewBoolean(IS_LEAP(dt->year));
+        exsltDateFreeDate(dt);
+    }
 
-    return xmlXPathNewBoolean(0);
+    return ret;
 }
 
 /**
@@ -2013,7 +2049,7 @@ exsltDateMonthInYear (const xmlChar *dateTime)
        }
     }
 
-    ret = (double) dt->value.date.mon;
+    ret = (double) dt->mon;
     exsltDateFreeDate(dt);
 
     return ret;
@@ -2060,11 +2096,12 @@ exsltDateMonthName (const xmlChar *dateTime)
        { 'N', 'o', 'v', 'e', 'm', 'b', 'e', 'r', 0 },
        { 'D', 'e', 'c', 'e', 'm', 'b', 'e', 'r', 0 }
     };
-    int month;
-    month = (int) exsltDateMonthInYear(dateTime);
-    if (!VALID_MONTH(month))
-      month = 0;
-    return monthNames[month];
+    double month;
+    int index = 0;
+    month = exsltDateMonthInYear(dateTime);
+    if (!xmlXPathIsNaN(month) && (month >= 1.0) && (month <= 12.0))
+      index = (int) month;
+    return monthNames[index];
 }
 
 /**
@@ -2108,11 +2145,12 @@ exsltDateMonthAbbreviation (const xmlChar *dateTime)
        { 'N', 'o', 'v', 0 },
        { 'D', 'e', 'c', 0 }
     };
-    int month;
-    month = (int) exsltDateMonthInYear(dateTime);
-    if(!VALID_MONTH(month))
-      month = 0;
-    return monthAbbreviations[month];
+    double month;
+    int index = 0;
+    month = exsltDateMonthInYear(dateTime);
+    if (!xmlXPathIsNaN(month) && (month >= 1.0) && (month <= 12.0))
+      index = (int) month;
+    return monthAbbreviations[index];
 }
 
 /**
@@ -2158,23 +2196,22 @@ exsltDateWeekInYear (const xmlChar *dateTime)
        }
     }
 
-    diy = DAY_IN_YEAR(dt->value.date.day, dt->value.date.mon,
-                      dt->value.date.year);
+    diy = DAY_IN_YEAR(dt->day, dt->mon, dt->year);
 
     /*
      * Determine day-in-week (0=Sun, 1=Mon, etc.) then adjust so Monday
      * is the first day-in-week
      */
-    diw = (_exsltDateDayInWeek(diy, dt->value.date.year) + 6) % 7;
+    diw = (_exsltDateDayInWeek(diy, dt->year) + 6) % 7;
 
     /* ISO 8601 adjustment, 3 is Thu */
     diy += (3 - diw);
     if(diy < 1) {
-       year = dt->value.date.year - 1;
+       year = dt->year - 1;
        if(year == 0) year--;
        diy = DAY_IN_YEAR(31, 12, year) + diy;
-    } else if (diy > (long)DAY_IN_YEAR(31, 12, dt->value.date.year)) {
-       diy -= DAY_IN_YEAR(31, 12, dt->value.date.year);
+    } else if (diy > (long)DAY_IN_YEAR(31, 12, dt->year)) {
+       diy -= DAY_IN_YEAR(31, 12, dt->year);
     }
 
     ret = ((diy - 1) / 7) + 1;
@@ -2227,14 +2264,14 @@ exsltDateWeekInMonth (const xmlChar *dateTime)
        }
     }
 
-    fdiy = DAY_IN_YEAR(1, dt->value.date.mon, dt->value.date.year);
+    fdiy = DAY_IN_YEAR(1, dt->mon, dt->year);
     /*
      * Determine day-in-week (0=Sun, 1=Mon, etc.) then adjust so Monday
      * is the first day-in-week
      */
-    fdiw = (_exsltDateDayInWeek(fdiy, dt->value.date.year) + 6) % 7;
+    fdiw = (_exsltDateDayInWeek(fdiy, dt->year) + 6) % 7;
 
-    ret = ((dt->value.date.day + fdiw - 1) / 7) + 1;
+    ret = ((dt->day + fdiw - 1) / 7) + 1;
 
     exsltDateFreeDate(dt);
 
@@ -2281,8 +2318,7 @@ exsltDateDayInYear (const xmlChar *dateTime)
        }
     }
 
-    ret = DAY_IN_YEAR(dt->value.date.day, dt->value.date.mon,
-                      dt->value.date.year);
+    ret = DAY_IN_YEAR(dt->day, dt->mon, dt->year);
 
     exsltDateFreeDate(dt);
 
@@ -2332,7 +2368,7 @@ exsltDateDayInMonth (const xmlChar *dateTime)
        }
     }
 
-    ret = (double) dt->value.date.day;
+    ret = (double) dt->day;
     exsltDateFreeDate(dt);
 
     return ret;
@@ -2379,7 +2415,7 @@ exsltDateDayOfWeekInMonth (const xmlChar *dateTime)
        }
     }
 
-    ret = ((dt->value.date.day -1) / 7) + 1;
+    ret = ((dt->day -1) / 7) + 1;
 
     exsltDateFreeDate(dt);
 
@@ -2428,10 +2464,9 @@ exsltDateDayInWeek (const xmlChar *dateTime)
        }
     }
 
-    diy = DAY_IN_YEAR(dt->value.date.day, dt->value.date.mon,
-                      dt->value.date.year);
+    diy = DAY_IN_YEAR(dt->day, dt->mon, dt->year);
 
-    ret = _exsltDateDayInWeek(diy, dt->value.date.year) + 1;
+    ret = _exsltDateDayInWeek(diy, dt->year) + 1;
 
     exsltDateFreeDate(dt);
 
@@ -2471,11 +2506,12 @@ exsltDateDayName (const xmlChar *dateTime)
        { 'F', 'r', 'i', 'd', 'a', 'y', 0 },
        { 'S', 'a', 't', 'u', 'r', 'd', 'a', 'y', 0 }
     };
-    int day;
-    day = (int) exsltDateDayInWeek(dateTime);
-    if((day < 1) || (day > 7))
-      day = 0;
-    return dayNames[day];
+    double day;
+    int index = 0;
+    day = exsltDateDayInWeek(dateTime);
+    if(!xmlXPathIsNaN(day) && (day >= 1.0) && (day <= 7.0))
+      index = (int) day;
+    return dayNames[index];
 }
 
 /**
@@ -2511,11 +2547,12 @@ exsltDateDayAbbreviation (const xmlChar *dateTime)
        { 'F', 'r', 'i', 0 },
        { 'S', 'a', 't', 0 }
     };
-    int day;
-    day = (int) exsltDateDayInWeek(dateTime);
-    if((day < 1) || (day > 7))
-      day = 0;
-    return dayAbbreviations[day];
+    double day;
+    int index = 0;
+    day = exsltDateDayInWeek(dateTime);
+    if(!xmlXPathIsNaN(day) && (day >= 1.0) && (day <= 7.0))
+      index = (int) day;
+    return dayAbbreviations[index];
 }
 
 /**
@@ -2558,7 +2595,7 @@ exsltDateHourInDay (const xmlChar *dateTime)
        }
     }
 
-    ret = (double) dt->value.date.hour;
+    ret = (double) dt->hour;
     exsltDateFreeDate(dt);
 
     return ret;
@@ -2604,7 +2641,7 @@ exsltDateMinuteInHour (const xmlChar *dateTime)
        }
     }
 
-    ret = (double) dt->value.date.min;
+    ret = (double) dt->min;
     exsltDateFreeDate(dt);
 
     return ret;
@@ -2652,7 +2689,7 @@ exsltDateSecondInMinute (const xmlChar *dateTime)
        }
     }
 
-    ret = dt->value.date.sec;
+    ret = dt->sec;
     exsltDateFreeDate(dt);
 
     return ret;
@@ -2685,7 +2722,8 @@ exsltDateSecondInMinute (const xmlChar *dateTime)
 static xmlChar *
 exsltDateAdd (const xmlChar *xstr, const xmlChar *ystr)
 {
-    exsltDateValPtr dt, dur, res;
+    exsltDateValPtr dt, res;
+    exsltDateDurValPtr dur;
     xmlChar     *ret;
 
     if ((xstr == NULL) || (ystr == NULL))
@@ -2708,7 +2746,7 @@ exsltDateAdd (const xmlChar *xstr, const xmlChar *ystr)
     res = _exsltDateAdd(dt, dur);
 
     exsltDateFreeDate(dt);
-    exsltDateFreeDate(dur);
+    exsltDateFreeDuration(dur);
 
     if (res == NULL)
         return NULL;
@@ -2743,7 +2781,7 @@ exsltDateAdd (const xmlChar *xstr, const xmlChar *ystr)
 static xmlChar *
 exsltDateAddDuration (const xmlChar *xstr, const xmlChar *ystr)
 {
-    exsltDateValPtr x, y, res;
+    exsltDateDurValPtr x, y, res;
     xmlChar     *ret;
 
     if ((xstr == NULL) || (ystr == NULL))
@@ -2755,20 +2793,20 @@ exsltDateAddDuration (const xmlChar *xstr, const xmlChar *ystr)
 
     y = exsltDateParseDuration(ystr);
     if (y == NULL) {
-        exsltDateFreeDate(x);
+        exsltDateFreeDuration(x);
         return NULL;
     }
 
     res = _exsltDateAddDuration(x, y);
 
-    exsltDateFreeDate(x);
-    exsltDateFreeDate(y);
+    exsltDateFreeDuration(x);
+    exsltDateFreeDuration(y);
 
     if (res == NULL)
         return NULL;
 
-    ret = exsltDateFormatDuration(&(res->value.dur));
-    exsltDateFreeDate(res);
+    ret = exsltDateFormatDuration(res);
+    exsltDateFreeDuration(res);
 
     return ret;
 }
@@ -2798,7 +2836,7 @@ exsltDateSumFunction (xmlXPathParserContextPtr ctxt, int nargs)
     xmlNodeSetPtr ns;
     void *user = NULL;
     xmlChar *tmp;
-    exsltDateValPtr x, total;
+    exsltDateDurValPtr x, total;
     xmlChar *ret;
     int i;
 
@@ -2825,7 +2863,7 @@ exsltDateSumFunction (xmlXPathParserContextPtr ctxt, int nargs)
        return;
     }
 
-    total = exsltDateCreateDate (XS_DURATION);
+    total = exsltDateCreateDuration ();
     if (total == NULL) {
         xmlXPathFreeNodeSet (ns);
         return;
@@ -2836,14 +2874,14 @@ exsltDateSumFunction (xmlXPathParserContextPtr ctxt, int nargs)
        tmp = xmlXPathCastNodeToString (ns->nodeTab[i]);
        if (tmp == NULL) {
            xmlXPathFreeNodeSet (ns);
-           exsltDateFreeDate (total);
+           exsltDateFreeDuration (total);
            return;
        }
 
        x = exsltDateParseDuration (tmp);
        if (x == NULL) {
            xmlFree (tmp);
-           exsltDateFreeDate (total);
+           exsltDateFreeDuration (total);
            xmlXPathFreeNodeSet (ns);
            xmlXPathReturnEmptyString (ctxt);
            return;
@@ -2851,18 +2889,18 @@ exsltDateSumFunction (xmlXPathParserContextPtr ctxt, int nargs)
 
        result = _exsltDateAddDurCalc(total, total, x);
 
-       exsltDateFreeDate (x);
+       exsltDateFreeDuration (x);
        xmlFree (tmp);
        if (!result) {
-           exsltDateFreeDate (total);
+           exsltDateFreeDuration (total);
            xmlXPathFreeNodeSet (ns);
            xmlXPathReturnEmptyString (ctxt);
            return;
        }
     }
 
-    ret = exsltDateFormatDuration (&(total->value.dur));
-    exsltDateFreeDate (total);
+    ret = exsltDateFormatDuration (total);
+    exsltDateFreeDuration (total);
 
     xmlXPathFreeNodeSet (ns);
     if (user != NULL)
@@ -2906,6 +2944,7 @@ static double
 exsltDateSeconds (const xmlChar *dateTime)
 {
     exsltDateValPtr dt;
+    exsltDateDurValPtr dur = NULL;
     double ret = xmlXPathNAN;
 
     if (dateTime == NULL) {
@@ -2915,16 +2954,14 @@ exsltDateSeconds (const xmlChar *dateTime)
 #endif
            return xmlXPathNAN;
     } else {
-        dt = exsltDateParseDuration(dateTime);
+        dt = exsltDateParse(dateTime);
         if (dt == NULL)
-            dt = exsltDateParse(dateTime);
+            dur = exsltDateParseDuration(dateTime);
     }
 
-    if (dt == NULL)
-        return xmlXPathNAN;
-
-    if ((dt->type <= XS_DATETIME) && (dt->type >= XS_GYEAR)) {
-        exsltDateValPtr y, dur;
+    if ((dt != NULL) && (dt->type >= XS_GYEAR)) {
+        exsltDateValPtr y;
+        exsltDateDurValPtr diff;
 
         /*
          * compute the difference between the given (or current) date
@@ -2932,23 +2969,27 @@ exsltDateSeconds (const xmlChar *dateTime)
          */
         y = exsltDateCreateDate(XS_DATETIME);
         if (y != NULL) {
-            y->value.date.year = 1970;
-            y->value.date.mon  = 1;
-            y->value.date.day  = 1;
-            y->value.date.tz_flag = 1;
-
-            dur = _exsltDateDifference(y, dt, 1);
-            if (dur != NULL) {
-                ret = exsltDateCastDateToNumber(dur);
-                exsltDateFreeDate(dur);
+            y->year = 1970;
+            y->mon  = 1;
+            y->day  = 1;
+            y->tz_flag = 1;
+
+            diff = _exsltDateDifference(y, dt, 1);
+            if (diff != NULL) {
+                ret = (double)diff->day * SECS_PER_DAY + diff->sec;
+                exsltDateFreeDuration(diff);
             }
             exsltDateFreeDate(y);
         }
 
-    } else if ((dt->type == XS_DURATION) && (dt->value.dur.mon == 0))
-        ret = exsltDateCastDateToNumber(dt);
+    } else if ((dur != NULL) && (dur->mon == 0)) {
+        ret = (double)dur->day * SECS_PER_DAY + dur->sec;
+    }
 
-    exsltDateFreeDate(dt);
+    if (dt != NULL)
+        exsltDateFreeDate(dt);
+    if (dur != NULL)
+        exsltDateFreeDuration(dur);
 
     return ret;
 }
@@ -2993,8 +3034,9 @@ exsltDateSeconds (const xmlChar *dateTime)
 static xmlChar *
 exsltDateDifference (const xmlChar *xstr, const xmlChar *ystr)
 {
-    exsltDateValPtr x, y, dur;
-    xmlChar        *ret = NULL;
+    exsltDateValPtr x, y;
+    exsltDateDurValPtr dur;
+    xmlChar *ret = NULL;
 
     if ((xstr == NULL) || (ystr == NULL))
         return NULL;
@@ -3024,8 +3066,8 @@ exsltDateDifference (const xmlChar *xstr, const xmlChar *ystr)
     if (dur == NULL)
         return NULL;
 
-    ret = exsltDateFormatDuration(&(dur->value.dur));
-    exsltDateFreeDate(dur);
+    ret = exsltDateFormatDuration(dur);
+    exsltDateFreeDuration(dur);
 
     return ret;
 }
@@ -3053,8 +3095,8 @@ exsltDateDifference (const xmlChar *xstr, const xmlChar *ystr)
 static xmlChar *
 exsltDateDuration (const xmlChar *number)
 {
-    exsltDateValPtr dur;
-    double       secs;
+    exsltDateDurValPtr dur;
+    double       secs, days;
     xmlChar     *ret;
 
     if (number == NULL)
@@ -3065,14 +3107,16 @@ exsltDateDuration (const xmlChar *number)
     if ((xmlXPathIsNaN(secs)) || (xmlXPathIsInf(secs)))
         return NULL;
 
-    dur = exsltDateCreateDate(XS_DURATION);
+    dur = exsltDateCreateDuration();
     if (dur == NULL)
         return NULL;
 
-    dur->value.dur.sec = secs;
+    days = floor(secs / SECS_PER_DAY);
+    dur->day = (long)days;
+    dur->sec = secs - days * SECS_PER_DAY;
 
-    ret = exsltDateFormatDuration(&(dur->value.dur));
-    exsltDateFreeDate(dur);
+    ret = exsltDateFormatDuration(dur);
+    exsltDateFreeDuration(dur);
 
     return ret;
 }
index 7b95fc5..ed5965e 100644 (file)
@@ -113,24 +113,12 @@ exsltDynMapFunction(xmlXPathParserContextPtr ctxt, int nargs)
         return;
     }
     str = xmlXPathPopString(ctxt);
-    if (xmlXPathCheckError(ctxt)) {
-        xmlXPathSetTypeError(ctxt);
-        return;
-    }
+    if (xmlXPathCheckError(ctxt))
+        goto cleanup;
 
     nodeset = xmlXPathPopNodeSet(ctxt);
-    if (xmlXPathCheckError(ctxt)) {
-        xmlXPathSetTypeError(ctxt);
-        return;
-    }
-    if (str == NULL || !xmlStrlen(str) || !(comp = xmlXPathCompile(str))) {
-        if (nodeset != NULL)
-            xmlXPathFreeNodeSet(nodeset);
-        if (str != NULL)
-            xmlFree(str);
-        valuePush(ctxt, xmlXPathNewNodeSet(NULL));
-        return;
-    }
+    if (xmlXPathCheckError(ctxt))
+        goto cleanup;
 
     ret = xmlXPathNewNodeSet(NULL);
     if (ret == NULL) {
@@ -139,6 +127,9 @@ exsltDynMapFunction(xmlXPathParserContextPtr ctxt, int nargs)
         goto cleanup;
     }
 
+    if (str == NULL || !xmlStrlen(str) || !(comp = xmlXPathCompile(str)))
+        goto cleanup;
+
     oldDoc = ctxt->context->doc;
     oldNode = ctxt->context->node;
     oldContextSize = ctxt->context->contextSize;
@@ -216,7 +207,6 @@ exsltDynMapFunction(xmlXPathParserContextPtr ctxt, int nargs)
                                 xmlXPathNodeSetAddUnique(ret->nodesetval,
                                                          cur);
                             }
-                           xsltExtensionInstructionResultRegister(tctxt, ret);
                         }
                         break;
                     case XPATH_NUMBER:
@@ -239,7 +229,6 @@ exsltDynMapFunction(xmlXPathParserContextPtr ctxt, int nargs)
                                 xmlXPathNodeSetAddUnique(ret->nodesetval,
                                                          cur);
                             }
-                           xsltExtensionInstructionResultRegister(tctxt, ret);
                         }
                         break;
                     case XPATH_STRING:
@@ -257,7 +246,6 @@ exsltDynMapFunction(xmlXPathParserContextPtr ctxt, int nargs)
                                 xmlXPathNodeSetAddUnique(ret->nodesetval,
                                                          cur);
                             }
-                           xsltExtensionInstructionResultRegister(tctxt, ret);
                         }
                         break;
                    default:
index 0795a13..5fd48bc 100644 (file)
@@ -35,7 +35,6 @@ struct _exsltFuncData {
     xmlHashTablePtr funcs;     /* pointer to the stylesheet module data */
     xmlXPathObjectPtr result;  /* returned by func:result */
     int error;                 /* did an error occur? */
-    xmlDocPtr RVT;   /* result tree fragment */
 };
 
 typedef struct _exsltFuncResultPreComp exsltFuncResultPreComp;
@@ -57,8 +56,6 @@ static void exsltFuncFunctionFunction (xmlXPathParserContextPtr ctxt,
                                       int nargs);
 static exsltFuncFunctionData *exsltFuncNewFunctionData(void);
 
-#define MAX_FUNC_RECURSION 1000
-
 /*static const xmlChar *exsltResultDataID = (const xmlChar *) "EXSLT Result";*/
 
 /**
@@ -333,14 +330,21 @@ exsltFuncFunctionFunction (xmlXPathParserContextPtr ctxt, int nargs) {
                         "param == NULL\n");
        return;
     }
-    if (tctxt->funcLevel > MAX_FUNC_RECURSION) {
-       xsltGenericError(xsltGenericErrorContext,
-                        "{%s}%s: detected a recursion\n",
-                        ctxt->context->functionURI, ctxt->context->function);
-       ctxt->error = XPATH_MEMORY_ERROR;
-       return;
+
+    /*
+    * When a function is called recursively during evaluation of its
+    * arguments, the recursion check in xsltApplySequenceConstructor
+    * isn't reached.
+    */
+    if (tctxt->depth >= tctxt->maxTemplateDepth) {
+        xsltTransformError(tctxt, NULL, NULL,
+            "exsltFuncFunctionFunction: Potentially infinite recursion "
+            "detected in function {%s}%s.\n",
+            ctxt->context->functionURI, ctxt->context->function);
+        tctxt->state = XSLT_STATE_STOPPED;
+        return;
     }
-    tctxt->funcLevel++;
+    tctxt->depth++;
 
     /*
      * We have a problem with the evaluation of function parameters.
@@ -415,7 +419,7 @@ exsltFuncFunctionFunction (xmlXPathParserContextPtr ctxt, int nargs) {
                         (const xmlChar *)"fake", NULL);
     oldInsert = tctxt->insert;
     tctxt->insert = fake;
-    xsltApplyOneTemplate (tctxt, xmlXPathGetContextNode(ctxt),
+    xsltApplyOneTemplate (tctxt, tctxt->node,
                          func->content, NULL, NULL);
     xsltLocalVariablePop(tctxt, tctxt->varsBase, -2);
     tctxt->insert = oldInsert;
@@ -424,10 +428,16 @@ exsltFuncFunctionFunction (xmlXPathParserContextPtr ctxt, int nargs) {
        xsltFreeStackElemList(params);
 
     if (data->error != 0)
-       goto error;
+        goto error;
 
     if (data->result != NULL) {
        ret = data->result;
+        /*
+        * IMPORTANT: This enables previously tree fragments marked as
+        * being results of a function, to be garbage-collected after
+        * the calling process exits.
+        */
+        xsltFlagRVTs(tctxt, ret, XSLT_RVT_LOCAL);
     } else
        ret = xmlXPathNewCString("");
 
@@ -452,13 +462,7 @@ exsltFuncFunctionFunction (xmlXPathParserContextPtr ctxt, int nargs) {
     valuePush(ctxt, ret);
 
 error:
-    /*
-    * IMPORTANT: This enables previously tree fragments marked as
-    * being results of a function, to be garbage-collected after
-    * the calling process exits.
-    */
-    xsltExtensionInstructionResultFinalize(tctxt);
-    tctxt->funcLevel--;
+    tctxt->depth--;
 }
 
 
@@ -536,6 +540,7 @@ exsltFuncFunctionComp (xsltStylesheetPtr style, xmlNodePtr inst) {
        xsltGenericError(xsltGenericErrorContext,
                         "exsltFuncFunctionComp: no stylesheet data\n");
        xmlFree(name);
+        xmlFree(func);
        return;
     }
 
@@ -544,6 +549,7 @@ exsltFuncFunctionComp (xsltStylesheetPtr style, xmlNodePtr inst) {
            "Failed to register function {%s}%s\n",
                         ns->href, name);
        style->errors++;
+        xmlFree(func);
     } else {
        xsltGenericDebug(xsltGenericDebugContext,
                         "exsltFuncFunctionComp: register {%s}%s\n",
@@ -724,7 +730,7 @@ exsltFuncResultElem (xsltTransformContextPtr ctxt,
        * Mark it as a function result in order to avoid garbage
        * collecting of tree fragments before the function exits.
        */
-       xsltExtensionInstructionResultRegister(ctxt, ret);
+       xsltFlagRVTs(ctxt, ret, XSLT_RVT_FUNC_RESULT);
     } else if (inst->children != NULL) {
        /* If the func:result element does not have a select attribute
         * and has non-empty content (i.e. the func:result element has
@@ -741,7 +747,8 @@ exsltFuncResultElem (xsltTransformContextPtr ctxt,
            data->error = 1;
            return;
        }
-       xsltRegisterLocalRVT(ctxt, container);
+        /* Mark as function result. */
+        container->psvi = XSLT_RVT_FUNC_RESULT;
 
        oldInsert = ctxt->insert;
        ctxt->insert = (xmlNodePtr) container;
@@ -756,11 +763,6 @@ exsltFuncResultElem (xsltTransformContextPtr ctxt,
            data->error = 1;
        } else {
            ret->boolval = 0; /* Freeing is not handled there anymore */
-           /*
-           * Mark it as a function result in order to avoid garbage
-           * collecting of tree fragments before the function exits.
-           */
-           xsltExtensionInstructionResultRegister(ctxt, ret);
        }
     } else {
        /* If the func:result element has empty content and does not
index a5a7913..8bb540d 100644 (file)
@@ -34,14 +34,12 @@ exsltSetsDifferenceFunction (xmlXPathParserContextPtr ctxt, int nargs) {
     }
 
     arg2 = xmlXPathPopNodeSet(ctxt);
-    if (xmlXPathCheckError(ctxt)) {
-       xmlXPathSetTypeError(ctxt);
+    if (xmlXPathCheckError(ctxt))
        return;
-    }
 
     arg1 = xmlXPathPopNodeSet(ctxt);
     if (xmlXPathCheckError(ctxt)) {
-       xmlXPathSetTypeError(ctxt);
+        xmlXPathFreeNodeSet(arg2);
        return;
     }
 
@@ -71,14 +69,12 @@ exsltSetsIntersectionFunction (xmlXPathParserContextPtr ctxt, int nargs) {
     }
 
     arg2 = xmlXPathPopNodeSet(ctxt);
-    if (xmlXPathCheckError(ctxt)) {
-       xmlXPathSetTypeError(ctxt);
+    if (xmlXPathCheckError(ctxt))
        return;
-    }
 
     arg1 = xmlXPathPopNodeSet(ctxt);
     if (xmlXPathCheckError(ctxt)) {
-       xmlXPathSetTypeError(ctxt);
+        xmlXPathFreeNodeSet(arg2);
        return;
     }
 
@@ -150,14 +146,12 @@ exsltSetsHasSameNodesFunction (xmlXPathParserContextPtr ctxt,
     }
 
     arg2 = xmlXPathPopNodeSet(ctxt);
-    if (xmlXPathCheckError(ctxt)) {
-       xmlXPathSetTypeError(ctxt);
+    if (xmlXPathCheckError(ctxt))
        return;
-    }
 
     arg1 = xmlXPathPopNodeSet(ctxt);
     if (xmlXPathCheckError(ctxt)) {
-       xmlXPathSetTypeError(ctxt);
+        xmlXPathFreeNodeSet(arg2);
        return;
     }
 
@@ -186,14 +180,12 @@ exsltSetsLeadingFunction (xmlXPathParserContextPtr ctxt, int nargs) {
     }
 
     arg2 = xmlXPathPopNodeSet(ctxt);
-    if (xmlXPathCheckError(ctxt)) {
-       xmlXPathSetTypeError(ctxt);
+    if (xmlXPathCheckError(ctxt))
        return;
-    }
 
     arg1 = xmlXPathPopNodeSet(ctxt);
     if (xmlXPathCheckError(ctxt)) {
-       xmlXPathSetTypeError(ctxt);
+       xmlXPathFreeNodeSet(arg2);
        return;
     }
 
@@ -233,14 +225,12 @@ exsltSetsTrailingFunction (xmlXPathParserContextPtr ctxt, int nargs) {
     }
 
     arg2 = xmlXPathPopNodeSet(ctxt);
-    if (xmlXPathCheckError(ctxt)) {
-       xmlXPathSetTypeError(ctxt);
+    if (xmlXPathCheckError(ctxt))
        return;
-    }
 
     arg1 = xmlXPathPopNodeSet(ctxt);
     if (xmlXPathCheckError(ctxt)) {
-       xmlXPathSetTypeError(ctxt);
+       xmlXPathFreeNodeSet(arg2);
        return;
     }
 
index f5f2d3c..2488936 100644 (file)
@@ -75,7 +75,7 @@ exsltStrTokenizeFunction(xmlXPathParserContextPtr ctxt, int nargs)
         ret = xmlXPathNewNodeSet(NULL);
         if (ret != NULL) {
             for (cur = str, token = str; *cur != 0; cur += clen) {
-               clen = xmlUTF8Size(cur);
+               clen = xmlUTF8Strsize(cur, 1);
                if (*delimiters == 0) { /* empty string case */
                    xmlChar ctmp;
                    ctmp = *(cur+clen);
@@ -87,7 +87,7 @@ exsltStrTokenizeFunction(xmlXPathParserContextPtr ctxt, int nargs)
                     *(cur+clen) = ctmp; /* restore the changed byte */
                     token = cur + clen;
                 } else for (delimiter = delimiters; *delimiter != 0;
-                               delimiter += xmlUTF8Size(delimiter)) {
+                               delimiter += xmlUTF8Strsize(delimiter, 1)) {
                     if (!xmlUTF8Charcmp(cur, delimiter)) {
                         if (cur == token) {
                             /* discard empty tokens */
@@ -111,11 +111,6 @@ exsltStrTokenizeFunction(xmlXPathParserContextPtr ctxt, int nargs)
                 xmlAddChild((xmlNodePtr) container, node);
                xmlXPathNodeSetAddUnique(ret->nodesetval, node);
             }
-           /*
-            * Mark it as a function result in order to avoid garbage
-            * collecting of tree fragments
-            */
-           xsltExtensionInstructionResultRegister(tctxt, ret);
         }
     }
 
@@ -222,11 +217,6 @@ exsltStrSplitFunction(xmlXPathParserContextPtr ctxt, int nargs) {
                xmlAddChild((xmlNodePtr) container, node);
                xmlXPathNodeSetAddUnique(ret->nodesetval, node);
            }
-           /*
-            * Mark it as a function result in order to avoid garbage
-            * collecting of tree fragments
-            */
-           xsltExtensionInstructionResultRegister(tctxt, ret);
         }
     }
 
@@ -275,7 +265,10 @@ exsltStrEncodeUriFunction (xmlXPathParserContextPtr ctxt, int nargs) {
     str = xmlXPathPopString(ctxt);
     str_len = xmlUTF8Strlen(str);
 
-    if (str_len == 0) {
+    if (str_len <= 0) {
+        if (str_len < 0)
+            xsltGenericError(xsltGenericErrorContext,
+                             "exsltStrEncodeUriFunction: invalid UTF-8\n");
        xmlXPathReturnEmptyString(ctxt);
        xmlFree(str);
        return;
@@ -320,7 +313,10 @@ exsltStrDecodeUriFunction (xmlXPathParserContextPtr ctxt, int nargs) {
     str = xmlXPathPopString(ctxt);
     str_len = xmlUTF8Strlen(str);
 
-    if (str_len == 0) {
+    if (str_len <= 0) {
+        if (str_len < 0)
+            xsltGenericError(xsltGenericErrorContext,
+                             "exsltStrDecodeUriFunction: invalid UTF-8\n");
        xmlXPathReturnEmptyString(ctxt);
        xmlFree(str);
        return;
@@ -352,7 +348,9 @@ exsltStrDecodeUriFunction (xmlXPathParserContextPtr ctxt, int nargs) {
 static void
 exsltStrPaddingFunction (xmlXPathParserContextPtr ctxt, int nargs) {
     int number, str_len = 0, str_size = 0;
-    xmlChar *str = NULL, *ret = NULL;
+    double floatval;
+    xmlChar *str = NULL;
+    xmlBufferPtr buf;
 
     if ((nargs < 1) || (nargs > 2)) {
        xmlXPathSetArityError(ctxt);
@@ -364,14 +362,31 @@ exsltStrPaddingFunction (xmlXPathParserContextPtr ctxt, int nargs) {
        str_len = xmlUTF8Strlen(str);
        str_size = xmlStrlen(str);
     }
-    if (str_len == 0) {
+
+    floatval = xmlXPathPopNumber(ctxt);
+
+    if (str_len <= 0) {
+        if (str_len < 0) {
+            xsltGenericError(xsltGenericErrorContext,
+                             "exsltStrPaddingFunction: invalid UTF-8\n");
+            xmlXPathReturnEmptyString(ctxt);
+            xmlFree(str);
+            return;
+        }
        if (str != NULL) xmlFree(str);
        str = xmlStrdup((const xmlChar *) " ");
        str_len = 1;
        str_size = 1;
     }
 
-    number = (int) xmlXPathPopNumber(ctxt);
+    if (xmlXPathIsNaN(floatval) || floatval < 0.0) {
+        number = 0;
+    } else if (floatval >= 100000.0) {
+        number = 100000;
+    }
+    else {
+        number = (int) floatval;
+    }
 
     if (number <= 0) {
        xmlXPathReturnEmptyString(ctxt);
@@ -379,17 +394,26 @@ exsltStrPaddingFunction (xmlXPathParserContextPtr ctxt, int nargs) {
        return;
     }
 
+    buf = xmlBufferCreateSize(number);
+    if (buf == NULL) {
+        xmlXPathSetError(ctxt, XPATH_MEMORY_ERROR);
+       xmlFree(str);
+       return;
+    }
+    xmlBufferSetAllocationScheme(buf, XML_BUFFER_ALLOC_DOUBLEIT);
+
     while (number >= str_len) {
-       ret = xmlStrncat(ret, str, str_size);
+        xmlBufferAdd(buf, str, str_size);
        number -= str_len;
     }
     if (number > 0) {
        str_size = xmlUTF8Strsize(str, number);
-       ret = xmlStrncat(ret, str, str_size);
+        xmlBufferAdd(buf, str, str_size);
     }
 
-    xmlXPathReturnString(ctxt, ret);
+    xmlXPathReturnString(ctxt, xmlBufferDetach(buf));
 
+    xmlBufferFree(buf);
     if (str != NULL)
        xmlFree(str);
 }
@@ -422,6 +446,16 @@ exsltStrAlignFunction (xmlXPathParserContextPtr ctxt, int nargs) {
     str_l = xmlUTF8Strlen (str);
     padding_l = xmlUTF8Strlen (padding);
 
+    if (str_l < 0 || padding_l < 0) {
+        xsltGenericError(xsltGenericErrorContext,
+                         "exsltStrAlignFunction: invalid UTF-8\n");
+        xmlXPathReturnEmptyString(ctxt);
+        xmlFree(str);
+        xmlFree(padding);
+        xmlFree(alignment);
+        return;
+    }
+
     if (str_l == padding_l) {
        xmlXPathReturnString (ctxt, str);
        xmlFree(padding);
@@ -472,7 +506,7 @@ exsltStrAlignFunction (xmlXPathParserContextPtr ctxt, int nargs) {
 static void
 exsltStrConcatFunction (xmlXPathParserContextPtr ctxt, int nargs) {
     xmlXPathObjectPtr obj;
-    xmlChar *ret = NULL;
+    xmlBufferPtr buf;
     int i;
 
     if (nargs  != 1) {
@@ -488,22 +522,32 @@ exsltStrConcatFunction (xmlXPathParserContextPtr ctxt, int nargs) {
     obj = valuePop (ctxt);
 
     if (xmlXPathNodeSetIsEmpty(obj->nodesetval)) {
+        xmlXPathFreeObject(obj);
        xmlXPathReturnEmptyString(ctxt);
        return;
     }
 
+    buf = xmlBufferCreate();
+    if (buf == NULL) {
+        xmlXPathSetError(ctxt, XPATH_MEMORY_ERROR);
+        xmlXPathFreeObject(obj);
+       return;
+    }
+    xmlBufferSetAllocationScheme(buf, XML_BUFFER_ALLOC_DOUBLEIT);
+
     for (i = 0; i < obj->nodesetval->nodeNr; i++) {
        xmlChar *tmp;
        tmp = xmlXPathCastNodeToString(obj->nodesetval->nodeTab[i]);
 
-       ret = xmlStrcat (ret, tmp);
+        xmlBufferCat(buf, tmp);
 
        xmlFree(tmp);
     }
 
     xmlXPathFreeObject (obj);
 
-    xmlXPathReturnString(ctxt, ret);
+    xmlXPathReturnString(ctxt, xmlBufferDetach(buf));
+    xmlBufferFree(buf);
 }
 
 /**
@@ -543,7 +587,6 @@ exsltStrReturnString(xmlXPathParserContextPtr ctxt, const xmlChar *str,
         return(-1);
     }
 
-    xsltExtensionInstructionResultRegister(tctxt, ret);
     valuePush(ctxt, ret);
 
     return(0);
@@ -680,6 +723,7 @@ exsltStrReplaceFunction (xmlXPathParserContextPtr ctxt, int nargs) {
         xmlXPathSetError(ctxt, XPATH_MEMORY_ERROR);
         goto fail_buffer;
     }
+    xmlBufferSetAllocationScheme(buf, XML_BUFFER_ALLOC_DOUBLEIT);
     src = string;
     start = string;
 
@@ -707,7 +751,7 @@ exsltStrReplaceFunction (xmlXPathParserContextPtr ctxt, int nargs) {
                 start = src;
             }
 
-            src += xmlUTF8Size(src);
+            src += xmlUTF8Strsize(src, 1);
         }
         else {
             if ((start < src &&
index 7d42edd..900d95b 100644 (file)
@@ -1,10 +1,10 @@
 Summary: Library providing the GNOME XSLT engine
 Name: libxslt
-Version: 1.1.29
-Release: 1%{?dist}%{?extra_release}
+Version: 1.1.30
+Release: 0rc1%{?dist}%{?extra_release}
 License: MIT
 Group: Development/Libraries
-Source: ftp://xmlsoft.org/XSLT/libxslt-%{version}.tar.gz
+Source: ftp://xmlsoft.org/XSLT/libxslt-%{version}-rc1.tar.gz
 BuildRoot: %{_tmppath}/%{name}-%{version}-root
 URL: http://xmlsoft.org/XSLT/
 Requires: libxml2 >= 2.6.27
@@ -129,5 +129,5 @@ rm -fr %{buildroot}
 %doc python/tests/*.xsl
 
 %changelog
-* Tue May 24 2016 Daniel Veillard <veillard@redhat.com>
-- upstream release 1.1.29 see http://xmlsoft.org/XSLT/news.html
+* Tue Aug 29 2017 Daniel Veillard <veillard@redhat.com>
+- upstream release 1.1.30 see http://xmlsoft.org/XSLT/news.html
index 96c0ca6..d1a9207 100644 (file)
@@ -1,10 +1,10 @@
 Summary: Library providing the GNOME XSLT engine
 Name: libxslt
 Version: @VERSION@
-Release: 1%{?dist}%{?extra_release}
+Release: 0rc1%{?dist}%{?extra_release}
 License: MIT
 Group: Development/Libraries
-Source: ftp://xmlsoft.org/XSLT/libxslt-%{version}.tar.gz
+Source: ftp://xmlsoft.org/XSLT/libxslt-%{version}-rc1.tar.gz
 BuildRoot: %{_tmppath}/%{name}-%{version}-root
 URL: http://xmlsoft.org/XSLT/
 Requires: libxml2 >= @LIBXML_REQUIRED_VERSION@
index d9fed68..ef2de24 100644 (file)
@@ -62,7 +62,7 @@ else
 LIBXSLT_VERSION_SCRIPT =
 endif
 
-libxslt_la_LIBADD = $(LIBXML_LIBS) $(EXTRA_LIBS)
+libxslt_la_LIBADD = $(LIBXML_LIBS) $(EXTRA_LIBS) $(M_LIBS)
 libxslt_la_LDFLAGS =                                   \
                $(WIN32_EXTRA_LDFLAGS)                  \
                $(LIBXSLT_VERSION_SCRIPT)               \
index bca66a3..7fcd92e 100644 (file)
@@ -131,7 +131,8 @@ am__installdirs = "$(DESTDIR)$(libdir)" "$(DESTDIR)$(man3dir)" \
        "$(DESTDIR)$(xsltincdir)" "$(DESTDIR)$(xsltincdir)"
 LTLIBRARIES = $(lib_LTLIBRARIES)
 am__DEPENDENCIES_1 =
-libxslt_la_DEPENDENCIES = $(am__DEPENDENCIES_1) $(am__DEPENDENCIES_1)
+libxslt_la_DEPENDENCIES = $(am__DEPENDENCIES_1) $(am__DEPENDENCIES_1) \
+       $(am__DEPENDENCIES_1)
 am_libxslt_la_OBJECTS = attrvt.lo xslt.lo xsltlocale.lo xsltutils.lo \
        pattern.lo templates.lo variables.lo keys.lo numbers.lo \
        extensions.lo extra.lo functions.lo namespaces.lo imports.lo \
@@ -303,6 +304,9 @@ PACKAGE_URL = @PACKAGE_URL@
 PACKAGE_VERSION = @PACKAGE_VERSION@
 PATH_SEPARATOR = @PATH_SEPARATOR@
 PERL = @PERL@
+PKG_CONFIG = @PKG_CONFIG@
+PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@
+PKG_CONFIG_PATH = @PKG_CONFIG_PATH@
 PYTHON = @PYTHON@
 PYTHONSODV = @PYTHONSODV@
 PYTHON_INCLUDES = @PYTHON_INCLUDES@
@@ -449,7 +453,7 @@ nodist_libxslt_la_SOURCES = \
 
 @USE_VERSION_SCRIPT_FALSE@LIBXSLT_VERSION_SCRIPT = 
 @USE_VERSION_SCRIPT_TRUE@LIBXSLT_VERSION_SCRIPT = $(VERSION_SCRIPT_FLAGS)$(srcdir)/libxslt.syms
-libxslt_la_LIBADD = $(LIBXML_LIBS) $(EXTRA_LIBS)
+libxslt_la_LIBADD = $(LIBXML_LIBS) $(EXTRA_LIBS) $(M_LIBS)
 libxslt_la_LDFLAGS = \
                $(WIN32_EXTRA_LDFLAGS)                  \
                $(LIBXSLT_VERSION_SCRIPT)               \
index 8440b10..5958ef3 100644 (file)
 #endif
 
 /*
- * TODO: merge attribute sets from different import precedence.
- *       all this should be precomputed just before the transformation
- *       starts or at first hit with a cache in the context.
- *       The simple way for now would be to not allow redefinition of
- *       attributes once generated in the output tree, possibly costlier.
- */
-
-/*
  * Useful macros
  */
 #ifdef IS_BLANK
 #define IS_BLANK_NODE(n)                                               \
     (((n)->type == XML_TEXT_NODE) && (xsltIsBlank((n)->content)))
 
+#define ATTRSET_UNRESOLVED 0
+#define ATTRSET_RESOLVING  1
+#define ATTRSET_RESOLVED   2
+
 
 /*
  * The in-memory structure corresponding to an XSLT Attribute in
@@ -87,10 +83,36 @@ typedef xsltAttrElem *xsltAttrElemPtr;
 struct _xsltAttrElem {
     struct _xsltAttrElem *next;/* chained list */
     xmlNodePtr attr;   /* the xsl:attribute definition */
-    const xmlChar *set; /* or the attribute set */
-    const xmlChar *ns;  /* and its namespace */
 };
 
+typedef struct _xsltUseAttrSet xsltUseAttrSet;
+typedef xsltUseAttrSet *xsltUseAttrSetPtr;
+struct _xsltUseAttrSet {
+    struct _xsltUseAttrSet *next; /* chained list */
+    const xmlChar *ncname;
+    const xmlChar *ns;
+};
+
+typedef struct _xsltAttrSet xsltAttrSet;
+typedef xsltAttrSet *xsltAttrSetPtr;
+struct _xsltAttrSet {
+    int state;
+    xsltAttrElemPtr attrs; /* list head */
+    xsltUseAttrSetPtr useAttrSets; /* list head */
+};
+
+typedef struct _xsltAttrSetContext xsltAttrSetContext;
+typedef xsltAttrSetContext *xsltAttrSetContextPtr;
+struct _xsltAttrSetContext {
+    xsltStylesheetPtr topStyle;
+    xsltStylesheetPtr style;
+};
+
+static void
+xsltResolveAttrSet(xsltAttrSetPtr set, xsltStylesheetPtr topStyle,
+                   xsltStylesheetPtr style, const xmlChar *name,
+                   const xmlChar *ns, int depth);
+
 /************************************************************************
  *                                                                     *
  *                     XSLT Attribute handling                         *
@@ -148,11 +170,6 @@ xsltFreeAttrElemList(xsltAttrElemPtr list) {
     }
 }
 
-#ifdef XSLT_REFACTORED
-    /*
-    * This was moved to xsltParseStylesheetAttributeSet().
-    */
-#else
 /**
  * xsltAddAttrElemList:
  * @list:  an XSLT AttrElem list
@@ -173,9 +190,7 @@ xsltAddAttrElemList(xsltAttrElemPtr list, xmlNodePtr attr) {
     cur = list;
     while (cur != NULL) {
        next = cur->next;
-       if (cur->attr == attr)
-           return(cur);
-       if (cur->next == NULL) {
+       if (next == NULL) {
            cur->next = xsltNewAttrElem(attr);
            return(list);
        }
@@ -183,92 +198,174 @@ xsltAddAttrElemList(xsltAttrElemPtr list, xmlNodePtr attr) {
     }
     return(list);
 }
-#endif /* XSLT_REFACTORED */
 
 /**
- * xsltMergeAttrElemList:
- * @list:  an XSLT AttrElem list
- * @old:  another XSLT AttrElem list
+ * xsltNewUseAttrSet:
+ * @ncname:  local name
+ * @ns:  namespace URI
  *
- * Add all the attributes from list @old to list @list,
- * but drop redefinition of existing values.
+ * Create a new XSLT UseAttrSet
  *
- * Returns the new list pointer
+ * Returns the newly allocated xsltUseAttrSetPtr or NULL in case of error.
  */
-static xsltAttrElemPtr
-xsltMergeAttrElemList(xsltStylesheetPtr style,
-                     xsltAttrElemPtr list, xsltAttrElemPtr old) {
+static xsltUseAttrSetPtr
+xsltNewUseAttrSet(const xmlChar *ncname, const xmlChar *ns) {
+    xsltUseAttrSetPtr cur;
+
+    cur = (xsltUseAttrSetPtr) xmlMalloc(sizeof(xsltUseAttrSet));
+    if (cur == NULL) {
+        xsltGenericError(xsltGenericErrorContext,
+               "xsltNewUseAttrSet : malloc failed\n");
+       return(NULL);
+    }
+    memset(cur, 0, sizeof(xsltUseAttrSet));
+    cur->ncname = ncname;
+    cur->ns = ns;
+    return(cur);
+}
+
+/**
+ * xsltFreeUseAttrSet:
+ * @use:  an XSLT UseAttrSet
+ *
+ * Free up the memory allocated by @use
+ */
+static void
+xsltFreeUseAttrSet(xsltUseAttrSetPtr use) {
+    xmlFree(use);
+}
+
+/**
+ * xsltFreeUseAttrSetList:
+ * @list:  an XSLT UseAttrSet list
+ *
+ * Free up the memory allocated by @list
+ */
+static void
+xsltFreeUseAttrSetList(xsltUseAttrSetPtr list) {
+    xsltUseAttrSetPtr next;
+
+    while (list != NULL) {
+       next = list->next;
+       xsltFreeUseAttrSet(list);
+       list = next;
+    }
+}
+
+/**
+ * xsltAddUseAttrSetList:
+ * @list:  a xsltUseAttrSet list
+ * @ncname:  local name
+ * @ns:  namespace URI
+ *
+ * Add the use-attribute-set name to the list.
+ *
+ * Returns the new list pointer.
+ */
+static xsltUseAttrSetPtr
+xsltAddUseAttrSetList(xsltUseAttrSetPtr list, const xmlChar *ncname,
+                      const xmlChar *ns) {
+    xsltUseAttrSetPtr next, cur;
+
+    if (ncname == NULL)
+        return(list);
+    if (list == NULL)
+       return(xsltNewUseAttrSet(ncname, ns));
+    cur = list;
+    while (cur != NULL) {
+        if ((cur->ncname == ncname) && (cur->ns == ns))
+            return(list);
+       next = cur->next;
+       if (next == NULL) {
+           cur->next = xsltNewUseAttrSet(ncname, ns);
+           return(list);
+       }
+       cur = next;
+    }
+    return(list);
+}
+
+/**
+ * xsltNewAttrSet:
+ *
+ * Create a new attribute set.
+ *
+ * Returns the newly allocated xsltAttrSetPtr or NULL in case of error.
+ */
+static xsltAttrSetPtr
+xsltNewAttrSet() {
+    xsltAttrSetPtr cur;
+
+    cur = (xsltAttrSetPtr) xmlMalloc(sizeof(xsltAttrSet));
+    if (cur == NULL) {
+        xsltGenericError(xsltGenericErrorContext,
+               "xsltNewAttrSet : malloc failed\n");
+       return(NULL);
+    }
+    memset(cur, 0, sizeof(xsltAttrSet));
+    return(cur);
+}
+
+/**
+ * xsltFreeAttrSet:
+ * @set:  an attribute set
+ *
+ * Free memory allocated by @set
+ */
+static void
+xsltFreeAttrSet(xsltAttrSetPtr set) {
+    if (set == NULL)
+        return;
+
+    xsltFreeAttrElemList(set->attrs);
+    xsltFreeUseAttrSetList(set->useAttrSets);
+    xmlFree(set);
+}
+
+/**
+ * xsltMergeAttrSets:
+ * @set:  an attribute set
+ * @other:  another attribute set
+ *
+ * Add all the attributes from @other to @set,
+ * but drop redefinition of existing values.
+ */
+static void
+xsltMergeAttrSets(xsltAttrSetPtr set, xsltAttrSetPtr other) {
     xsltAttrElemPtr cur;
+    xsltAttrElemPtr old = other->attrs;
     int add;
 
     while (old != NULL) {
-       if ((old->attr == NULL) && (old->set == NULL)) {
-           old = old->next;
-           continue;
-       }
        /*
         * Check that the attribute is not yet in the list
         */
-       cur = list;
+       cur = set->attrs;
        add = 1;
        while (cur != NULL) {
-           if ((cur->attr == NULL) && (cur->set == NULL)) {
-               if (cur->next == NULL)
-                   break;
-               cur = cur->next;
-               continue;
-           }
-           if ((cur->set != NULL) && (cur->set == old->set)) {
-               add = 0;
-               break;
-           }
-           if (cur->set != NULL) {
-               if (cur->next == NULL)
-                   break;
-               cur = cur->next;
-               continue;
-           }
-           if (old->set != NULL) {
-               if (cur->next == NULL)
-                   break;
-               cur = cur->next;
-               continue;
-           }
-           if (cur->attr == old->attr) {
-               xsltGenericError(xsltGenericErrorContext,
-            "xsl:attribute-set : use-attribute-sets recursion detected\n");
-               return(list);
-           }
+            xsltStylePreCompPtr curComp = cur->attr->psvi;
+            xsltStylePreCompPtr oldComp = old->attr->psvi;
+
+            if ((curComp->name == oldComp->name) &&
+                (curComp->ns == oldComp->ns)) {
+                add = 0;
+                break;
+            }
            if (cur->next == NULL)
                break;
             cur = cur->next;
        }
 
        if (add == 1) {
-           /*
-           * Changed to use the string-dict, rather than duplicating
-           * @set and @ns; this fixes bug #340400.
-           */
            if (cur == NULL) {
-               list = xsltNewAttrElem(old->attr);
-               if (old->set != NULL) {
-                   list->set = xmlDictLookup(style->dict, old->set, -1);
-                   if (old->ns != NULL)
-                       list->ns = xmlDictLookup(style->dict, old->ns, -1);
-               }
+               set->attrs = xsltNewAttrElem(old->attr);
            } else if (add) {
                cur->next = xsltNewAttrElem(old->attr);
-               if (old->set != NULL) {
-                   cur->next->set = xmlDictLookup(style->dict, old->set, -1);
-                   if (old->ns != NULL)
-                       cur->next->ns = xmlDictLookup(style->dict, old->ns, -1);
-               }
            }
        }
 
        old = old->next;
     }
-    return(list);
 }
 
 /************************************************************************
@@ -289,9 +386,10 @@ void
 xsltParseStylesheetAttributeSet(xsltStylesheetPtr style, xmlNodePtr cur) {
     const xmlChar *ncname;
     const xmlChar *prefix;
+    const xmlChar *nsUri = NULL;
     xmlChar *value;
     xmlNodePtr child;
-    xsltAttrElemPtr attrItems;
+    xsltAttrSetPtr set;
 
     if ((cur == NULL) || (style == NULL) || (cur->type != XML_ELEMENT_NODE))
        return;
@@ -305,9 +403,29 @@ xsltParseStylesheetAttributeSet(xsltStylesheetPtr style, xmlNodePtr cur) {
        return;
     }
 
+    if (xmlValidateQName(value, 0)) {
+        xsltTransformError(NULL, style, cur,
+            "xsl:attribute-set : The name '%s' is not a valid QName.\n",
+            value);
+        style->errors++;
+        xmlFree(value);
+        return;
+    }
+
     ncname = xsltSplitQName(style->dict, value, &prefix);
     xmlFree(value);
     value = NULL;
+    if (prefix != NULL) {
+        xmlNsPtr ns = xmlSearchNs(style->doc, cur, prefix);
+        if (ns == NULL) {
+            xsltTransformError(NULL, style, cur,
+                "xsl:attribute-set : No namespace found for QName '%s:%s'\n",
+                prefix, ncname);
+            style->errors++;
+            return;
+        }
+        nsUri = ns->href;
+    }
 
     if (style->attributeSets == NULL) {
 #ifdef WITH_XSLT_DEBUG_ATTRIBUTES
@@ -319,7 +437,13 @@ xsltParseStylesheetAttributeSet(xsltStylesheetPtr style, xmlNodePtr cur) {
     if (style->attributeSets == NULL)
        return;
 
-    attrItems = xmlHashLookup2(style->attributeSets, ncname, prefix);
+    set = xmlHashLookup2(style->attributeSets, ncname, nsUri);
+    if (set == NULL) {
+        set = xsltNewAttrSet();
+        if (set == NULL)
+            return;
+        xmlHashAddEntry2(style->attributeSets, ncname, nsUri, set);
+    }
 
     /*
     * Parse the content. Only xsl:attribute elements are allowed.
@@ -345,71 +469,36 @@ xsltParseStylesheetAttributeSet(xsltStylesheetPtr style, xmlNodePtr cur) {
                "xsl:attribute-set : unexpected child xsl:%s\n",
                child->name);
        } else {
-#ifdef XSLT_REFACTORED
-           xsltAttrElemPtr nextAttr, curAttr;
-
-           /*
-           * Process xsl:attribute
-           * ---------------------
-           */
-
 #ifdef WITH_XSLT_DEBUG_ATTRIBUTES
            xsltGenericDebug(xsltGenericDebugContext,
                "add attribute to list %s\n", ncname);
 #endif
-           /*
-           * The following was taken over from
-           * xsltAddAttrElemList().
-           */
-           if (attrItems == NULL) {
-               attrItems = xsltNewAttrElem(child);
-           } else {
-               curAttr = attrItems;
-               while (curAttr != NULL) {
-                   nextAttr = curAttr->next;
-                   if (curAttr->attr == child) {
-                       /*
-                       * URGENT TODO: Can somebody explain
-                       *  why attrItems is set to curAttr
-                       *  here? Is this somehow related to
-                       *  avoidance of recursions?
-                       */
-                       attrItems = curAttr;
-                       goto next_child;
-                   }
-                   if (curAttr->next == NULL)
-                       curAttr->next = xsltNewAttrElem(child);
-                   curAttr = nextAttr;
-               }
-           }
-           /*
-           * Parse the xsl:attribute and its content.
-           */
-           xsltParseAnyXSLTElem(XSLT_CCTXT(style), child);
+            xsltStylePreCompute(style, child);
+            if (child->children != NULL) {
+#ifdef XSLT_REFACTORED
+                xsltParseSequenceConstructor(XSLT_CCTXT(style),
+                                             child->children);
 #else
-#ifdef WITH_XSLT_DEBUG_ATTRIBUTES
-           xsltGenericDebug(xsltGenericDebugContext,
-               "add attribute to list %s\n", ncname);
-#endif
-           /*
-           * OLD behaviour:
-           */
-           attrItems = xsltAddAttrElemList(attrItems, child);
+                xsltParseTemplateContent(style, child);
 #endif
+            }
+            if (child->psvi == NULL) {
+                xsltTransformError(NULL, style, child,
+                    "xsl:attribute-set : internal error, attribute %s not "
+                    "compiled\n", child->name);
+            }
+            else {
+               set->attrs = xsltAddAttrElemList(set->attrs, child);
+            }
        }
 
-#ifdef XSLT_REFACTORED
-next_child:
-#endif
        child = child->next;
     }
 
     /*
-    * Process attribue "use-attribute-sets".
+    * Process attribute "use-attribute-sets".
     */
-    /* TODO check recursion */
-    value = xmlGetNsProp(cur, (const xmlChar *)"use-attribute-sets",
-       NULL);
+    value = xmlGetNsProp(cur, BAD_CAST "use-attribute-sets", NULL);
     if (value != NULL) {
        const xmlChar *curval, *endval;
        curval = value;
@@ -423,21 +512,38 @@ next_child:
            if (curval) {
                const xmlChar *ncname2 = NULL;
                const xmlChar *prefix2 = NULL;
-               xsltAttrElemPtr refAttrItems;
+                const xmlChar *nsUri2 = NULL;
 
 #ifdef WITH_XSLT_DEBUG_ATTRIBUTES
                xsltGenericDebug(xsltGenericDebugContext,
                    "xsl:attribute-set : %s adds use %s\n", ncname, curval);
 #endif
+
+                if (xmlValidateQName(curval, 0)) {
+                    xsltTransformError(NULL, style, cur,
+                        "xsl:attribute-set : The name '%s' in "
+                        "use-attribute-sets is not a valid QName.\n", curval);
+                    style->errors++;
+                    xmlFree(value);
+                    return;
+                }
+
                ncname2 = xsltSplitQName(style->dict, curval, &prefix2);
-               refAttrItems = xsltNewAttrElem(NULL);
-               if (refAttrItems != NULL) {
-                   refAttrItems->set = ncname2;
-                   refAttrItems->ns = prefix2;
-                   attrItems = xsltMergeAttrElemList(style,
-                       attrItems, refAttrItems);
-                   xsltFreeAttrElem(refAttrItems);
-               }
+                if (prefix2 != NULL) {
+                    xmlNsPtr ns2 = xmlSearchNs(style->doc, cur, prefix2);
+                    if (ns2 == NULL) {
+                        xsltTransformError(NULL, style, cur,
+                            "xsl:attribute-set : No namespace found for QName "
+                            "'%s:%s' in use-attribute-sets\n",
+                            prefix2, ncname2);
+                        style->errors++;
+                        xmlFree(value);
+                        return;
+                    }
+                    nsUri2 = ns2->href;
+                }
+                set->useAttrSets = xsltAddUseAttrSetList(set->useAttrSets,
+                                                         ncname2, nsUri2);
            }
            curval = endval;
        }
@@ -445,15 +551,6 @@ next_child:
        value = NULL;
     }
 
-    /*
-     * Update the value
-     */
-    /*
-    * TODO: Why is this dummy entry needed.?
-    */
-    if (attrItems == NULL)
-       attrItems = xsltNewAttrElem(NULL);
-    xmlHashUpdateEntry2(style->attributeSets, ncname, prefix, attrItems, NULL);
 #ifdef WITH_XSLT_DEBUG_ATTRIBUTES
     xsltGenericDebug(xsltGenericDebugContext,
        "updated attribute list %s\n", ncname);
@@ -461,143 +558,141 @@ next_child:
 }
 
 /**
- * xsltGetSAS:
- * @style:  the XSLT stylesheet
- * @name:  the attribute list name
- * @ns:  the attribute list namespace
+ * xsltResolveUseAttrSets:
+ * @set: the attribute set
+ * @asctx:  the context for attribute set resolution
+ * @depth: recursion depth
  *
- * lookup an attribute set based on the style cascade
- *
- * Returns the attribute set or NULL
+ * Process "use-attribute-sets".
  */
-static xsltAttrElemPtr
-xsltGetSAS(xsltStylesheetPtr style, const xmlChar *name, const xmlChar *ns) {
-    xsltAttrElemPtr values;
-
-    while (style != NULL) {
-       values = xmlHashLookup2(style->attributeSets, name, ns);
-       if (values != NULL)
-           return(values);
-       style = xsltNextImport(style);
+static void
+xsltResolveUseAttrSets(xsltAttrSetPtr set, xsltStylesheetPtr topStyle,
+                      int depth) {
+    xsltStylesheetPtr cur;
+    xsltAttrSetPtr other;
+    xsltUseAttrSetPtr use = set->useAttrSets;
+    xsltUseAttrSetPtr next;
+
+    while (use != NULL) {
+        /*
+         * Iterate top stylesheet and all imports.
+         */
+        cur = topStyle;
+        while (cur != NULL) {
+            if (cur->attributeSets) {
+                other = xmlHashLookup2(cur->attributeSets, use->ncname,
+                                       use->ns);
+                if (other != NULL) {
+                    xsltResolveAttrSet(other, topStyle, cur, use->ncname,
+                                       use->ns, depth + 1);
+                    xsltMergeAttrSets(set, other);
+                    break;
+                }
+            }
+            cur = xsltNextImport(cur);
+        }
+
+        next = use->next;
+        /* Free useAttrSets early. */
+        xsltFreeUseAttrSet(use);
+        use = next;
     }
-    return(NULL);
+
+    set->useAttrSets = NULL;
 }
 
 /**
- * xsltResolveSASCallbackInt:
- * @style:  the XSLT stylesheet
+ * xsltResolveAttrSet:
+ * @set: the attribute set
+ * @asctx:  the context for attribute set resolution
+ * @name: the local name of the attirbute set
+ * @ns: the namespace of the attribute set
+ * @depth: recursion depth
  *
  * resolve the references in an attribute set.
  */
 static void
-xsltResolveSASCallbackInt(xsltAttrElemPtr values, xsltStylesheetPtr style,
-                      const xmlChar *name, const xmlChar *ns,
-                      int depth) {
-    xsltAttrElemPtr tmp;
-    xsltAttrElemPtr refs;
+xsltResolveAttrSet(xsltAttrSetPtr set, xsltStylesheetPtr topStyle,
+                   xsltStylesheetPtr style, const xmlChar *name,
+                   const xmlChar *ns, int depth) {
+    xsltStylesheetPtr cur;
+    xsltAttrSetPtr other;
 
-    tmp = values;
-    if ((name == NULL) || (name[0] == 0))
+    if (set->state == ATTRSET_RESOLVED)
+        return;
+    if (set->state == ATTRSET_RESOLVING) {
+       xsltTransformError(NULL, topStyle, NULL,
+            "xsl:attribute-set : use-attribute-sets recursion detected"
+            " on %s\n", name);
+        topStyle->errors++;
+        set->state = ATTRSET_RESOLVED;
         return;
+    }
     if (depth > 100) {
-       xsltGenericError(xsltGenericErrorContext,
-       "xsl:attribute-set : use-attribute-sets recursion detected on %s\n",
-                        name);
+       xsltTransformError(NULL, topStyle, NULL,
+               "xsl:attribute-set : use-attribute-sets maximum recursion "
+               "depth exceeded on %s\n", name);
+        topStyle->errors++;
        return;
     }
-    while (tmp != NULL) {
-       if (tmp->set != NULL) {
-           /*
-            * Check against cycles !
-            */
-           if ((xmlStrEqual(name, tmp->set)) && (xmlStrEqual(ns, tmp->ns))) {
-               xsltGenericError(xsltGenericErrorContext,
-     "xsl:attribute-set : use-attribute-sets recursion detected on %s\n",
-                                 name);
-           } else {
+
+    set->state = ATTRSET_RESOLVING;
+
+    xsltResolveUseAttrSets(set, topStyle, depth);
+
+    /* Merge imported sets. */
+    cur = xsltNextImport(style);
+    while (cur != NULL) {
+        if (cur->attributeSets != NULL) {
+            other = xmlHashLookup2(cur->attributeSets, name, ns);
+
+            if (other != NULL) {
 #ifdef WITH_XSLT_DEBUG_ATTRIBUTES
-               xsltGenericDebug(xsltGenericDebugContext,
-                       "Importing attribute list %s\n", tmp->set);
+                xsltGenericDebug(xsltGenericDebugContext,
+                    "xsl:attribute-set : merging import for %s\n", name);
 #endif
+                xsltResolveUseAttrSets(other, topStyle, depth);
+                xsltMergeAttrSets(set, other);
+                xmlHashRemoveEntry2(cur->attributeSets, name, ns, NULL);
+                xsltFreeAttrSet(other);
+            }
+        }
 
-               refs = xsltGetSAS(style, tmp->set, tmp->ns);
-               if (refs == NULL) {
-                   xsltGenericError(xsltGenericErrorContext,
-     "xsl:attribute-set : use-attribute-sets %s reference missing %s\n",
-                                    name, tmp->set);
-               } else {
-                   /*
-                    * recurse first for cleanup
-                    */
-                   xsltResolveSASCallbackInt(refs, style, name, ns, depth + 1);
-                   /*
-                    * Then merge
-                    */
-                   xsltMergeAttrElemList(style, values, refs);
-                   /*
-                    * Then suppress the reference
-                    */
-                   tmp->set = NULL;
-                   tmp->ns = NULL;
-               }
-           }
-       }
-       tmp = tmp->next;
+        cur = xsltNextImport(cur);
     }
+
+    set->state = ATTRSET_RESOLVED;
 }
 
 /**
- * xsltResolveSASCallback,:
- * @style:  the XSLT stylesheet
+ * xsltResolveSASCallback:
+ * @set: the attribute set
+ * @asctx:  the context for attribute set resolution
+ * @name: the local name of the attirbute set
+ * @ns: the namespace of the attribute set
  *
  * resolve the references in an attribute set.
  */
 static void
-xsltResolveSASCallback(xsltAttrElemPtr values, xsltStylesheetPtr style,
+xsltResolveSASCallback(xsltAttrSetPtr set, xsltAttrSetContextPtr asctx,
                       const xmlChar *name, const xmlChar *ns,
                       ATTRIBUTE_UNUSED const xmlChar *ignored) {
-    xsltResolveSASCallbackInt(values, style, name, ns, 1);
-}
+    xsltStylesheetPtr topStyle = asctx->topStyle;
+    xsltStylesheetPtr style = asctx->style;
 
-/**
- * xsltMergeSASCallback,:
- * @style:  the XSLT stylesheet
- *
- * Merge an attribute set from an imported stylesheet.
- */
-static void
-xsltMergeSASCallback(xsltAttrElemPtr values, xsltStylesheetPtr style,
-                      const xmlChar *name, const xmlChar *ns,
-                      ATTRIBUTE_UNUSED const xmlChar *ignored) {
-    int ret;
-    xsltAttrElemPtr topSet;
+    xsltResolveAttrSet(set, topStyle, style, name, ns, 1);
 
-    ret = xmlHashAddEntry2(style->attributeSets, name, ns, values);
-    if (ret < 0) {
-       /*
-        * Add failed, this attribute set can be removed.
-        */
-#ifdef WITH_XSLT_DEBUG_ATTRIBUTES
-       xsltGenericDebug(xsltGenericDebugContext,
-               "attribute set %s present already in top stylesheet"
-               " - merging\n", name);
-#endif
-       topSet = xmlHashLookup2(style->attributeSets, name, ns);
-       if (topSet==NULL) {
+    /* Move attribute sets to top stylesheet. */
+    if (style != topStyle) {
+        /*
+         * This imported stylesheet won't be visited anymore. Don't bother
+         * removing the hash entry.
+         */
+        if (xmlHashAddEntry2(topStyle->attributeSets, name, ns, set) < 0) {
            xsltGenericError(xsltGenericErrorContext,
-               "xsl:attribute-set : logic error merging from imports for"
-               " attribute-set %s\n", name);
-       } else {
-           topSet = xsltMergeAttrElemList(style, topSet, values);
-           xmlHashUpdateEntry2(style->attributeSets, name, ns, topSet, NULL);
-       }
-       xsltFreeAttrElemList(values);
-#ifdef WITH_XSLT_DEBUG_ATTRIBUTES
-    } else {
-       xsltGenericDebug(xsltGenericDebugContext,
-               "attribute set %s moved to top stylesheet\n",
-                        name);
-#endif
+                "xsl:attribute-set : internal error, can't move imported "
+                " attribute set %s\n", name);
+        }
     }
 }
 
@@ -610,15 +705,14 @@ xsltMergeSASCallback(xsltAttrElemPtr values, xsltStylesheetPtr style,
 void
 xsltResolveStylesheetAttributeSet(xsltStylesheetPtr style) {
     xsltStylesheetPtr cur;
+    xsltAttrSetContext asctx;
 
 #ifdef WITH_XSLT_DEBUG_ATTRIBUTES
     xsltGenericDebug(xsltGenericDebugContext,
            "Resolving attribute sets references\n");
 #endif
-    /*
-     * First aggregate all the attribute sets definitions from the imports
-     */
-    cur = xsltNextImport(style);
+    asctx.topStyle = style;
+    cur = style;
     while (cur != NULL) {
        if (cur->attributeSets != NULL) {
            if (style->attributeSets == NULL) {
@@ -628,43 +722,37 @@ xsltResolveStylesheetAttributeSet(xsltStylesheetPtr style) {
 #endif
                style->attributeSets = xmlHashCreate(10);
            }
+            asctx.style = cur;
            xmlHashScanFull(cur->attributeSets,
-               (xmlHashScannerFull) xsltMergeSASCallback, style);
-           /*
-            * the attribute lists have either been migrated to style
-            * or freed directly in xsltMergeSASCallback()
-            */
-           xmlHashFree(cur->attributeSets, NULL);
-           cur->attributeSets = NULL;
+               (xmlHashScannerFull) xsltResolveSASCallback, &asctx);
+
+            if (cur != style) {
+                /*
+                 * the attribute lists have either been migrated to style
+                 * or freed directly in xsltResolveSASCallback()
+                 */
+                xmlHashFree(cur->attributeSets, NULL);
+                cur->attributeSets = NULL;
+            }
        }
        cur = xsltNextImport(cur);
     }
-
-    /*
-     * Then resolve all the references and computes the resulting sets
-     */
-    if (style->attributeSets != NULL) {
-       xmlHashScanFull(style->attributeSets,
-               (xmlHashScannerFull) xsltResolveSASCallback, style);
-    }
 }
 
 /**
- * xsltAttributeInternal:
+ * xsltAttribute:
  * @ctxt:  a XSLT process context
- * @node:  the current node in the source tree
+ * @contextNode:  the current node in the source tree
  * @inst:  the xsl:attribute element
- * @comp:  precomputed information
- * @fromAttributeSet:  the attribute comes from an attribute-set
+ * @castedComp:  precomputed information
  *
  * Process the xslt attribute node on the source node
  */
-static void
-xsltAttributeInternal(xsltTransformContextPtr ctxt,
-                     xmlNodePtr contextNode,
-                      xmlNodePtr inst,
-                     xsltStylePreCompPtr castedComp,
-                      int fromAttributeSet)
+void
+xsltAttribute(xsltTransformContextPtr ctxt,
+             xmlNodePtr contextNode,
+              xmlNodePtr inst,
+             xsltStylePreCompPtr castedComp)
 {
 #ifdef XSLT_REFACTORED
     xsltStyleItemAttributePtr comp =
@@ -704,7 +792,7 @@ xsltAttributeInternal(xsltTransformContextPtr ctxt,
 
     if (comp == NULL) {
         xsltTransformError(ctxt, NULL, inst,
-           "Internal error in xsltAttributeInternal(): "
+           "Internal error in xsltAttribute(): "
            "The XSLT 'attribute' instruction was not compiled.\n");
         return;
     }
@@ -869,19 +957,6 @@ xsltAttributeInternal(xsltTransformContextPtr ctxt,
            nsName = ns->href;
     }
 
-    if (fromAttributeSet) {
-       /*
-       * This tries to ensure that xsl:attribute(s) coming
-       * from an xsl:attribute-set won't override attribute of
-       * literal result elements or of explicit xsl:attribute(s).
-       * URGENT TODO: This might be buggy, since it will miss to
-       *  overwrite two equal attributes both from attribute sets.
-       */
-       attr = xmlHasNsProp(targetElem, name, nsName);
-       if (attr != NULL)
-           return;
-    }
-
     /*
     * Find/create a matching ns-decl in the result tree.
     */
@@ -1032,21 +1107,6 @@ error:
 }
 
 /**
- * xsltAttribute:
- * @ctxt:  a XSLT process context
- * @node:  the node in the source tree.
- * @inst:  the xslt attribute node
- * @comp:  precomputed information
- *
- * Process the xslt attribute node on the source node
- */
-void
-xsltAttribute(xsltTransformContextPtr ctxt, xmlNodePtr node,
-             xmlNodePtr inst, xsltStylePreCompPtr comp) {
-    xsltAttributeInternal(ctxt, node, inst, comp, 0);
-}
-
-/**
  * xsltApplyAttributeSet:
  * @ctxt:  the XSLT stylesheet
  * @node:  the node in the source tree.
@@ -1066,7 +1126,7 @@ xsltApplyAttributeSet(xsltTransformContextPtr ctxt, xmlNodePtr node,
     const xmlChar *ncname = NULL;
     const xmlChar *prefix = NULL;
     const xmlChar *curstr, *endstr;
-    xsltAttrElemPtr attrs;
+    xsltAttrSetPtr set;
     xsltStylesheetPtr style;
 
     if (attrSets == NULL) {
@@ -1103,15 +1163,32 @@ xsltApplyAttributeSet(xsltTransformContextPtr ctxt, xmlNodePtr node,
             endstr++;
         curstr = xmlDictLookup(ctxt->dict, curstr, endstr - curstr);
         if (curstr) {
-           /*
-           * TODO: Validate the QName.
-           */
+            xmlNsPtr ns;
+            const xmlChar *nsUri = NULL;
 
-#ifdef WITH_XSLT_DEBUG_curstrUTES
+#ifdef WITH_XSLT_DEBUG_ATTRIBUTES
             xsltGenericDebug(xsltGenericDebugContext,
-                             "apply curstrute set %s\n", curstr);
+                             "apply attribute set %s\n", curstr);
 #endif
+
+            if (xmlValidateQName(curstr, 0)) {
+                xsltTransformError(ctxt, NULL, inst,
+                    "The name '%s' in use-attribute-sets is not a valid "
+                    "QName.\n", curstr);
+                return;
+            }
+
             ncname = xsltSplitQName(ctxt->dict, curstr, &prefix);
+            if (prefix != NULL) {
+               ns = xmlSearchNs(inst->doc, inst, prefix);
+                if (ns == NULL) {
+                    xsltTransformError(ctxt, NULL, inst,
+                        "use-attribute-set : No namespace found for QName "
+                        "'%s:%s'\n", prefix, ncname);
+                    return;
+                }
+                nsUri = ns->href;
+            }
 
             style = ctxt->style;
 
@@ -1120,27 +1197,28 @@ xsltApplyAttributeSet(xsltTransformContextPtr ctxt, xmlNodePtr node,
                (style->attributeSets != NULL) &&
                (ctxt->debugStatus != XSLT_DEBUG_NONE))
            {
-                attrs =
-                    xmlHashLookup2(style->attributeSets, ncname, prefix);
-                if ((attrs != NULL) && (attrs->attr != NULL))
-                    xslHandleDebugger(attrs->attr->parent, node, NULL,
+                set = xmlHashLookup2(style->attributeSets, ncname, nsUri);
+                if ((set != NULL) && (set->attrs != NULL) &&
+                    (set->attrs->attr != NULL))
+                    xslHandleDebugger(set->attrs->attr->parent, node, NULL,
                        ctxt);
             }
 #endif
            /*
-           * Lookup the referenced curstrute-set.
+           * Lookup the referenced attribute-set. All attribute sets were
+            * moved to the top stylesheet so there's no need to iterate
+            * imported stylesheets
            */
-            while (style != NULL) {
-                attrs =
-                    xmlHashLookup2(style->attributeSets, ncname, prefix);
-                while (attrs != NULL) {
-                    if (attrs->attr != NULL) {
-                        xsltAttributeInternal(ctxt, node, attrs->attr,
-                           attrs->attr->psvi, 1);
+            set = xmlHashLookup2(style->attributeSets, ncname, nsUri);
+            if (set != NULL) {
+                xsltAttrElemPtr cur = set->attrs;
+                while (cur != NULL) {
+                    if (cur->attr != NULL) {
+                        xsltAttribute(ctxt, node, cur->attr,
+                            cur->attr->psvi);
                     }
-                    attrs = attrs->next;
+                    cur = cur->next;
                 }
-                style = xsltNextImport(style);
             }
         }
         curstr = endstr;
@@ -1157,6 +1235,6 @@ void
 xsltFreeAttributeSetsHashes(xsltStylesheetPtr style) {
     if (style->attributeSets != NULL)
        xmlHashFree((xmlHashTablePtr) style->attributeSets,
-                   (xmlHashDeallocator) xsltFreeAttrElemList);
+                   (xmlHashDeallocator) xsltFreeAttrSet);
     style->attributeSets = NULL;
 }
index ae6eef0..ed02de5 100644 (file)
@@ -389,8 +389,7 @@ xsltExtModuleRegisterDynamic(const xmlChar * URI)
 
     /* build the module filename, and confirm the module exists */
     xmlStrPrintf((xmlChar *) module_filename, sizeof(module_filename),
-                 BAD_CAST "%s/%s%s",
-                 ext_directory, ext_name, LIBXML_MODULE_EXTENSION);
+                 "%s/%s%s", ext_directory, ext_name, LIBXML_MODULE_EXTENSION);
 
 #ifdef WITH_XSLT_DEBUG_EXTENSIONS
     xsltGenericDebug(xsltGenericDebugContext,
index 17df4ba..2be0eec 100644 (file)
@@ -14,9 +14,6 @@
 #include "libxslt.h"
 
 #include <string.h>
-#ifdef HAVE_TIME_H
-#include <time.h>
-#endif
 #ifdef HAVE_STDLIB_H
 #include <stdlib.h>
 #endif
@@ -99,7 +96,10 @@ xsltDebug(xsltTransformContextPtr ctxt, xmlNodePtr node ATTRIBUTE_UNUSED,
                 xsltGenericError(xsltGenericErrorContext, "noname !!!!");
 #ifdef LIBXML_DEBUG_ENABLED
             if (cur->value != NULL) {
-                xmlXPathDebugDumpObject(stdout, cur->value, 1);
+                if ((xsltGenericDebugContext == stdout) ||
+                    (xsltGenericDebugContext == stderr))
+                    xmlXPathDebugDumpObject((FILE*)xsltGenericDebugContext,
+                                            cur->value, 1);
             } else {
                 xsltGenericError(xsltGenericErrorContext, "NULL !!!!");
             }
@@ -148,134 +148,6 @@ xsltFunctionNodeSet(xmlXPathParserContextPtr ctxt, int nargs){
     }
 }
 
-
-/*
- * Okay the following really seems unportable and since it's not
- * part of any standard I'm not too ashamed to do this
- */
-#if defined(linux) || defined(__sun)
-#if defined(HAVE_MKTIME) && defined(HAVE_LOCALTIME) && defined(HAVE_ASCTIME)
-#define WITH_LOCALTIME
-
-/**
- * xsltFunctionLocalTime:
- * @ctxt:  the XPath Parser context
- * @nargs:  the number of arguments
- *
- * Implement the localTime XSLT function used by NORM
- *   string localTime(???)
- *
- * This function is available in Norm's extension namespace
- * Code (and comments) contributed by Norm
- */
-static void
-xsltFunctionLocalTime(xmlXPathParserContextPtr ctxt, int nargs) {
-    xmlXPathObjectPtr obj;
-    char *str;
-    char digits[5];
-    char result[29];
-    long int field;
-    time_t gmt, lmt;
-    struct tm gmt_tm;
-    struct tm *local_tm;
-
-    if (nargs != 1) {
-       xsltTransformError(xsltXPathGetTransformContext(ctxt), NULL, NULL,
-                      "localTime() : invalid number of args %d\n", nargs);
-       ctxt->error = XPATH_INVALID_ARITY;
-       return;
-    }
-
-    obj = valuePop(ctxt);
-
-    if (obj->type != XPATH_STRING) {
-       obj = xmlXPathConvertString(obj);
-    }
-    if (obj == NULL) {
-       valuePush(ctxt, xmlXPathNewString((const xmlChar *)""));
-       return;
-    }
-
-    str = (char *) obj->stringval;
-
-    /* str = "$Date$" */
-    memset(digits, 0, sizeof(digits));
-    strncpy(digits, str+7, 4);
-    field = strtol(digits, NULL, 10);
-    gmt_tm.tm_year = field - 1900;
-
-    memset(digits, 0, sizeof(digits));
-    strncpy(digits, str+12, 2);
-    field = strtol(digits, NULL, 10);
-    gmt_tm.tm_mon = field - 1;
-
-    memset(digits, 0, sizeof(digits));
-    strncpy(digits, str+15, 2);
-    field = strtol(digits, NULL, 10);
-    gmt_tm.tm_mday = field;
-
-    memset(digits, 0, sizeof(digits));
-    strncpy(digits, str+18, 2);
-    field = strtol(digits, NULL, 10);
-    gmt_tm.tm_hour = field;
-
-    memset(digits, 0, sizeof(digits));
-    strncpy(digits, str+21, 2);
-    field = strtol(digits, NULL, 10);
-    gmt_tm.tm_min = field;
-
-    memset(digits, 0, sizeof(digits));
-    strncpy(digits, str+24, 2);
-    field = strtol(digits, NULL, 10);
-    gmt_tm.tm_sec = field;
-
-    /* Now turn gmt_tm into a time. */
-    gmt = mktime(&gmt_tm);
-
-
-    /*
-     * FIXME: it's been too long since I did manual memory management.
-     * (I swore never to do it again.) Does this introduce a memory leak?
-     */
-    local_tm = localtime(&gmt);
-
-    /*
-     * Calling localtime() has the side-effect of setting timezone.
-     * After we know the timezone, we can adjust for it
-     */
-#if !defined(__FreeBSD__)
-    lmt = gmt - timezone;
-#else  /* FreeBSD DOESN'T have such side-ffect */
-    lmt = gmt - local_tm->tm_gmtoff;
-#endif
-    /*
-     * FIXME: it's been too long since I did manual memory management.
-     * (I swore never to do it again.) Does this introduce a memory leak?
-     */
-    local_tm = localtime(&lmt);
-
-    /*
-     * Now convert local_tm back into a string. This doesn't introduce
-     * a memory leak, so says asctime(3).
-     */
-
-    str = asctime(local_tm);           /* "Tue Jun 26 05:02:16 2001" */
-                                       /*  0123456789 123456789 123 */
-
-    memset(result, 0, sizeof(result)); /* "Thu, 26 Jun 2001" */
-                                       /*  0123456789 12345 */
-
-    strncpy(result, str, 20);
-    strcpy(result+20, "???");          /* tzname doesn't work, fake it */
-    strncpy(result+23, str+19, 5);
-
-    /* Ok, now result contains the string I want to send back. */
-    valuePush(ctxt, xmlXPathNewString((xmlChar *)result));
-}
-#endif
-#endif /* linux or sun */
-
-
 /**
  * xsltRegisterExtras:
  * @ctxt:  a XSLT process context
@@ -304,11 +176,6 @@ xsltRegisterAllExtras (void) {
     xsltRegisterExtModuleFunction((const xmlChar *) "node-set",
                                  XSLT_XT_NAMESPACE,
                                  xsltFunctionNodeSet);
-#ifdef WITH_LOCALTIME
-    xsltRegisterExtModuleFunction((const xmlChar *) "localTime",
-                                 XSLT_NORM_SAXON_NAMESPACE,
-                                 xsltFunctionLocalTime);
-#endif
     xsltRegisterExtModuleElement((const xmlChar *) "debug",
                                 XSLT_LIBXSLT_NAMESPACE,
                                 NULL,
index 6929e3c..1b36d56 100644 (file)
@@ -48,14 +48,6 @@ extern "C" {
 #define XSLT_XALAN_NAMESPACE ((xmlChar *)      \
                                "org.apache.xalan.xslt.extensions.Redirect")
 
-/**
- * XSLT_NORM_SAXON_NAMESPACE:
- *
- * This is Norm's namespace for SAXON extensions.
- */
-#define XSLT_NORM_SAXON_NAMESPACE ((xmlChar *) \
-       "http://nwalsh.com/xslt/ext/com.nwalsh.saxon.CVS")
-
 
 XSLTPUBFUN void XSLTCALL
                xsltFunctionNodeSet     (xmlXPathParserContextPtr ctxt,
index a5e7021..43d82f6 100644 (file)
@@ -603,12 +603,15 @@ xsltFormatNumberFunction(xmlXPathParserContextPtr ctxt, int nargs)
     xmlXPathObjectPtr formatObj = NULL;
     xmlXPathObjectPtr decimalObj = NULL;
     xsltStylesheetPtr sheet;
-    xsltDecimalFormatPtr formatValues;
+    xsltDecimalFormatPtr formatValues = NULL;
     xmlChar *result;
+    const xmlChar *ncname;
+    const xmlChar *prefix = NULL;
+    const xmlChar *nsUri = NULL;
     xsltTransformContextPtr tctxt;
 
     tctxt = xsltXPathGetTransformContext(ctxt);
-    if (tctxt == NULL)
+    if ((tctxt == NULL) || (tctxt->inst == NULL))
        return;
     sheet = tctxt->style;
     if (sheet == NULL)
@@ -619,7 +622,23 @@ xsltFormatNumberFunction(xmlXPathParserContextPtr ctxt, int nargs)
     case 3:
        CAST_TO_STRING;
        decimalObj = valuePop(ctxt);
-       formatValues = xsltDecimalFormatGetByName(sheet, decimalObj->stringval);
+        ncname = xsltSplitQName(sheet->dict, decimalObj->stringval, &prefix);
+        if (prefix != NULL) {
+            xmlNsPtr ns = xmlSearchNs(tctxt->inst->doc, tctxt->inst, prefix);
+            if (ns == NULL) {
+                xsltTransformError(tctxt, NULL, NULL,
+                    "format-number : No namespace found for QName '%s:%s'\n",
+                    prefix, ncname);
+                sheet->errors++;
+                ncname = NULL;
+            }
+            else {
+                nsUri = ns->href;
+            }
+        }
+        if (ncname != NULL) {
+           formatValues = xsltDecimalFormatGetByQName(sheet, nsUri, ncname);
+        }
        if (formatValues == NULL) {
            xsltTransformError(tctxt, NULL, NULL,
                    "format-number() : undeclared decimal format '%s'\n",
@@ -835,7 +854,7 @@ xsltElementAvailableFunction(xmlXPathParserContextPtr ctxt, int nargs){
     }
     obj = valuePop(ctxt);
     tctxt = xsltXPathGetTransformContext(ctxt);
-    if (tctxt == NULL) {
+    if ((tctxt == NULL) || (tctxt->inst == NULL)) {
        xsltTransformError(xsltXPathGetTransformContext(ctxt), NULL, NULL,
                "element-available() : internal error tctxt == NULL\n");
        xmlXPathFreeObject(obj);
@@ -850,7 +869,7 @@ xsltElementAvailableFunction(xmlXPathParserContextPtr ctxt, int nargs){
 
        name = xmlStrdup(obj->stringval);
        ns = xmlSearchNs(tctxt->inst->doc, tctxt->inst, NULL);
-       if (ns != NULL) nsURI = xmlStrdup(ns->href);
+       if (ns != NULL) nsURI = ns->href;
     } else {
        nsURI = xmlXPathNsLookup(ctxt->context, prefix);
        if (nsURI == NULL) {
index 43a343e..85902b0 100644 (file)
@@ -402,10 +402,13 @@ xsltAddKey(xsltStylesheetPtr style, const xmlChar *name,
        prev->next = key;
     }
     key->next = NULL;
+    key = NULL;
 
 error:
     if (pattern != NULL)
        xmlFree(pattern);
+    if (key != NULL)
+        xsltFreeKeyDef(key);
     return(0);
 }
 
index 3d9b5c6..684cd1b 100644 (file)
@@ -107,7 +107,7 @@ LIBXML2_1.0.11 {
   xsltFreeCompMatchList;
   xsltFreeTemplateHashes;
   xsltGetTemplate;
-  xsltMatchPattern;
+# xsltMatchPattern; removed in 1.0.12
   xsltTestCompMatchList;
 
 # preproc
@@ -210,6 +210,9 @@ LIBXML2_1.0.11 {
 
 # xslt
   xsltCleanupGlobals;
+
+  local:
+    *;
 } ;
 
 LIBXML2_1.0.12 {
@@ -407,7 +410,7 @@ LIBXML2_1.1.18 {
     global:
 
 # xsltInternals
-  xsltConstNamespaceNameXSLT; # variable
+# xsltConstNamespaceNameXSLT; requires switch REFACTORED
   xsltExtensionInstructionResultFinalize;
   xsltExtensionInstructionResultRegister;
   xsltInitCtxtKey;
@@ -416,24 +419,24 @@ LIBXML2_1.1.18 {
   xsltInit;
 
 # xsltInternals
-  xsltParseAnyXSLTElem;
-  xsltParseSequenceConstructor;
-  xsltPointerListAddSize;
-  xsltPointerListClear;
-  xsltPointerListCreate;
-  xsltPointerListFree;
+# xsltParseAnyXSLTElem; requires switch REFACTORED
+# xsltParseSequenceConstructor; requires switch REFACTORED
+# xsltPointerListAddSize; requires switch REFACTORED
+# xsltPointerListClear; requires switch REFACTORED
+# xsltPointerListCreate; requires switch REFACTORED
+# xsltPointerListFree; requires switch REFACTORED
   xsltRegisterLocalRVT;
   xsltReleaseRVT;
-  xsltRestoreDocumentNamespaces;
+# xsltRestoreDocumentNamespaces; requires switch REFACTORED
 
 # extensions
-  xsltStyleStylesheetLevelGetExtData;
+# xsltStyleStylesheetLevelGetExtData; requires switch REFACTORED
 
 # xsltInternals
 # xsltTransStorageAdd; removed in 1.1.28
 # xsltTransStorageRemove; removed in 1.1.28
   xsltUninit;
-  xsltXSLTAttrMarker; # variable
+# xsltXSLTAttrMarker; requires switch REFACTORED
 } LIBXML2_1.1.9;
 
 LIBXML2_1.1.20 {
@@ -488,3 +491,11 @@ LIBXML2_1.1.27 {
   xsltXPathCompileFlags;
 } LIBXML2_1.1.26;
 
+LIBXML2_1.1.30 {
+    global:
+
+# xsltInternals
+  xsltFlagRVTs;
+  xsltDecimalFormatGetByQName;
+} LIBXML2_1.1.27;
+
index e769c42..24a1157 100644 (file)
@@ -65,40 +65,12 @@ static xsltFormatToken default_token;
 /*
  * **** Start temp insert ****
  *
- * The following two routines (xsltUTF8Size and xsltUTF8Charcmp)
- * will be replaced with calls to the corresponding libxml routines
- * at a later date (when other inter-library dependencies require it)
+ * The following routine xsltUTF8Charcmp will be replaced with calls to
+ * the corresponding libxml routine at a later date (when other
+ * inter-library dependencies require it).
  */
 
 /**
- * xsltUTF8Size:
- * @utf: pointer to the UTF8 character
- *
- * returns the numbers of bytes in the character, -1 on format error
- */
-static int
-xsltUTF8Size(xmlChar *utf) {
-    xmlChar mask;
-    int len;
-
-    if (utf == NULL)
-        return -1;
-    if (*utf < 0x80)
-        return 1;
-    /* check valid UTF8 character */
-    if (!(*utf & 0x40))
-        return -1;
-    /* determine number of bytes in char */
-    len = 2;
-    for (mask=0x20; mask != 0; mask>>=1) {
-        if (!(*utf & mask))
-            return len;
-        len++;
-    }
-    return -1;
-}
-
-/**
  * xsltUTF8Charcmp
  * @utf1: pointer to first UTF8 char
  * @utf2: pointer to second UTF8 char
@@ -108,13 +80,16 @@ xsltUTF8Size(xmlChar *utf) {
  */
 static int
 xsltUTF8Charcmp(xmlChar *utf1, xmlChar *utf2) {
+    int len = xmlUTF8Strsize(utf1, 1);
 
+    if (len < 1)
+        return -1;
     if (utf1 == NULL ) {
         if (utf2 == NULL)
             return 0;
         return -1;
     }
-    return xmlStrncmp(utf1, utf2, xsltUTF8Size(utf1));
+    return xmlStrncmp(utf1, utf2, len);
 }
 
 /***** Stop temp insert *****/
@@ -222,7 +197,7 @@ xsltNumberFormatDecimal(xmlBufferPtr buffer,
     }
     if (i < 0)
         xsltGenericError(xsltGenericErrorContext,
-               "xsltNumberFormatDecimal: Internal buffer size exceeded");
+               "xsltNumberFormatDecimal: Internal buffer size exceeded\n");
     xmlBufferCat(buffer, pointer);
 }
 
@@ -616,25 +591,7 @@ xsltNumberFormatGetAnyLevel(xsltTransformContextPtr context,
 {
     int amount = 0;
     int cnt = 0;
-    xmlNodePtr cur;
-
-    /* select the starting node */
-    switch (node->type) {
-       case XML_ELEMENT_NODE:
-           cur = node;
-           break;
-       case XML_ATTRIBUTE_NODE:
-           cur = ((xmlAttrPtr) node)->parent;
-           break;
-       case XML_TEXT_NODE:
-       case XML_PI_NODE:
-       case XML_COMMENT_NODE:
-           cur = node->parent;
-           break;
-       default:
-           cur = NULL;
-           break;
-    }
+    xmlNodePtr cur = node;
 
     while (cur != NULL) {
        /* process current node */
@@ -653,16 +610,25 @@ xsltNumberFormatGetAnyLevel(xsltTransformContextPtr context,
             (cur->type == XML_HTML_DOCUMENT_NODE))
            break; /* while */
 
-       while ((cur->prev != NULL) && ((cur->prev->type == XML_DTD_NODE) ||
-              (cur->prev->type == XML_XINCLUDE_START) ||
-              (cur->prev->type == XML_XINCLUDE_END)))
-           cur = cur->prev;
-       if (cur->prev != NULL) {
-           for (cur = cur->prev; cur->last != NULL; cur = cur->last);
-       } else {
-           cur = cur->parent;
-       }
-
+        if (cur->type == XML_NAMESPACE_DECL) {
+            /*
+            * The XPath module stores the parent of a namespace node in
+            * the ns->next field.
+            */
+            cur = (xmlNodePtr) ((xmlNsPtr) cur)->next;
+        } else if (cur->type == XML_ATTRIBUTE_NODE) {
+            cur = cur->parent;
+        } else {
+            while ((cur->prev != NULL) && ((cur->prev->type == XML_DTD_NODE) ||
+                   (cur->prev->type == XML_XINCLUDE_START) ||
+                   (cur->prev->type == XML_XINCLUDE_END)))
+                cur = cur->prev;
+            if (cur->prev != NULL) {
+                for (cur = cur->prev; cur->last != NULL; cur = cur->last);
+            } else {
+                cur = cur->parent;
+            }
+        }
     }
 
     array[amount++] = (double) cnt;
@@ -908,7 +874,7 @@ xsltFormatNumberPreSuffix(xsltDecimalFormatPtr self, xmlChar **format, xsltForma
            }
        }
 
-       if ((len=xsltUTF8Size(*format)) < 1)
+       if ((len=xmlUTF8Strsize(*format, 1)) < 1)
            return -1;
        count += len;
        *format += len;
@@ -1090,7 +1056,7 @@ xsltFormatNumberConversion(xsltDecimalFormatPtr self,
        } else
            break; /* while */
 
-       if ((len=xsltUTF8Size(the_format)) < 1) {
+       if ((len=xmlUTF8Strsize(the_format, 1)) < 1) {
            found_error = 1;
            goto OUTPUT_NUMBER;
        }
@@ -1099,9 +1065,14 @@ xsltFormatNumberConversion(xsltDecimalFormatPtr self,
     }
 
     /* We have finished the integer part, now work on fraction */
-    if (xsltUTF8Charcmp(the_format, self->decimalPoint) == 0) {
+    if ( (*the_format != 0) &&
+         (xsltUTF8Charcmp(the_format, self->decimalPoint) == 0) ) {
         format_info.add_decimal = TRUE;
-       the_format += xsltUTF8Size(the_format); /* Skip over the decimal */
+        if ((len = xmlUTF8Strsize(the_format, 1)) < 1) {
+            found_error = 1;
+            goto OUTPUT_NUMBER;
+        }
+       the_format += len;      /* Skip over the decimal */
     }
 
     while (*the_format != 0) {
@@ -1120,7 +1091,7 @@ xsltFormatNumberConversion(xsltDecimalFormatPtr self,
                goto OUTPUT_NUMBER;
            }
            delayed_multiplier = 100;
-           if ((len = xsltUTF8Size(the_format)) < 1) {
+           if ((len = xmlUTF8Strsize(the_format, 1)) < 1) {
                found_error = 1;
                goto OUTPUT_NUMBER;
            }
@@ -1132,7 +1103,7 @@ xsltFormatNumberConversion(xsltDecimalFormatPtr self,
                goto OUTPUT_NUMBER;
            }
            delayed_multiplier = 1000;
-           if  ((len = xsltUTF8Size(the_format)) < 1) {
+           if  ((len = xmlUTF8Strsize(the_format, 1)) < 1) {
                found_error = 1;
                goto OUTPUT_NUMBER;
            }
@@ -1141,7 +1112,7 @@ xsltFormatNumberConversion(xsltDecimalFormatPtr self,
        } else if (xsltUTF8Charcmp(the_format, self->grouping) != 0) {
            break; /* while */
        }
-       if ((len = xsltUTF8Size(the_format)) < 1) {
+       if ((len = xmlUTF8Strsize(the_format, 1)) < 1) {
            found_error = 1;
            goto OUTPUT_NUMBER;
        }
@@ -1218,7 +1189,7 @@ xsltFormatNumberConversion(xsltDecimalFormatPtr self,
                    delayed_multiplier = 0;
                else
                    break; /* while */
-               if ((len = xsltUTF8Size(the_format)) < 1) {
+               if ((len = xmlUTF8Strsize(the_format, 1)) < 1) {
                    found_error = 1;
                    goto OUTPUT_NUMBER;
                }
@@ -1284,12 +1255,12 @@ OUTPUT_NUMBER:
 
     /* Ready to output our number.  First see if "default sign" is required */
     if (default_sign != 0)
-       xmlBufferAdd(buffer, self->minusSign, xsltUTF8Size(self->minusSign));
+       xmlBufferAdd(buffer, self->minusSign, xmlUTF8Strsize(self->minusSign, 1));
 
     /* Put the prefix into the buffer */
     for (j = 0; j < prefix_length; j++) {
        if ((pchar = *prefix++) == SYMBOL_QUOTE) {
-           len = xsltUTF8Size(prefix);
+           len = xmlUTF8Strsize(prefix, 1);
            xmlBufferAdd(buffer, prefix, len);
            prefix += len;
            j += len - 1;       /* length of symbol less length of quote */
@@ -1326,20 +1297,20 @@ OUTPUT_NUMBER:
     /* Add leading zero, if required */
     if ((floor(number) == 0) &&
        (format_info.integer_digits + format_info.frac_digits == 0)) {
-        xmlBufferAdd(buffer, self->zeroDigit, xsltUTF8Size(self->zeroDigit));
+        xmlBufferAdd(buffer, self->zeroDigit, xmlUTF8Strsize(self->zeroDigit, 1));
     }
 
     /* Next the fractional part, if required */
     if (format_info.frac_digits + format_info.frac_hash == 0) {
         if (format_info.add_decimal)
            xmlBufferAdd(buffer, self->decimalPoint,
-                        xsltUTF8Size(self->decimalPoint));
+                        xmlUTF8Strsize(self->decimalPoint, 1));
     }
     else {
       number -= floor(number);
        if ((number != 0) || (format_info.frac_digits != 0)) {
            xmlBufferAdd(buffer, self->decimalPoint,
-                        xsltUTF8Size(self->decimalPoint));
+                        xmlUTF8Strsize(self->decimalPoint, 1));
            number = floor(scale * number + 0.5);
            for (j = format_info.frac_hash; j > 0; j--) {
                if (fmod(number, 10.0) >= 1.0)
@@ -1354,7 +1325,7 @@ OUTPUT_NUMBER:
     /* Put the suffix into the buffer */
     for (j = 0; j < suffix_length; j++) {
        if ((pchar = *suffix++) == SYMBOL_QUOTE) {
-            len = xsltUTF8Size(suffix);
+            len = xmlUTF8Strsize(suffix, 1);
            xmlBufferAdd(buffer, suffix, len);
            suffix += len;
            j += len - 1;       /* length of symbol less length of escape */
index e211a01..c094e97 100644 (file)
@@ -104,6 +104,7 @@ struct _xsltCompMatch {
     const xmlChar *mode;         /* the mode */
     const xmlChar *modeURI;      /* the mode URI */
     xsltTemplatePtr template;    /* the associated template */
+    xmlNodePtr node;             /* the containing element */
 
     int direct;
     /* TODO fix the statically allocated size steps[] */
@@ -914,7 +915,9 @@ xsltTestCompMatch(xsltTransformContextPtr ctxt, xsltCompMatchPtr comp,
                  xmlNodePtr matchNode, const xmlChar *mode,
                  const xmlChar *modeURI) {
     int i;
+    int found = 0;
     xmlNodePtr node = matchNode;
+    xmlNodePtr oldInst;
     xsltStepOpPtr step, sel = NULL;
     xsltStepStates states = {0, 0, NULL}; /* // may require backtrack */
 
@@ -948,6 +951,10 @@ xsltTestCompMatch(xsltTransformContextPtr ctxt, xsltCompMatchPtr comp,
            return(0);
     }
 
+    /* Some XPath functions rely on inst being set correctly. */
+    oldInst = ctxt->inst;
+    ctxt->inst = comp->node;
+
     i = 0;
 restart:
     for (;i < comp->nbStep;i++) {
@@ -1140,12 +1147,9 @@ restart:
                 * as possible this costly computation.
                 */
                if (comp->direct) {
-                   if (states.states != NULL) {
-                       /* Free the rollback states */
-                       xmlFree(states.states);
-                   }
-                   return(xsltTestCompMatchDirect(ctxt, comp, matchNode,
-                                                  comp->nsList, comp->nsNr));
+                   found = xsltTestCompMatchDirect(ctxt, comp, matchNode,
+                                                   comp->nsList, comp->nsNr);
+                    goto exit;
                }
 
                if (!xsltTestPredicateMatch(ctxt, comp, node, step, sel))
@@ -1185,18 +1189,19 @@ restart:
        }
     }
 found:
+    found = 1;
+exit:
+    ctxt->inst = oldInst;
     if (states.states != NULL) {
         /* Free the rollback states */
        xmlFree(states.states);
     }
-    return(1);
+    return found;
 rollback:
     /* got an error try to rollback */
-    if (states.states == NULL)
-       return(0);
-    if (states.nbstates <= 0) {
-       xmlFree(states.states);
-       return(0);
+    if (states.states == NULL || states.nbstates <= 0) {
+        found = 0;
+       goto exit;
     }
     states.nbstates--;
     i = states.states[states.nbstates].step;
@@ -1475,6 +1480,7 @@ xsltCompileIdKeyPattern(xsltParserContextPtr ctxt, xmlChar *name,
                xsltTransformError(NULL, NULL, NULL,
                        "xsltCompileIdKeyPattern : ) expected\n");
                ctxt->error = 1;
+                xmlFree(lit);
                return;
            }
        }
@@ -1637,6 +1643,7 @@ parse_node_test:
                    xsltTransformError(NULL, NULL, NULL,
                            "xsltCompileStepPattern : Name expected\n");
                    ctxt->error = 1;
+                    xmlFree(URL);
                    goto error;
                }
            } else {
@@ -1944,6 +1951,7 @@ xsltCompilePatternInternal(const xmlChar *pattern, xmlDocPtr doc,
            goto error;
        ctxt->cur = &(ctxt->base)[current - start];
        element->pattern = ctxt->base;
+        element->node = node;
        element->nsList = xmlGetNsList(doc, node);
        j = 0;
        if (element->nsList != NULL) {
index 955b3b0..9a7de53 100644 (file)
@@ -1418,9 +1418,6 @@ xsltNumberComp(xsltStylesheetPtr style, xmlNodePtr cur) {
        return;
     cur->psvi = comp;
 
-    if ((style == NULL) || (cur == NULL))
-       return;
-
     comp->numdata.doc = cur->doc;
     comp->numdata.node = cur;
     comp->numdata.value = xsltGetCNsProp(style, cur, (const xmlChar *)"value",
@@ -2343,7 +2340,7 @@ xsltStylePreCompute(xsltStylesheetPtr style, xmlNodePtr inst) {
            xsltCheckInstructionElement(style, inst);
            inst->psvi = (void *) xsltDocumentComp(style, inst,
                                (xsltTransformFunction) xsltDocumentElem);
-       } else {
+       } else if ((style == NULL) || (style->forwards_compatible == 0)) {
            xsltTransformError(NULL, style, inst,
                 "xsltStylePreCompute: unknown xsl:%s\n", inst->name);
            if (style != NULL) style->warnings++;
index 02193f7..4255921 100644 (file)
@@ -63,6 +63,12 @@ xsltEvalXPathPredicate(xsltTransformContextPtr ctxt, xmlXPathCompExprPtr comp,
     xmlNodePtr oldInst;
     int oldProximityPosition, oldContextSize;
 
+    if ((ctxt == NULL) || (ctxt->inst == NULL)) {
+        xsltTransformError(ctxt, NULL, NULL,
+            "xsltEvalXPathPredicate: No context or instruction\n");
+        return(0);
+    }
+
     oldContextSize = ctxt->xpathCtxt->contextSize;
     oldProximityPosition = ctxt->xpathCtxt->proximityPosition;
     oldNsNr = ctxt->xpathCtxt->nsNr;
@@ -124,6 +130,12 @@ xsltEvalXPathStringNs(xsltTransformContextPtr ctxt, xmlXPathCompExprPtr comp,
     int oldNsNr;
     xmlNsPtr *oldNamespaces;
 
+    if ((ctxt == NULL) || (ctxt->inst == NULL)) {
+        xsltTransformError(ctxt, NULL, NULL,
+            "xsltEvalXPathStringNs: No context or instruction\n");
+        return(0);
+    }
+
     oldInst = ctxt->inst;
     oldNode = ctxt->node;
     oldPos = ctxt->xpathCtxt->proximityPosition;
@@ -296,12 +308,12 @@ xsltAttrTemplateValueProcessNode(xsltTransformContextPtr ctxt,
                xsltTransformError(ctxt, NULL, inst,
                        "xsltAttrTemplateValueProcessNode: unmatched '{'\n");
                ret = xmlStrncat(ret, str, cur - str);
-               return(ret);
+               goto exit;
            }
            str++;
            expr = xmlStrndup(str, cur - str);
            if (expr == NULL)
-               return(ret);
+               goto exit;
            else if (*expr == '{') {
                ret = xmlStrcat(ret, expr);
                xmlFree(expr);
@@ -349,6 +361,7 @@ xsltAttrTemplateValueProcessNode(xsltTransformContextPtr ctxt,
        ret = xmlStrncat(ret, str, cur - str);
     }
 
+exit:
     if (nsList != NULL)
        xmlFree(nsList);
 
index 8b86e2e..a9e8ffe 100644 (file)
@@ -19,6 +19,7 @@
 #define IN_LIBXSLT
 #include "libxslt.h"
 
+#include <limits.h>
 #include <string.h>
 #include <stdio.h>
 
@@ -56,6 +57,7 @@
 #ifdef WITH_XSLT_DEBUG
 #define WITH_XSLT_DEBUG_EXTRA
 #define WITH_XSLT_DEBUG_PROCESS
+#define WITH_XSLT_DEBUG_VARIABLE
 #endif
 
 #define XSLT_GENERATE_HTML_DOCTYPE
@@ -88,10 +90,9 @@ static xmlNsPtr
 xsltCopyNamespaceListInternal(xmlNodePtr node, xmlNsPtr cur);
 
 static xmlNodePtr
-xsltCopyTreeInternal(xsltTransformContextPtr ctxt,
-                    xmlNodePtr invocNode,
-                    xmlNodePtr node,
-                    xmlNodePtr insert, int isLRE, int topElemVisited);
+xsltCopyTree(xsltTransformContextPtr ctxt, xmlNodePtr invocNode,
+            xmlNodePtr node, xmlNodePtr insert, int isLRE,
+            int topElemVisited);
 
 static void
 xsltApplySequenceConstructor(xsltTransformContextPtr ctxt,
@@ -467,7 +468,7 @@ xsltGetXIncludeDefault(void) {
     return(xsltDoXIncludeDefault);
 }
 
-unsigned long xsltDefaultTrace = (unsigned long) XSLT_TRACE_ALL;
+static unsigned long xsltDefaultTrace = (unsigned long) XSLT_TRACE_ALL;
 
 /**
  * xsltDebugSetDefaultTrace:
@@ -766,9 +767,6 @@ xsltFreeTransformContext(xsltTransformContextPtr ctxt) {
  *                                                                     *
  ************************************************************************/
 
-xmlNodePtr xsltCopyTree(xsltTransformContextPtr ctxt,
-                        xmlNodePtr node, xmlNodePtr insert, int literal);
-
 /**
  * xsltAddChild:
  * @parent:  the parent node
@@ -784,7 +782,7 @@ static xmlNodePtr
 xsltAddChild(xmlNodePtr parent, xmlNodePtr cur) {
    xmlNodePtr ret;
 
-   if ((cur == NULL) || (parent == NULL))
+   if (cur == NULL)
        return(NULL);
    if (parent == NULL) {
        xmlFreeNode(cur);
@@ -816,13 +814,32 @@ xsltAddTextString(xsltTransformContextPtr ctxt, xmlNodePtr target,
         return(target);
 
     if (ctxt->lasttext == target->content) {
+        int minSize;
+
+        /* Check for integer overflow accounting for NUL terminator. */
+        if (len >= INT_MAX - ctxt->lasttuse) {
+            xsltTransformError(ctxt, NULL, target,
+                "xsltCopyText: text allocation failed\n");
+            return(NULL);
+        }
+        minSize = ctxt->lasttuse + len + 1;
 
-       if (ctxt->lasttuse + len >= ctxt->lasttsize) {
+        if (ctxt->lasttsize < minSize) {
            xmlChar *newbuf;
            int size;
+            int extra;
+
+            /* Double buffer size but increase by at least 100 bytes. */
+            extra = minSize < 100 ? 100 : minSize;
+
+            /* Check for integer overflow. */
+            if (extra > INT_MAX - ctxt->lasttsize) {
+                size = INT_MAX;
+            }
+            else {
+                size = ctxt->lasttsize + extra;
+            }
 
-           size = ctxt->lasttsize + len + 100;
-           size *= 2;
            newbuf = (xmlChar *) xmlRealloc(target->content,size);
            if (newbuf == NULL) {
                xsltTransformError(ctxt, NULL, target,
@@ -1123,7 +1140,7 @@ exit:
  *
  * Do a copy of an attribute.
  * Called by:
- *  - xsltCopyTreeInternal()
+ *  - xsltCopyTree()
  *  - xsltCopyOf()
  *  - xsltCopy()
  *
@@ -1224,7 +1241,7 @@ xsltShallowCopyAttr(xsltTransformContextPtr ctxt, xmlNodePtr invocNode,
  * @target element node.
  *
  * Called by:
- *  - xsltCopyTreeInternal()
+ *  - xsltCopyTree()
  *
  * Returns 0 on success and -1 on errors and internal errors.
  */
@@ -1346,7 +1363,7 @@ xsltShallowCopyElem(xsltTransformContextPtr ctxt, xmlNodePtr node,
            *  copy over all namespace nodes in scope.
            *  The damn thing about this is, that we would need to
            *  use the xmlGetNsList(), for every single node; this is
-           *  also done in xsltCopyTreeInternal(), but only for the top node.
+           *  also done in xsltCopyTree(), but only for the top node.
            */
            if (node->ns != NULL) {
                if (isLRE) {
@@ -1404,7 +1421,7 @@ xsltCopyTreeList(xsltTransformContextPtr ctxt, xmlNodePtr invocNode,
     xmlNodePtr copy, ret = NULL;
 
     while (list != NULL) {
-       copy = xsltCopyTreeInternal(ctxt, invocNode,
+       copy = xsltCopyTree(ctxt, invocNode,
            list, insert, isLRE, topElemVisited);
        if (copy != NULL) {
            if (ret == NULL) {
@@ -1424,7 +1441,7 @@ xsltCopyTreeList(xsltTransformContextPtr ctxt, xmlNodePtr invocNode,
  * Do a copy of a namespace list. If @node is non-NULL the
  * new namespaces are added automatically.
  * Called by:
- *   xsltCopyTreeInternal()
+ *   xsltCopyTree()
  *
  * QUESTION: What is the exact difference between this function
  *  and xsltCopyNamespaceList() in "namespaces.c"?
@@ -1582,7 +1599,7 @@ occupied:
 }
 
 /**
- * xsltCopyTreeInternal:
+ * xsltCopyTree:
  * @ctxt:  the XSLT transformation context
  * @invocNode: responsible node in the stylesheet; used for error reports
  * @node:  the element node in the source tree
@@ -1601,10 +1618,9 @@ occupied:
  * Returns a pointer to the new tree, or NULL in case of error
  */
 static xmlNodePtr
-xsltCopyTreeInternal(xsltTransformContextPtr ctxt,
-                    xmlNodePtr invocNode,
-                    xmlNodePtr node,
-                    xmlNodePtr insert, int isLRE, int topElemVisited)
+xsltCopyTree(xsltTransformContextPtr ctxt, xmlNodePtr invocNode,
+            xmlNodePtr node, xmlNodePtr insert, int isLRE,
+            int topElemVisited)
 {
     xmlNodePtr copy;
 
@@ -1660,7 +1676,7 @@ xsltCopyTreeInternal(xsltTransformContextPtr ctxt,
        copy = xsltAddChild(insert, copy);
         if (copy == NULL) {
             xsltTransformError(ctxt, NULL, invocNode,
-            "xsltCopyTreeInternal: Copying of '%s' failed.\n", node->name);
+            "xsltCopyTree: Copying of '%s' failed.\n", node->name);
             return (copy);
         }
        /*
@@ -1791,34 +1807,11 @@ xsltCopyTreeInternal(xsltTransformContextPtr ctxt,
        }
     } else {
        xsltTransformError(ctxt, NULL, invocNode,
-           "xsltCopyTreeInternal: Copying of '%s' failed.\n", node->name);
+           "xsltCopyTree: Copying of '%s' failed.\n", node->name);
     }
     return(copy);
 }
 
-/**
- * xsltCopyTree:
- * @ctxt:  the XSLT transformation context
- * @node:  the element node in the source tree
- * @insert:  the parent in the result tree
- * @literal:  indicates if @node is a Literal Result Element
- *
- * Make a copy of the full tree under the element node @node
- * and insert it as last child of @insert
- * For literal result element, some of the namespaces may not be copied
- * over according to section 7.1.
- * TODO: Why is this a public function?
- *
- * Returns a pointer to the new tree, or NULL in case of error
- */
-xmlNodePtr
-xsltCopyTree(xsltTransformContextPtr ctxt, xmlNodePtr node,
-            xmlNodePtr insert, int literal)
-{
-    return(xsltCopyTreeInternal(ctxt, node, node, insert, literal, 0));
-
-}
-
 /************************************************************************
  *                                                                     *
  *             Error/fallback processing                               *
@@ -2020,6 +2013,9 @@ xsltDefaultProcessOneNode(xsltTransformContextPtr ctxt, xmlNodePtr node,
 
     /*
      * Handling of Elements: second pass, actual processing
+     *
+     * Note that params are passed to the next template. This matches
+     * XSLT 2.0 behavior but doesn't conform to XSLT 1.0.
      */
     oldSize = ctxt->xpathCtxt->contextSize;
     oldPos = ctxt->xpathCtxt->proximityPosition;
@@ -2299,30 +2295,28 @@ xsltReleaseLocalRVTs(xsltTransformContextPtr ctxt, xmlDocPtr base)
 {
     xmlDocPtr cur = ctxt->localRVT, tmp;
 
-    while ((cur != NULL) && (cur != base)) {
-       if (cur->psvi == (void *) ((long) 1)) {
-           cur = (xmlDocPtr) cur->next;
-       } else {
-           tmp = cur;
-           cur = (xmlDocPtr) cur->next;
-
-           if (tmp == ctxt->localRVT)
-               ctxt->localRVT = cur;
+    if (cur == base)
+        return;
+    if (cur->prev != NULL)
+        xsltTransformError(ctxt, NULL, NULL, "localRVT not head of list\n");
 
-           /*
-           * We need ctxt->localRVTBase for extension instructions
-           * which return values (like EXSLT's function).
-           */
-           if (tmp == ctxt->localRVTBase)
-               ctxt->localRVTBase = cur;
+    do {
+        tmp = cur;
+        cur = (xmlDocPtr) cur->next;
+        if (tmp->psvi == XSLT_RVT_LOCAL) {
+            xsltReleaseRVT(ctxt, tmp);
+        } else if (tmp->psvi == XSLT_RVT_GLOBAL) {
+            xsltRegisterPersistRVT(ctxt, tmp);
+        } else if (tmp->psvi != XSLT_RVT_FUNC_RESULT) {
+            xmlGenericError(xmlGenericErrorContext,
+                    "xsltReleaseLocalRVTs: Unexpected RVT flag %p\n",
+                    tmp->psvi);
+        }
+    } while (cur != base);
 
-           if (tmp->prev)
-               tmp->prev->next = (xmlNodePtr) cur;
-           if (cur)
-               cur->prev = tmp->prev;
-           xsltReleaseRVT(ctxt, tmp);
-       }
-    }
+    if (base != NULL)
+        base->prev = NULL;
+    ctxt->localRVT = base;
 }
 
 /**
@@ -2348,7 +2342,7 @@ xsltApplySequenceConstructor(xsltTransformContextPtr ctxt,
     xmlNodePtr oldInsert, oldInst, oldCurInst, oldContextNode;
     xmlNodePtr cur, insert, copy = NULL;
     int level = 0, oldVarsNr;
-    xmlDocPtr oldLocalFragmentTop, oldLocalFragmentBase;
+    xmlDocPtr oldLocalFragmentTop;
 
 #ifdef XSLT_REFACTORED
     xsltStylePreCompPtr info;
@@ -2376,6 +2370,24 @@ xsltApplySequenceConstructor(xsltTransformContextPtr ctxt,
         return;
     CHECK_STOPPED;
 
+    /*
+    * Check for infinite recursion: stop if the maximum of nested templates
+    * is excceeded. Adjust xsltMaxDepth if you need more.
+    */
+    if (ctxt->depth >= ctxt->maxTemplateDepth) {
+        xsltTransformError(ctxt, NULL, list,
+           "xsltApplySequenceConstructor: A potential infinite template "
+            "recursion was detected.\n"
+           "You can adjust xsltMaxDepth (--maxdepth) in order to "
+           "raise the maximum number of nested template calls and "
+           "variables/params (currently set to %d).\n",
+           ctxt->maxTemplateDepth);
+        xsltDebug(ctxt, contextNode, list, NULL);
+       ctxt->state = XSLT_STATE_STOPPED;
+        return;
+    }
+    ctxt->depth++;
+
     oldLocalFragmentTop = ctxt->localRVT;
     oldInsert = insert = ctxt->insert;
     oldInst = oldCurInst = ctxt->inst;
@@ -2675,17 +2687,22 @@ xsltApplySequenceConstructor(xsltTransformContextPtr ctxt,
                        "xsltApplySequenceConstructor: extension construct %s\n",
                        cur->name));
 #endif
+                    /*
+                     * Disable the xsltCopyTextString optimization for
+                     * extension elements. Extensions could append text using
+                     * xmlAddChild which will free the buffer pointed to by
+                     * 'lasttext'. This buffer could later be reallocated with
+                     * a different size than recorded in 'lasttsize'. See bug
+                     * #777432.
+                     */
+                    if (cur->psvi == xsltExtMarker) {
+                        ctxt->lasttext = NULL;
+                    }
+
                    ctxt->insert = insert;
-                   /*
-                   * We need the fragment base for extension instructions
-                   * which return values (like EXSLT's function).
-                   */
-                   oldLocalFragmentBase = ctxt->localRVTBase;
-                   ctxt->localRVTBase = NULL;
 
                    func(ctxt, contextNode, cur, cur->psvi);
 
-                   ctxt->localRVTBase = oldLocalFragmentBase;
                    /*
                    * Cleanup temporary tree fragments.
                    */
@@ -2749,12 +2766,9 @@ xsltApplySequenceConstructor(xsltTransformContextPtr ctxt,
                oldCurInst = ctxt->inst;
                ctxt->inst = cur;
                 ctxt->insert = insert;
-               oldLocalFragmentBase = ctxt->localRVTBase;
-               ctxt->localRVTBase = NULL;
 
                 info->func(ctxt, contextNode, cur, (xsltElemPreCompPtr) info);
 
-               ctxt->localRVTBase = oldLocalFragmentBase;
                /*
                * Cleanup temporary tree fragments.
                */
@@ -2868,13 +2882,19 @@ xsltApplySequenceConstructor(xsltTransformContextPtr ctxt,
                     cur->name));
 #endif
 
+                /*
+                 * Disable the xsltCopyTextString optimization for
+                 * extension elements. Extensions could append text using
+                 * xmlAddChild which will free the buffer pointed to by
+                 * 'lasttext'. This buffer could later be reallocated with
+                 * a different size than recorded in 'lasttsize'. See bug
+                 * #777432.
+                 */
+                if (cur->psvi == xsltExtMarker) {
+                   ctxt->lasttext = NULL;
+                }
+
                 ctxt->insert = insert;
-               /*
-               * We need the fragment base for extension instructions
-               * which return values (like EXSLT's function).
-               */
-               oldLocalFragmentBase = ctxt->localRVTBase;
-               ctxt->localRVTBase = NULL;
 
                 function(ctxt, contextNode, cur, cur->psvi);
                /*
@@ -2883,7 +2903,6 @@ xsltApplySequenceConstructor(xsltTransformContextPtr ctxt,
                if (oldLocalFragmentTop != ctxt->localRVT)
                    xsltReleaseLocalRVTs(ctxt, oldLocalFragmentTop);
 
-               ctxt->localRVTBase = oldLocalFragmentBase;
                 ctxt->insert = oldInsert;
 
             }
@@ -3025,6 +3044,8 @@ error:
     ctxt->inst = oldInst;
     ctxt->insert = oldInsert;
 
+    ctxt->depth--;
+
 #ifdef WITH_DEBUGGER
     if ((ctxt->debugStatus != XSLT_DEBUG_NONE) && (addCallResult)) {
         xslDropCall();
@@ -3059,7 +3080,7 @@ xsltApplyXSLTTemplate(xsltTransformContextPtr ctxt,
     long start = 0;
     xmlNodePtr cur;
     xsltStackElemPtr tmpParam = NULL;
-    xmlDocPtr oldUserFragmentTop, oldLocalFragmentTop;
+    xmlDocPtr oldUserFragmentTop;
 
 #ifdef XSLT_REFACTORED
     xsltStyleItemParamPtr iparam;
@@ -3091,23 +3112,6 @@ xsltApplyXSLTTemplate(xsltTransformContextPtr ctxt,
         return;
     CHECK_STOPPED;
 
-    /*
-    * Check for infinite recursion: stop if the maximum of nested templates
-    * is excceeded. Adjust xsltMaxDepth if you need more.
-    */
-    if (ctxt->templNr >= ctxt->maxTemplateDepth)
-    {
-        xsltTransformError(ctxt, NULL, list,
-           "xsltApplyXSLTTemplate: A potential infinite template recursion "
-           "was detected.\n"
-           "You can adjust xsltMaxDepth (--maxdepth) in order to "
-           "raise the maximum number of nested template calls and "
-           "variables/params (currently set to %d).\n",
-           ctxt->maxTemplateDepth);
-        xsltDebug(ctxt, contextNode, list, NULL);
-        return;
-    }
-
     if (ctxt->varsNr >= ctxt->maxTemplateVars)
        {
         xsltTransformError(ctxt, NULL, list,
@@ -3117,12 +3121,12 @@ xsltApplyXSLTTemplate(xsltTransformContextPtr ctxt,
            "raise the maximum number of variables/params (currently set to %d).\n",
            ctxt->maxTemplateVars);
         xsltDebug(ctxt, contextNode, list, NULL);
+       ctxt->state = XSLT_STATE_STOPPED;
         return;
        }
 
     oldUserFragmentTop = ctxt->tmpRVT;
     ctxt->tmpRVT = NULL;
-    oldLocalFragmentTop = ctxt->localRVT;
 
     /*
     * Initiate a distinct scope of local params/variables.
@@ -3224,31 +3228,6 @@ xsltApplyXSLTTemplate(xsltTransformContextPtr ctxt,
     ctxt->varsBase = oldVarsBase;
 
     /*
-    * Clean up remaining local tree fragments.
-    * This also frees fragments which are the result of
-    * extension instructions. Should normally not be hit; but
-    * just for the case xsltExtensionInstructionResultFinalize()
-    * was not called by the extension author.
-    */
-    if (oldLocalFragmentTop != ctxt->localRVT) {
-       xmlDocPtr curdoc = ctxt->localRVT, tmp;
-
-       do {
-           tmp = curdoc;
-           curdoc = (xmlDocPtr) curdoc->next;
-           /* Need to housekeep localRVTBase */
-           if (tmp == ctxt->localRVTBase)
-               ctxt->localRVTBase = curdoc;
-           if (tmp->prev)
-               tmp->prev->next = (xmlNodePtr) curdoc;
-           if (curdoc)
-               curdoc->prev = tmp->prev;
-           xsltReleaseRVT(ctxt, tmp);
-       } while (curdoc != oldLocalFragmentTop);
-    }
-    ctxt->localRVT = oldLocalFragmentTop;
-
-    /*
     * Release user-created fragments stored in the scope
     * of xsl:template. Note that this mechanism is deprecated:
     * user code should now use xsltRegisterLocalRVT() instead
@@ -3853,7 +3832,6 @@ xsltDocumentElem(xsltTransformContextPtr ctxt, xmlNodePtr node,
        xsltTransformError(ctxt, NULL, inst,
                          "xsltDocumentElem: unable to save to %s\n",
                          filename);
-       ctxt->state = XSLT_STATE_ERROR;
 #ifdef WITH_XSLT_DEBUG_EXTRA
     } else {
         xsltGenericDebug(xsltGenericDebugContext,
@@ -4466,8 +4444,7 @@ xsltCopyOf(xsltTransformContextPtr ctxt, xmlNodePtr node,
                        xsltShallowCopyAttr(ctxt, inst,
                            ctxt->insert, (xmlAttrPtr) cur);
                    } else {
-                       xsltCopyTreeInternal(ctxt, inst,
-                           cur, ctxt->insert, 0, 0);
+                       xsltCopyTree(ctxt, inst, cur, ctxt->insert, 0, 0);
                    }
                }
            }
@@ -4718,6 +4695,10 @@ xsltApplyImports(xsltTransformContextPtr ctxt, xmlNodePtr contextNode,
 
        ctxt->currentTemplateRule = oldCurTemplRule;
     }
+    else {
+        /* Use built-in templates. */
+        xsltDefaultProcessOneNode(ctxt, contextNode, NULL);
+    }
 }
 
 /**
@@ -5665,6 +5646,7 @@ typedef struct xsltHTMLVersion {
 } xsltHTMLVersion;
 
 static xsltHTMLVersion xsltHTMLVersions[] = {
+    { "5", NULL, "about:legacy-compat" },
     { "4.01frame", "-//W3C//DTD HTML 4.01 Frameset//EN",
       "http://www.w3.org/TR/1999/REC-html401-19991224/frameset.dtd"},
     { "4.01strict", "-//W3C//DTD HTML 4.01//EN",
@@ -6040,6 +6022,9 @@ xsltApplyStylesheetInternal(xsltStylesheetPtr style, xmlDocPtr doc,
 
     xsltEvalGlobalVariables(ctxt);
 
+    /* Clean up any unused RVTs. */
+    xsltReleaseLocalRVTs(ctxt, NULL);
+
     ctxt->node = (xmlNodePtr) doc;
     ctxt->output = res;
     ctxt->insert = (xmlNodePtr) res;
@@ -6184,7 +6169,7 @@ xsltApplyStylesheetInternal(xsltStylesheetPtr style, xmlDocPtr doc,
     /*
      * Be pedantic.
      */
-    if ((ctxt != NULL) && (ctxt->state == XSLT_STATE_ERROR)) {
+    if ((ctxt != NULL) && (ctxt->state != XSLT_STATE_OK)) {
        xmlFreeDoc(res);
        res = NULL;
     }
index 345123d..60b46ea 100644 (file)
 const xmlChar *xsltDocFragFake = (const xmlChar *) " fake node libxslt";
 #endif
 
-const xmlChar *xsltComputingGlobalVarMarker =
+static const xmlChar *xsltComputingGlobalVarMarker =
  (const xmlChar *) " var/param being computed";
 
-#define XSLT_VAR_GLOBAL 1<<0
-#define XSLT_VAR_IN_SELECT 1<<1
+#define XSLT_VAR_GLOBAL (1<<0)
+#define XSLT_VAR_IN_SELECT (1<<1)
 #define XSLT_TCTXT_VARIABLE(c) ((xsltStackElemPtr) (c)->contextVariable)
 
 /************************************************************************
@@ -122,6 +122,9 @@ xsltRegisterTmpRVT(xsltTransformContextPtr ctxt, xmlDocPtr RVT)
     if ((ctxt == NULL) || (RVT == NULL))
        return(-1);
 
+    RVT->prev = NULL;
+    RVT->psvi = XSLT_RVT_VARIABLE;
+
     /*
     * We'll restrict the lifetime of user-created fragments
     * insinde an xsl:variable and xsl:param to the lifetime of the
@@ -159,15 +162,18 @@ xsltRegisterLocalRVT(xsltTransformContextPtr ctxt,
     if ((ctxt == NULL) || (RVT == NULL))
        return(-1);
 
+    RVT->prev = NULL;
+
     /*
     * When evaluating "select" expressions of xsl:variable
     * and xsl:param, we need to bind newly created tree fragments
-    * to the variable itself; otherwise the tragment will be
+    * to the variable itself; otherwise the fragment will be
     * freed before we leave the scope of a var.
     */
     if ((ctxt->contextVariable != NULL) &&
        (XSLT_TCTXT_VARIABLE(ctxt)->flags & XSLT_VAR_IN_SELECT))
     {
+        RVT->psvi = XSLT_RVT_VARIABLE;
        RVT->next = (xmlNodePtr) XSLT_TCTXT_VARIABLE(ctxt)->fragment;
        XSLT_TCTXT_VARIABLE(ctxt)->fragment = RVT;
        return(0);
@@ -177,19 +183,11 @@ xsltRegisterLocalRVT(xsltTransformContextPtr ctxt,
     * If not reference by a returning instruction (like EXSLT's function),
     * then this fragment will be freed, when the instruction exits.
     */
+    RVT->psvi = XSLT_RVT_LOCAL;
     RVT->next = (xmlNodePtr) ctxt->localRVT;
     if (ctxt->localRVT != NULL)
        ctxt->localRVT->prev = (xmlNodePtr) RVT;
     ctxt->localRVT = RVT;
-    /*
-    * We need to keep track of the first registered fragment
-    * for extension instructions which return fragments
-    * (e.g. EXSLT'S function), in order to let
-    * xsltExtensionInstructionResultFinalize() clear the
-    * preserving flag on the fragments.
-    */
-    if (ctxt->localRVTBase == NULL)
-       ctxt->localRVTBase = RVT;
     return(0);
 }
 
@@ -204,26 +202,16 @@ xsltRegisterLocalRVT(xsltTransformContextPtr ctxt,
  * collector will free them after the function-calling process exits.
  *
  * Returns 0 in case of success and -1 in case of API or internal errors.
+ *
+ * This function is unsupported in newer releases of libxslt.
  */
 int
 xsltExtensionInstructionResultFinalize(xsltTransformContextPtr ctxt)
 {
-    xmlDocPtr cur;
-
-    if (ctxt == NULL)
-       return(-1);
-    if (ctxt->localRVTBase == NULL)
-       return(0);
-    /*
-    * Enable remaining local tree fragments to be freed
-    * by the fragment garbage collector.
-    */
-    cur = ctxt->localRVTBase;
-    do {
-       cur->psvi = NULL;
-       cur = (xmlDocPtr) cur->next;
-    } while (cur != NULL);
-    return(0);
+    xmlGenericError(xmlGenericErrorContext,
+            "xsltExtensionInstructionResultFinalize is unsupported "
+            "in this release of libxslt.\n");
+    return(-1);
 }
 
 /**
@@ -238,11 +226,35 @@ xsltExtensionInstructionResultFinalize(xsltTransformContextPtr ctxt)
  * tree fragments (via xsltCreateRVT()) with xsltRegisterLocalRVT().
  *
  * Returns 0 in case of success and -1 in case of error.
+ *
+ * It isn't necessary to call this function in newer releases of
+ * libxslt.
  */
 int
 xsltExtensionInstructionResultRegister(xsltTransformContextPtr ctxt,
                                       xmlXPathObjectPtr obj)
 {
+    return(0);
+}
+
+/**
+ * xsltFlagRVTs:
+ * @ctxt: an XSLT transformation context
+ * @obj: an XPath object to be inspected for result tree fragments
+ * @val: the flag value
+ *
+ * Updates ownership information of RVTs in @obj according to @val.
+ *
+ * @val = XSLT_RVT_FUNC_RESULT for the result of an extension function, so its
+ *        RVTs won't be destroyed after leaving the returning scope.
+ * @val = XSLT_RVT_LOCAL for the result of an extension function to reset
+ *        the state of its RVTs after it was returned to a new scope.
+ * @val = XSLT_RVT_GLOBAL for parts of global variables.
+ *
+ * Returns 0 in case of success and -1 in case of error.
+ */
+int
+xsltFlagRVTs(xsltTransformContextPtr ctxt, xmlXPathObjectPtr obj, void *val) {
     int i;
     xmlNodePtr cur;
     xmlDocPtr doc;
@@ -275,36 +287,59 @@ xsltExtensionInstructionResultRegister(xsltTransformContextPtr ctxt,
                doc = cur->doc;
            } else {
                xsltTransformError(ctxt, NULL, ctxt->inst,
-                   "Internal error in "
-                   "xsltExtensionInstructionResultRegister(): "
+                   "Internal error in xsltFlagRVTs(): "
                    "Cannot retrieve the doc of a namespace node.\n");
-               goto error;
+               return(-1);
            }
        } else {
            doc = cur->doc;
        }
        if (doc == NULL) {
            xsltTransformError(ctxt, NULL, ctxt->inst,
-               "Internal error in "
-               "xsltExtensionInstructionResultRegister(): "
+               "Internal error in xsltFlagRVTs(): "
                "Cannot retrieve the doc of a node.\n");
-           goto error;
+           return(-1);
        }
-       if (doc->name && (doc->name[0] == ' ')) {
+       if (doc->name && (doc->name[0] == ' ') &&
+            doc->psvi != XSLT_RVT_GLOBAL) {
            /*
            * This is a result tree fragment.
-           * We'll use the @psvi field for reference counting.
-           * TODO: How do we know if this is a value of a
-           *  global variable or a doc acquired via the
+           * We store ownership information in the @psvi field.
+           * TODO: How do we know if this is a doc acquired via the
            *  document() function?
            */
-           doc->psvi = (void *) ((long) 1);
+#ifdef WITH_XSLT_DEBUG_VARIABLE
+            XSLT_TRACE(ctxt,XSLT_TRACE_VARIABLES,xsltGenericDebug(xsltGenericDebugContext,
+                "Flagging RVT %p: %p -> %p\n", doc, doc->psvi, val));
+#endif
+
+            if (val == XSLT_RVT_LOCAL) {
+                if (doc->psvi != XSLT_RVT_FUNC_RESULT) {
+                   xmlGenericError(xmlGenericErrorContext,
+                            "xsltFlagRVTs: Invalid transition %p => LOCAL\n",
+                            doc->psvi);
+                    return(-1);
+                }
+
+                xsltRegisterLocalRVT(ctxt, doc);
+            } else if (val == XSLT_RVT_GLOBAL) {
+                if (doc->psvi != XSLT_RVT_LOCAL) {
+                   xmlGenericError(xmlGenericErrorContext,
+                            "xsltFlagRVTs: Invalid transition %p => GLOBAL\n",
+                            doc->psvi);
+                    doc->psvi = XSLT_RVT_GLOBAL;
+                    return(-1);
+                }
+
+                /* Will be registered as persistant in xsltReleaseLocalRVTs. */
+                doc->psvi = XSLT_RVT_GLOBAL;
+            } else if (val == XSLT_RVT_FUNC_RESULT) {
+               doc->psvi = val;
+            }
        }
     }
 
     return(0);
-error:
-    return(-1);
 }
 
 /**
@@ -350,9 +385,9 @@ xsltReleaseRVT(xsltTransformContextPtr ctxt, xmlDocPtr RVT)
        }
 
        /*
-       * Reset the reference counter.
+       * Reset the ownership information.
        */
-       RVT->psvi = 0;
+       RVT->psvi = NULL;
 
        RVT->next = (xmlNodePtr) ctxt->cache->RVT;
        ctxt->cache->RVT = RVT;
@@ -391,6 +426,8 @@ xsltRegisterPersistRVT(xsltTransformContextPtr ctxt, xmlDocPtr RVT)
 {
     if ((ctxt == NULL) || (RVT == NULL)) return(-1);
 
+    RVT->psvi = XSLT_RVT_GLOBAL;
+    RVT->prev = NULL;
     RVT->next = (xmlNodePtr) ctxt->persistRVT;
     if (ctxt->persistRVT != NULL)
        ctxt->persistRVT->prev = (xmlNodePtr) RVT;
@@ -541,35 +578,21 @@ xsltFreeStackElem(xsltStackElemPtr elem) {
     /*
     * Release the list of temporary Result Tree Fragments.
     */
-    if (elem->fragment) {
+    if (elem->context) {
        xmlDocPtr cur;
 
        while (elem->fragment != NULL) {
            cur = elem->fragment;
            elem->fragment = (xmlDocPtr) cur->next;
 
-           if (elem->context &&
-               (cur->psvi == (void *) ((long) 1)))
-           {
-               /*
-               * This fragment is a result of an extension instruction
-               * (e.g. XSLT's function) and needs to be preserved until
-               * the instruction exits.
-               * Example: The fragment of the variable must not be freed
-               *  since it is returned by the EXSLT function:
-               *  <f:function name="foo">
-               *   <xsl:variable name="bar">
-               *     <bar/>
-               *   </xsl:variable>
-               *   <f:result select="$bar"/>
-               *  </f:function>
-               *
-               */
-               xsltRegisterLocalRVT(elem->context, cur);
-           } else {
+            if (cur->psvi == XSLT_RVT_VARIABLE) {
                xsltReleaseRVT((xsltTransformContextPtr) elem->context,
                    cur);
-           }
+            } else if (cur->psvi != XSLT_RVT_FUNC_RESULT) {
+                xmlGenericError(xmlGenericErrorContext,
+                        "xsltFreeStackElem: Unexpected RVT flag %p\n",
+                        cur->psvi);
+            }
        }
     }
     /*
@@ -963,6 +986,7 @@ xsltEvalVariable(xsltTransformContextPtr ctxt, xsltStackElemPtr variable,
                * the Result Tree Fragment.
                */
                variable->fragment = container;
+                container->psvi = XSLT_RVT_VARIABLE;
 
                oldOutput = ctxt->output;
                oldInsert = ctxt->insert;
@@ -1149,16 +1173,23 @@ xsltEvalGlobalVariable(xsltStackElemPtr elem, xsltTransformContextPtr ctxt)
                xsltTransformError(ctxt, NULL, comp->inst,
                    "Evaluating global variable %s failed\n", elem->name);
            ctxt->state = XSLT_STATE_STOPPED;
+            goto error;
+        }
+
+        /*
+         * Mark all RVTs that are referenced from result as part
+         * of this variable so they won't be freed too early.
+         */
+        xsltFlagRVTs(ctxt, result, XSLT_RVT_GLOBAL);
+
 #ifdef WITH_XSLT_DEBUG_VARIABLE
 #ifdef LIBXML_DEBUG_ENABLED
-       } else {
-           if ((xsltGenericDebugContext == stdout) ||
-               (xsltGenericDebugContext == stderr))
-               xmlXPathDebugDumpObject((FILE *)xsltGenericDebugContext,
-                                       result, 0);
+       if ((xsltGenericDebugContext == stdout) ||
+           (xsltGenericDebugContext == stderr))
+           xmlXPathDebugDumpObject((FILE *)xsltGenericDebugContext,
+                                   result, 0);
 #endif
 #endif
-       }
     } else {
        if (elem->tree == NULL) {
            result = xmlXPathNewCString("");
@@ -1772,8 +1803,7 @@ xsltBuildVariable(xsltTransformContextPtr ctxt,
     elem->tree = tree;
     elem->value = xsltEvalVariable(ctxt, elem,
        (xsltStylePreCompPtr) comp);
-    if (elem->value != NULL)
-       elem->computed = 1;
+    elem->computed = 1;
     return(elem);
 }
 
index 17b4c6f..24acf8d 100644 (file)
@@ -35,6 +35,41 @@ extern "C" {
     (ctxt)->xpathCtxt->extra = ctxt
 
 /*
+ * Flags for memory management of RVTs
+ */
+
+/**
+ * XSLT_RVT_LOCAL:
+ *
+ * RVT is destroyed after the current instructions ends.
+ */
+#define XSLT_RVT_LOCAL       ((void *)1)
+
+/**
+ * XSLT_RVT_VARIABLE:
+ *
+ * RVT is part of a local variable and destroyed after the variable goes out
+ * of scope.
+ */
+#define XSLT_RVT_VARIABLE    ((void *)2)
+
+/**
+ * XSLT_RVT_FUNC_RESULT:
+ *
+ * RVT is part of results returned with func:result. The RVT won't be
+ * destroyed after exiting a template and will be reset to XSLT_RVT_LOCAL or
+ * XSLT_RVT_VARIABLE in the template that receives the return value.
+ */
+#define XSLT_RVT_FUNC_RESULT ((void *)3)
+
+/**
+ * XSLT_RVT_GLOBAL:
+ *
+ * RVT is part of a global variable.
+ */
+#define XSLT_RVT_GLOBAL      ((void *)4)
+
+/*
  * Interfaces for the variable module.
  */
 
index bca91ee..7d9ddb6 100644 (file)
@@ -275,7 +275,7 @@ xsltIsBlank(xmlChar *str) {
  *                                                                     *
  ************************************************************************/
 static xsltDecimalFormatPtr
-xsltNewDecimalFormat(xmlChar *name)
+xsltNewDecimalFormat(const xmlChar *nsUri, xmlChar *name)
 {
     xsltDecimalFormatPtr self;
     /* UTF-8 for 0x2030 */
@@ -284,6 +284,7 @@ xsltNewDecimalFormat(xmlChar *name)
     self = xmlMalloc(sizeof(xsltDecimalFormat));
     if (self != NULL) {
        self->next = NULL;
+        self->nsUri = nsUri;
        self->name = name;
 
        /* Default values */
@@ -369,7 +370,39 @@ xsltDecimalFormatGetByName(xsltStylesheetPtr style, xmlChar *name)
        for (result = style->decimalFormat->next;
             result != NULL;
             result = result->next) {
-           if (xmlStrEqual(name, result->name))
+           if ((result->nsUri == NULL) && xmlStrEqual(name, result->name))
+               return result;
+       }
+       style = xsltNextImport(style);
+    }
+    return result;
+}
+
+/**
+ * xsltDecimalFormatGetByQName:
+ * @style: the XSLT stylesheet
+ * @nsUri: the namespace URI of the QName
+ * @name: the local part of the QName
+ *
+ * Find decimal-format by QName
+ *
+ * Returns the xsltDecimalFormatPtr
+ */
+xsltDecimalFormatPtr
+xsltDecimalFormatGetByQName(xsltStylesheetPtr style, const xmlChar *nsUri,
+                            const xmlChar *name)
+{
+    xsltDecimalFormatPtr result = NULL;
+
+    if (name == NULL)
+       return style->decimalFormat;
+
+    while (style != NULL) {
+       for (result = style->decimalFormat->next;
+            result != NULL;
+            result = result->next) {
+           if (xmlStrEqual(nsUri, result->nsUri) &&
+                xmlStrEqual(name, result->name))
                return result;
        }
        style = xsltNextImport(style);
@@ -747,7 +780,7 @@ xsltNewStylesheet(void) {
 
     ret->omitXmlDeclaration = -1;
     ret->standalone = -1;
-    ret->decimalFormat = xsltNewDecimalFormat(NULL);
+    ret->decimalFormat = xsltNewDecimalFormat(NULL, NULL);
     ret->indent = -1;
     ret->errors = 0;
     ret->warnings = 0;
@@ -810,9 +843,8 @@ xsltAllocateExtraCtxt(xsltTransformContextPtr ctxt)
            ctxt->extras = (xsltRuntimeExtraPtr)
                xmlMalloc(ctxt->extrasMax * sizeof(xsltRuntimeExtra));
            if (ctxt->extras == NULL) {
-               xmlGenericError(xmlGenericErrorContext,
+               xsltTransformError(ctxt, NULL, NULL,
                        "xsltAllocateExtraCtxt: out of memory\n");
-               ctxt->state = XSLT_STATE_ERROR;
                return(0);
            }
            for (i = 0;i < ctxt->extrasMax;i++) {
@@ -828,9 +860,8 @@ xsltAllocateExtraCtxt(xsltTransformContextPtr ctxt)
            tmp = (xsltRuntimeExtraPtr) xmlRealloc(ctxt->extras,
                            ctxt->extrasMax * sizeof(xsltRuntimeExtra));
            if (tmp == NULL) {
-               xmlGenericError(xmlGenericErrorContext,
+               xsltTransformError(ctxt, NULL, NULL,
                        "xsltAllocateExtraCtxt: out of memory\n");
-               ctxt->state = XSLT_STATE_ERROR;
                return(0);
            }
            ctxt->extras = tmp;
@@ -1209,6 +1240,7 @@ xsltParseStylesheetOutput(xsltStylesheetPtr style, xmlNodePtr cur)
                xsltTransformError(NULL, style, cur,
                                  "invalid value for method: %s\n", prop);
                 if (style != NULL) style->warnings++;
+                xmlFree(prop);
             }
        } else {
            style->method = prop;
@@ -1386,18 +1418,37 @@ xsltParseStylesheetDecimalFormat(xsltStylesheetPtr style, xmlNodePtr cur)
 
     prop = xmlGetNsProp(cur, BAD_CAST("name"), NULL);
     if (prop != NULL) {
-       format = xsltDecimalFormatGetByName(style, prop);
+        const xmlChar *nsUri;
+
+        if (xmlValidateQName(prop, 0) != 0) {
+            xsltTransformError(NULL, style, cur,
+                "xsl:decimal-format: Invalid QName '%s'.\n", prop);
+           style->warnings++;
+            xmlFree(prop);
+            return;
+        }
+        /*
+        * TODO: Don't use xsltGetQNameURI().
+        */
+        nsUri = xsltGetQNameURI(cur, &prop);
+        if (prop == NULL) {
+           style->warnings++;
+            return;
+        }
+       format = xsltDecimalFormatGetByQName(style, nsUri, prop);
        if (format != NULL) {
            xsltTransformError(NULL, style, cur,
         "xsltParseStylestyleDecimalFormat: %s already exists\n", prop);
-           if (style != NULL) style->warnings++;
+           style->warnings++;
+            xmlFree(prop);
            return;
        }
-       format = xsltNewDecimalFormat(prop);
+       format = xsltNewDecimalFormat(nsUri, prop);
        if (format == NULL) {
            xsltTransformError(NULL, style, cur,
      "xsltParseStylestyleDecimalFormat: failed creating new decimal-format\n");
-           if (style != NULL) style->errors++;
+           style->errors++;
+            xmlFree(prop);
            return;
        }
        /* Append new decimal-format structure */
@@ -3424,7 +3475,7 @@ internal_err:
 #ifdef XSLT_REFACTORED
 #else
 static void
-xsltPrecomputeStylesheet(xsltStylesheetPtr style, xmlNodePtr cur)
+xsltPreprocessStylesheet(xsltStylesheetPtr style, xmlNodePtr cur)
 {
     xmlNodePtr deleteNode, styleelem;
     int internalize = 0;
@@ -3455,7 +3506,7 @@ xsltPrecomputeStylesheet(xsltStylesheetPtr style, xmlNodePtr cur)
        if (deleteNode != NULL) {
 #ifdef WITH_XSLT_DEBUG_BLANKS
            xsltGenericDebug(xsltGenericDebugContext,
-            "xsltPrecomputeStylesheet: removing ignorable blank node\n");
+            "xsltPreprocessStylesheet: removing ignorable blank node\n");
 #endif
            xmlUnlinkNode(deleteNode);
            xmlFreeNode(deleteNode);
@@ -3495,7 +3546,6 @@ xsltPrecomputeStylesheet(xsltStylesheetPtr style, xmlNodePtr cur)
            }
            if (IS_XSLT_ELEM(cur)) {
                exclPrefixes = 0;
-               xsltStylePreCompute(style, cur);
                if (IS_XSLT_NAME(cur, "text")) {
                    for (;exclPrefixes > 0;exclPrefixes--)
                        exclPrefixPop(style);
@@ -3546,7 +3596,7 @@ xsltPrecomputeStylesheet(xsltStylesheetPtr style, xmlNodePtr cur)
             * going back
             */
            if (exclPrefixes > 0) {
-               xsltPrecomputeStylesheet(style, cur->children);
+               xsltPreprocessStylesheet(style, cur->children);
                for (;exclPrefixes > 0;exclPrefixes--)
                    exclPrefixPop(style);
                goto skip_children;
@@ -3617,7 +3667,7 @@ skip_children:
     if (deleteNode != NULL) {
 #ifdef WITH_XSLT_DEBUG_PARSING
        xsltGenericDebug(xsltGenericDebugContext,
-        "xsltPrecomputeStylesheet: removing ignorable blank node\n");
+        "xsltPreprocessStylesheet: removing ignorable blank node\n");
 #endif
        xmlUnlinkNode(deleteNode);
        xmlFreeNode(deleteNode);
@@ -4862,10 +4912,12 @@ xsltParseTemplateContent(xsltStylesheetPtr style, xmlNodePtr templ) {
            delete = NULL;
        }
        if (IS_XSLT_ELEM(cur)) {
+            xsltStylePreCompute(style, cur);
+
            if (IS_XSLT_NAME(cur, "text")) {
                /*
                * TODO: Processing of xsl:text should be moved to
-               *   xsltPrecomputeStylesheet(), since otherwise this
+               *   xsltPreprocessStylesheet(), since otherwise this
                *   will be performed for every multiply included
                *   stylesheet; i.e. this here is not skipped with
                *   the use of the style->nopreproc flag.
@@ -5395,6 +5447,7 @@ xsltParseStylesheetTemplate(xsltStylesheetPtr style, xmlNodePtr template) {
                xsltTransformError(NULL, style, template,
                    "xsl:template : error invalid name '%s'\n", prop);
                if (style != NULL) style->errors++;
+                xmlFree(prop);
                goto error;
            }
            ret->name = xmlDictLookup(style->dict, BAD_CAST prop, -1);
@@ -6054,7 +6107,7 @@ xsltParseStylesheetTop(xsltStylesheetPtr style, xmlNodePtr top) {
        if ((!xmlStrEqual(prop, (const xmlChar *)"1.0")) &&
             (!xmlStrEqual(prop, (const xmlChar *)"1.1"))) {
            xsltTransformError(NULL, style, top,
-               "xsl:version: only 1.0 features are supported\n");
+               "xsl:version: only 1.1 features are supported\n");
            if (style != NULL) {
                 style->forwards_compatible = 1;
                 style->warnings++;
@@ -6125,31 +6178,31 @@ xsltParseStylesheetTop(xsltStylesheetPtr style, xmlNodePtr top) {
            xsltTransformError(NULL, style, cur,
                        "xsltParseStylesheetTop: ignoring misplaced import element\n");
            if (style != NULL) style->errors++;
-    } else if (IS_XSLT_NAME(cur, "include")) {
+        } else if (IS_XSLT_NAME(cur, "include")) {
            if (xsltParseStylesheetInclude(style, cur) != 0)
                if (style != NULL) style->errors++;
-    } else if (IS_XSLT_NAME(cur, "strip-space")) {
+        } else if (IS_XSLT_NAME(cur, "strip-space")) {
            xsltParseStylesheetStripSpace(style, cur);
-    } else if (IS_XSLT_NAME(cur, "preserve-space")) {
+        } else if (IS_XSLT_NAME(cur, "preserve-space")) {
            xsltParseStylesheetPreserveSpace(style, cur);
-    } else if (IS_XSLT_NAME(cur, "output")) {
+        } else if (IS_XSLT_NAME(cur, "output")) {
            xsltParseStylesheetOutput(style, cur);
-    } else if (IS_XSLT_NAME(cur, "key")) {
+        } else if (IS_XSLT_NAME(cur, "key")) {
            xsltParseStylesheetKey(style, cur);
-    } else if (IS_XSLT_NAME(cur, "decimal-format")) {
+        } else if (IS_XSLT_NAME(cur, "decimal-format")) {
            xsltParseStylesheetDecimalFormat(style, cur);
-    } else if (IS_XSLT_NAME(cur, "attribute-set")) {
+        } else if (IS_XSLT_NAME(cur, "attribute-set")) {
            xsltParseStylesheetAttributeSet(style, cur);
-    } else if (IS_XSLT_NAME(cur, "variable")) {
+        } else if (IS_XSLT_NAME(cur, "variable")) {
            xsltParseGlobalVariable(style, cur);
-    } else if (IS_XSLT_NAME(cur, "param")) {
+        } else if (IS_XSLT_NAME(cur, "param")) {
            xsltParseGlobalParam(style, cur);
-    } else if (IS_XSLT_NAME(cur, "template")) {
+        } else if (IS_XSLT_NAME(cur, "template")) {
 #ifdef WITH_XSLT_DEBUG_PARSING
            templates++;
 #endif
            xsltParseStylesheetTemplate(style, cur);
-    } else if (IS_XSLT_NAME(cur, "namespace-alias")) {
+        } else if (IS_XSLT_NAME(cur, "namespace-alias")) {
            xsltNamespaceAlias(style, cur);
        } else {
             if ((style != NULL) && (style->forwards_compatible == 0)) {
@@ -6158,13 +6211,6 @@ xsltParseStylesheetTop(xsltStylesheetPtr style, xmlNodePtr top) {
                        cur->name);
                if (style != NULL) style->errors++;
            }
-           else {
-                /* do Forwards-Compatible Processing */
-               xsltTransformError(NULL, style, cur,
-                       "xsltParseStylesheetTop: ignoring unknown %s element\n",
-                       cur->name);
-               if (style != NULL) style->warnings++;
-            }
        }
        cur = cur->next;
     }
@@ -6408,7 +6454,7 @@ xsltParseStylesheetProcess(xsltStylesheetPtr ret, xmlDocPtr doc) {
        ret->literal_result = 1;
     }
     if (!ret->nopreproc) {
-       xsltPrecomputeStylesheet(ret, cur);
+       xsltPreprocessStylesheet(ret, cur);
     }
     if (ret->literal_result == 0) {
        xsltParseStylesheetTop(ret, cur);
@@ -6431,10 +6477,11 @@ xsltParseStylesheetProcess(xsltStylesheetPtr ret, xmlDocPtr doc) {
                "xsltParseStylesheetProcess : document is stylesheet\n");
 #endif
 
-       if (!xmlStrEqual(prop, (const xmlChar *)"1.0")) {
+       if ((!xmlStrEqual(prop, (const xmlChar *)"1.0")) &&
+            (!xmlStrEqual(prop, (const xmlChar *)"1.1"))) {
            xsltTransformError(NULL, ret, cur,
-               "xsl:version: only 1.0 features are supported\n");
-            /* TODO set up compatibility when not XSLT 1.0 */
+               "xsl:version: only 1.1 features are supported\n");
+            ret->forwards_compatible = 1;
            ret->warnings++;
        }
        xmlFree(prop);
index 7123ace..47125b3 100644 (file)
@@ -324,6 +324,7 @@ struct _xsltDecimalFormat {
     xmlChar *percent;
     xmlChar *permille;
     xmlChar *zeroDigit;
+    const xmlChar *nsUri;
 };
 
 /**
@@ -1754,8 +1755,8 @@ struct _xsltTransformContext {
      * Speed optimization when coalescing text nodes
      */
     const xmlChar  *lasttext;          /* last text node content */
-    unsigned int    lasttsize;         /* last text node size */
-    unsigned int    lasttuse;          /* last text node use */
+    int             lasttsize;         /* last text node size */
+    int             lasttuse;          /* last text node use */
     /*
      * Per Context Debugging
      */
@@ -1783,9 +1784,9 @@ struct _xsltTransformContext {
     xmlDocPtr localRVT; /* list of local tree fragments; will be freed when
                           the instruction which created the fragment
                            exits */
-    xmlDocPtr localRVTBase;
+    xmlDocPtr localRVTBase; /* Obsolete */
     int keyInitLevel;   /* Needed to catch recursive keys issues */
-    int funcLevel;      /* Needed to catch recursive functions issues */
+    int depth;          /* Needed to catch recursions */
     int maxTemplateDepth;
     int maxTemplateVars;
 };
@@ -1854,6 +1855,10 @@ XSLTPUBFUN void XSLTCALL
 XSLTPUBFUN xsltDecimalFormatPtr XSLTCALL
                        xsltDecimalFormatGetByName(xsltStylesheetPtr style,
                                                 xmlChar *name);
+XSLTPUBFUN xsltDecimalFormatPtr XSLTCALL
+                       xsltDecimalFormatGetByQName(xsltStylesheetPtr style,
+                                                const xmlChar *nsUri,
+                                                 const xmlChar *name);
 
 XSLTPUBFUN xsltStylesheetPtr XSLTCALL
                        xsltParseStylesheetProcess(xsltStylesheetPtr ret,
@@ -1906,6 +1911,11 @@ XSLTPUBFUN int XSLTCALL
 XSLTPUBFUN int XSLTCALL
                        xsltExtensionInstructionResultFinalize(
                                                 xsltTransformContextPtr ctxt);
+XSLTPUBFUN int XSLTCALL
+                       xsltFlagRVTs(
+                                                xsltTransformContextPtr ctxt,
+                                                xmlXPathObjectPtr obj,
+                                                void *val);
 XSLTPUBFUN void XSLTCALL
                        xsltFreeRVTs            (xsltTransformContextPtr ctxt);
 XSLTPUBFUN void XSLTCALL
index 1646c44..6bd8ed0 100644 (file)
@@ -457,9 +457,8 @@ xsltMessage(xsltTransformContextPtr ctxt, xmlNodePtr node, xmlNodePtr inst) {
        } else if (xmlStrEqual(prop, (const xmlChar *)"no")) {
            terminate = 0;
        } else {
-           error(errctx,
+           xsltTransformError(ctxt, NULL, inst,
                "xsl:message : terminate expecting 'yes' or 'no'\n");
-           ctxt->state = XSLT_STATE_ERROR;
        }
        xmlFree(prop);
     }
@@ -622,7 +621,8 @@ xsltPrintErrorContext(xsltTransformContextPtr ctxt,
     void *errctx = xsltGenericErrorContext;
 
     if (ctxt != NULL) {
-       ctxt->state = XSLT_STATE_ERROR;
+        if (ctxt->state == XSLT_STATE_OK)
+           ctxt->state = XSLT_STATE_ERROR;
        if (ctxt->error != NULL) {
            error = ctxt->error;
            errctx = ctxt->errctx;
@@ -715,7 +715,8 @@ xsltTransformError(xsltTransformContextPtr ctxt,
     char * str;
 
     if (ctxt != NULL) {
-       ctxt->state = XSLT_STATE_ERROR;
+        if (ctxt->state == XSLT_STATE_OK)
+           ctxt->state = XSLT_STATE_ERROR;
        if (ctxt->error != NULL) {
            error = ctxt->error;
            errctx = ctxt->errctx;
@@ -1248,6 +1249,8 @@ xsltDefaultSortFunction(xsltTransformContextPtr ctxt, xmlNodePtr *sorts,
                        if (res[j] == NULL) {
                            if (res[j+incr] != NULL)
                                tst = 1;
+                       } else if (res[j+incr] == NULL) {
+                           tst = -1;
                        } else {
                            if (numb) {
                                /* We make NaN smaller than number in
index 5fe9ea7..2ed442c 100644 (file)
@@ -339,6 +339,9 @@ PACKAGE_URL = @PACKAGE_URL@
 PACKAGE_VERSION = @PACKAGE_VERSION@
 PATH_SEPARATOR = @PATH_SEPARATOR@
 PERL = @PERL@
+PKG_CONFIG = @PKG_CONFIG@
+PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@
+PKG_CONFIG_PATH = @PKG_CONFIG_PATH@
 PYTHON = @PYTHON@
 PYTHONSODV = @PYTHONSODV@
 PYTHON_INCLUDES = @PYTHON_INCLUDES@
index 3eaaa42..e424bd3 100644 (file)
@@ -209,6 +209,9 @@ PACKAGE_URL = @PACKAGE_URL@
 PACKAGE_VERSION = @PACKAGE_VERSION@
 PATH_SEPARATOR = @PATH_SEPARATOR@
 PERL = @PERL@
+PKG_CONFIG = @PKG_CONFIG@
+PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@
+PKG_CONFIG_PATH = @PKG_CONFIG_PATH@
 PYTHON = @PYTHON@
 PYTHONSODV = @PYTHONSODV@
 PYTHON_INCLUDES = @PYTHON_INCLUDES@
index 64b7c72..33f7caa 100644 (file)
@@ -269,6 +269,9 @@ PACKAGE_URL = @PACKAGE_URL@
 PACKAGE_VERSION = @PACKAGE_VERSION@
 PATH_SEPARATOR = @PATH_SEPARATOR@
 PERL = @PERL@
+PKG_CONFIG = @PKG_CONFIG@
+PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@
+PKG_CONFIG_PATH = @PKG_CONFIG_PATH@
 PYTHON = @PYTHON@
 PYTHONSODV = @PYTHONSODV@
 PYTHON_INCLUDES = @PYTHON_INCLUDES@
index fb63d8a..1532e3e 100644 (file)
@@ -209,6 +209,9 @@ PACKAGE_URL = @PACKAGE_URL@
 PACKAGE_VERSION = @PACKAGE_VERSION@
 PATH_SEPARATOR = @PATH_SEPARATOR@
 PERL = @PERL@
+PKG_CONFIG = @PKG_CONFIG@
+PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@
+PKG_CONFIG_PATH = @PKG_CONFIG_PATH@
 PYTHON = @PYTHON@
 PYTHONSODV = @PYTHONSODV@
 PYTHON_INCLUDES = @PYTHON_INCLUDES@
index 7fbacdd..141a101 100644 (file)
@@ -1,4 +1,2 @@
-compilation error: file ./test-2.5-1.xsl line 6 element exciting-new-1.8-feature
-xsltStylePreCompute: unknown xsl:exciting-new-1.8-feature
 compilation error: file ./test-2.5-1.xsl line 2 element stylesheet
-xsl:version: only 1.0 features are supported
+xsl:version: only 1.1 features are supported
index 0524e5f..ebd3982 100644 (file)
@@ -209,6 +209,9 @@ PACKAGE_URL = @PACKAGE_URL@
 PACKAGE_VERSION = @PACKAGE_VERSION@
 PATH_SEPARATOR = @PATH_SEPARATOR@
 PERL = @PERL@
+PKG_CONFIG = @PKG_CONFIG@
+PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@
+PKG_CONFIG_PATH = @PKG_CONFIG_PATH@
 PYTHON = @PYTHON@
 PYTHONSODV = @PYTHONSODV@
 PYTHON_INCLUDES = @PYTHON_INCLUDES@
index e0c049d..f092a13 100644 (file)
@@ -209,6 +209,9 @@ PACKAGE_URL = @PACKAGE_URL@
 PACKAGE_VERSION = @PACKAGE_VERSION@
 PATH_SEPARATOR = @PATH_SEPARATOR@
 PERL = @PERL@
+PKG_CONFIG = @PKG_CONFIG@
+PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@
+PKG_CONFIG_PATH = @PKG_CONFIG_PATH@
 PYTHON = @PYTHON@
 PYTHONSODV = @PYTHONSODV@
 PYTHON_INCLUDES = @PYTHON_INCLUDES@
index 944c047..cd04b34 100644 (file)
@@ -209,6 +209,9 @@ PACKAGE_URL = @PACKAGE_URL@
 PACKAGE_VERSION = @PACKAGE_VERSION@
 PATH_SEPARATOR = @PATH_SEPARATOR@
 PERL = @PERL@
+PKG_CONFIG = @PKG_CONFIG@
+PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@
+PKG_CONFIG_PATH = @PKG_CONFIG_PATH@
 PYTHON = @PYTHON@
 PYTHONSODV = @PYTHONSODV@
 PYTHON_INCLUDES = @PYTHON_INCLUDES@
index 09e7239..25f09ce 100644 (file)
@@ -1,9 +1,8 @@
 ## Process this file with automake to produce Makefile.in
 
 tests:
-       @echo '## Running docbook tests'
-       $(MAKE) single
-       $(MAKE) xtchunk
+       @$(MAKE) single
+       @$(MAKE) xtchunk
 
 valgrind:
        @echo '## Running the regression tests under Valgrind'
@@ -22,12 +21,12 @@ full: tests htmltests xhtmltests fotests
 # a single tests to check that stuff ain't broken
 #
 single:
+       @echo '## Running single docbook tests'
        @$(MKDIR_P) result/html
        @$(MKDIR_P) result/fo
        @$(MKDIR_P) result/xhtml
        @(echo > .memdump)
        @(for i in $(srcdir)/test/gdp-handbook.xml ; do \
-         echo -n "`basename $$i` : html " ; \
          out=result/html/`basename $$i .xml`.tst; \
          html=result/html/`basename $$i .xml`.html; \
          log=`$(CHECKER) $(top_builddir)/xsltproc/xsltproc --nonet \
@@ -42,12 +41,10 @@ single:
            fi ; \
          grep "MORY ALLO" .memdump  | grep -v "MEMORY ALLOCATED : 0" || true` ; \
          if [ -n "$$log" ] ; then \
-               echo ; \
                echo result ; \
                echo "$$log" ; \
          fi ; \
          rm -f $$out ; \
-         echo -n "fo " ; \
          out=result/fo/`basename $$i .xml`.tst; \
          fo=result/fo/`basename $$i .xml`.fo; \
          msg=result/fo/`basename $$i .xml`.msg; \
@@ -63,12 +60,10 @@ single:
          fi ; \
          grep "MORY ALLO" .memdump  | grep -v "MEMORY ALLOCATED : 0" || true` ; \
          if [ -n "$$log" ] ; then \
-               echo ; \
                echo result ; \
                echo "$$log" ; \
          fi ; \
          rm -f $$out $$msg ; \
-         echo -n "xhtml " ; \
          out=result/xhtml/`basename $$i .xml`.tst; \
          xhtml=result/xhtml/`basename $$i .xml`.xhtml; \
          log=`$(CHECKER) $(top_builddir)/xsltproc/xsltproc --nonet \
@@ -83,19 +78,17 @@ single:
          fi ; \
          grep "MORY ALLO" .memdump  | grep -v "MEMORY ALLOCATED : 0" || true` ; \
          if [ -n "$$log" ] ; then \
-               echo ; \
                echo result ; \
                echo "$$log" ; \
          fi ; \
          rm -f $$out ; \
          done )
-       @echo
 
 xtchunk:
+       @echo '## Running xtchunk docbook tests'
        @$(MKDIR_P) result/html
        @$(MKDIR_P) result/xtchunk
        @(echo > .memdump)
-       @echo -n html-chunking
        @(for i in $(srcdir)/test/gdp-handbook.xml ; do \
          base=`basename $$i .xml` ; \
          html=result/html/$$base.html; \
@@ -121,13 +114,11 @@ xtchunk:
            done ; \
            grep "MORY ALLO" .memdump  | grep -v "MEMORY ALLOCATED : 0" || true` ; \
          if [ -n "$$log" ] ; then \
-               echo ; \
                echo result ; \
                echo "$$log" ; \
          fi ; \
          rm -f result/xtchunk/html/gdp-handbook ; \
          done )
-       @echo
 
 #
 # The full set of tests
index 7047918..4ac3c3d 100644 (file)
@@ -209,6 +209,9 @@ PACKAGE_URL = @PACKAGE_URL@
 PACKAGE_VERSION = @PACKAGE_VERSION@
 PATH_SEPARATOR = @PATH_SEPARATOR@
 PERL = @PERL@
+PKG_CONFIG = @PKG_CONFIG@
+PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@
+PKG_CONFIG_PATH = @PKG_CONFIG_PATH@
 PYTHON = @PYTHON@
 PYTHONSODV = @PYTHONSODV@
 PYTHON_INCLUDES = @PYTHON_INCLUDES@
@@ -496,9 +499,8 @@ uninstall-am:
 
 
 tests:
-       @echo '## Running docbook tests'
-       $(MAKE) single
-       $(MAKE) xtchunk
+       @$(MAKE) single
+       @$(MAKE) xtchunk
 
 valgrind:
        @echo '## Running the regression tests under Valgrind'
@@ -513,12 +515,12 @@ full: tests htmltests xhtmltests fotests
 # a single tests to check that stuff ain't broken
 #
 single:
+       @echo '## Running single docbook tests'
        @$(MKDIR_P) result/html
        @$(MKDIR_P) result/fo
        @$(MKDIR_P) result/xhtml
        @(echo > .memdump)
        @(for i in $(srcdir)/test/gdp-handbook.xml ; do \
-         echo -n "`basename $$i` : html " ; \
          out=result/html/`basename $$i .xml`.tst; \
          html=result/html/`basename $$i .xml`.html; \
          log=`$(CHECKER) $(top_builddir)/xsltproc/xsltproc --nonet \
@@ -533,12 +535,10 @@ single:
            fi ; \
          grep "MORY ALLO" .memdump  | grep -v "MEMORY ALLOCATED : 0" || true` ; \
          if [ -n "$$log" ] ; then \
-               echo ; \
                echo result ; \
                echo "$$log" ; \
          fi ; \
          rm -f $$out ; \
-         echo -n "fo " ; \
          out=result/fo/`basename $$i .xml`.tst; \
          fo=result/fo/`basename $$i .xml`.fo; \
          msg=result/fo/`basename $$i .xml`.msg; \
@@ -554,12 +554,10 @@ single:
          fi ; \
          grep "MORY ALLO" .memdump  | grep -v "MEMORY ALLOCATED : 0" || true` ; \
          if [ -n "$$log" ] ; then \
-               echo ; \
                echo result ; \
                echo "$$log" ; \
          fi ; \
          rm -f $$out $$msg ; \
-         echo -n "xhtml " ; \
          out=result/xhtml/`basename $$i .xml`.tst; \
          xhtml=result/xhtml/`basename $$i .xml`.xhtml; \
          log=`$(CHECKER) $(top_builddir)/xsltproc/xsltproc --nonet \
@@ -574,19 +572,17 @@ single:
          fi ; \
          grep "MORY ALLO" .memdump  | grep -v "MEMORY ALLOCATED : 0" || true` ; \
          if [ -n "$$log" ] ; then \
-               echo ; \
                echo result ; \
                echo "$$log" ; \
          fi ; \
          rm -f $$out ; \
          done )
-       @echo
 
 xtchunk:
+       @echo '## Running xtchunk docbook tests'
        @$(MKDIR_P) result/html
        @$(MKDIR_P) result/xtchunk
        @(echo > .memdump)
-       @echo -n html-chunking
        @(for i in $(srcdir)/test/gdp-handbook.xml ; do \
          base=`basename $$i .xml` ; \
          html=result/html/$$base.html; \
@@ -612,13 +608,11 @@ xtchunk:
            done ; \
            grep "MORY ALLO" .memdump  | grep -v "MEMORY ALLOCATED : 0" || true` ; \
          if [ -n "$$log" ] ; then \
-               echo ; \
                echo result ; \
                echo "$$log" ; \
          fi ; \
          rm -f result/xtchunk/html/gdp-handbook ; \
          done )
-       @echo
 
 #
 # The full set of tests
index 03e4732..a1e6cc5 100644 (file)
@@ -213,6 +213,9 @@ PACKAGE_URL = @PACKAGE_URL@
 PACKAGE_VERSION = @PACKAGE_VERSION@
 PATH_SEPARATOR = @PATH_SEPARATOR@
 PERL = @PERL@
+PKG_CONFIG = @PKG_CONFIG@
+PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@
+PKG_CONFIG_PATH = @PKG_CONFIG_PATH@
 PYTHON = @PYTHON@
 PYTHONSODV = @PYTHONSODV@
 PYTHON_INCLUDES = @PYTHON_INCLUDES@
index 3708011..62b5467 100644 (file)
@@ -209,6 +209,9 @@ PACKAGE_URL = @PACKAGE_URL@
 PACKAGE_VERSION = @PACKAGE_VERSION@
 PATH_SEPARATOR = @PATH_SEPARATOR@
 PERL = @PERL@
+PKG_CONFIG = @PKG_CONFIG@
+PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@
+PKG_CONFIG_PATH = @PKG_CONFIG_PATH@
 PYTHON = @PYTHON@
 PYTHONSODV = @PYTHONSODV@
 PYTHON_INCLUDES = @PYTHON_INCLUDES@
index 0dbde5b..965a84b 100644 (file)
@@ -1,2 +1,3 @@
 A simple message
 A fatal message
+no result for ./message.xml
index 7869a0d..a8a56ac 100644 (file)
@@ -269,6 +269,9 @@ PACKAGE_URL = @PACKAGE_URL@
 PACKAGE_VERSION = @PACKAGE_VERSION@
 PATH_SEPARATOR = @PATH_SEPARATOR@
 PERL = @PERL@
+PKG_CONFIG = @PKG_CONFIG@
+PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@
+PKG_CONFIG_PATH = @PKG_CONFIG_PATH@
 PYTHON = @PYTHON@
 PYTHONSODV = @PYTHONSODV@
 PYTHON_INCLUDES = @PYTHON_INCLUDES@
index 014612e..f866ff1 100644 (file)
@@ -209,6 +209,9 @@ PACKAGE_URL = @PACKAGE_URL@
 PACKAGE_VERSION = @PACKAGE_VERSION@
 PATH_SEPARATOR = @PATH_SEPARATOR@
 PERL = @PERL@
+PKG_CONFIG = @PKG_CONFIG@
+PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@
+PKG_CONFIG_PATH = @PKG_CONFIG_PATH@
 PYTHON = @PYTHON@
 PYTHONSODV = @PYTHONSODV@
 PYTHON_INCLUDES = @PYTHON_INCLUDES@
index 84d3dc3..4660835 100644 (file)
@@ -209,6 +209,9 @@ PACKAGE_URL = @PACKAGE_URL@
 PACKAGE_VERSION = @PACKAGE_VERSION@
 PATH_SEPARATOR = @PATH_SEPARATOR@
 PERL = @PERL@
+PKG_CONFIG = @PKG_CONFIG@
+PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@
+PKG_CONFIG_PATH = @PKG_CONFIG_PATH@
 PYTHON = @PYTHON@
 PYTHONSODV = @PYTHONSODV@
 PYTHON_INCLUDES = @PYTHON_INCLUDES@
index ec1b896..515f549 100644 (file)
@@ -38,23 +38,22 @@ CLEANFILES = .memdump
 
 test-current:
        @(echo > .memdump)
-       @echo \<doc/\> >current.xml
-       @echo "#"
-       @echo "# Inspect the following for correctness"
-       @echo "#"
-       @(for i in $(srcdir)/current.xsl ; do \
-         name=`basename $$i .xsl` ; \
-         if [ ! -f $(srcdir)/$$name.xml ] ; then continue ; fi ; \
-         $(top_builddir)/xsltproc/xsltproc $(srcdir)/$$name.xsl $(srcdir)/$$name.xml;\
-         grep "MORY ALLO" .memdump  | grep -v "MEMORY ALLOCATED : 0" || true;\
-         done)
-       @rm -f current.xml
+       @(if [ -z "$$CONTINUOUS_INTEGRATION" ]; then \
+           echo \<doc/\> >current.xml ; \
+           echo "#" ; \
+           echo "# Inspect the following for correctness" ; \
+           echo "#" ; \
+           for i in $(srcdir)/current.xsl ; do \
+             name=`basename $$i .xsl` ; \
+             if [ ! -f $(srcdir)/$$name.xml ] ; then continue ; fi ; \
+             $(top_builddir)/xsltproc/xsltproc $(srcdir)/$$name.xsl $(srcdir)/$$name.xml;\
+             grep "MORY ALLO" .memdump  | grep -v "MEMORY ALLOCATED : 0" || true;\
+           done ; \
+           rm -f current.xml ; \
+         fi)
 
-test-logall:
+test tests: $(top_builddir)/xsltproc/xsltproc test-current
        @echo '## Running exslt date tests'
-
-test tests: $(top_builddir)/xsltproc/xsltproc test-logall test-current
-       @echo '## Running exslt common tests'
        @(echo > .memdump)
        @(for i in $(srcdir)/*.xsl ; do \
          name=`basename $$i .xsl` ; \
index e901ea5..46439b8 100644 (file)
@@ -209,6 +209,9 @@ PACKAGE_URL = @PACKAGE_URL@
 PACKAGE_VERSION = @PACKAGE_VERSION@
 PATH_SEPARATOR = @PATH_SEPARATOR@
 PERL = @PERL@
+PKG_CONFIG = @PKG_CONFIG@
+PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@
+PKG_CONFIG_PATH = @PKG_CONFIG_PATH@
 PYTHON = @PYTHON@
 PYTHONSODV = @PYTHONSODV@
 PYTHON_INCLUDES = @PYTHON_INCLUDES@
@@ -527,23 +530,22 @@ $(top_builddir)/xsltproc/xsltproc:
 
 test-current:
        @(echo > .memdump)
-       @echo \<doc/\> >current.xml
-       @echo "#"
-       @echo "# Inspect the following for correctness"
-       @echo "#"
-       @(for i in $(srcdir)/current.xsl ; do \
-         name=`basename $$i .xsl` ; \
-         if [ ! -f $(srcdir)/$$name.xml ] ; then continue ; fi ; \
-         $(top_builddir)/xsltproc/xsltproc $(srcdir)/$$name.xsl $(srcdir)/$$name.xml;\
-         grep "MORY ALLO" .memdump  | grep -v "MEMORY ALLOCATED : 0" || true;\
-         done)
-       @rm -f current.xml
-
-test-logall:
+       @(if [ -z "$$CONTINUOUS_INTEGRATION" ]; then \
+           echo \<doc/\> >current.xml ; \
+           echo "#" ; \
+           echo "# Inspect the following for correctness" ; \
+           echo "#" ; \
+           for i in $(srcdir)/current.xsl ; do \
+             name=`basename $$i .xsl` ; \
+             if [ ! -f $(srcdir)/$$name.xml ] ; then continue ; fi ; \
+             $(top_builddir)/xsltproc/xsltproc $(srcdir)/$$name.xsl $(srcdir)/$$name.xml;\
+             grep "MORY ALLO" .memdump  | grep -v "MEMORY ALLOCATED : 0" || true;\
+           done ; \
+           rm -f current.xml ; \
+         fi)
+
+test tests: $(top_builddir)/xsltproc/xsltproc test-current
        @echo '## Running exslt date tests'
-
-test tests: $(top_builddir)/xsltproc/xsltproc test-logall test-current
-       @echo '## Running exslt common tests'
        @(echo > .memdump)
        @(for i in $(srcdir)/*.xsl ; do \
          name=`basename $$i .xsl` ; \
index 47394ae..76c1865 100644 (file)
@@ -21,6 +21,8 @@ add    : -0001 + -PT59S
 result : -0002-12-31T23:59:01Z
 add    : -0001 + P1Y
 result : 0001
+add    : -0001-01-01 + P2Y
+result : 0002-01-01
 add    : 2000-01 + -PT86400S
 result : 1999-12-31
 add    : 2000-01 + -P1D
index 5555747..94cf1ad 100644 (file)
@@ -11,6 +11,7 @@
   <date date='2000-01-01T00:00:00Z' dur='-PT59S'/>
   <date date='-0001'                dur='-PT59S'/>
   <date date='-0001'                dur='P1Y'/>
+  <date date='-0001-01-01'          dur='P2Y'/>
   <date date='2000-01'              dur='-PT86400S'/>
   <date date='2000-01'              dur='-P1D'/>
   <date date='1970-01-01T00:00:00-00:30' dur='-PT30S'/>
index f22546c..8296de5 100644 (file)
@@ -73,8 +73,8 @@
     minute-in-hour       : NaN
     second-in-minute     : NaN
   
-  Test Date : -0004-02-29
-    year                 : -4
+  Test Date : -0005-02-29
+    year                 : -5
     leap-year            : true
     month-in-year        : 2
     month-name           : February
@@ -83,9 +83,9 @@
     day-in-year          : 60
     day-in-month         : 29
     day-of-week-in-month : 5
-    day-in-week          : 1
-    day-name             : Sunday
-    day-abbreviation     : Sun
+    day-in-week          : 5
+    day-name             : Thursday
+    day-abbreviation     : Thu
     time                 : 
     hour-in-day          : NaN
     minute-in-hour       : NaN
index 562e08e..7f3e9f5 100644 (file)
@@ -5,7 +5,7 @@
   <date date="3000-01-31"/>
   <date date="2000-02-29"/>
   <date date="9990001-12-31Z"/>
-  <date date="-0004-02-29"/>
+  <date date="-0005-02-29"/>
   <date date="1999-01-02"/>
   <date date="1999-01-03"/>
   <date date="2004-01-01"/>
index c0b4c53..273130d 100644 (file)
   
   Test Date : -0001-12-31T23:59:59-05:00
     year                 : -1
-    leap-year            : false
+    leap-year            : true
     month-in-year        : 12
     month-name           : December
     month-abbreviation   : Dec
     week-in-year         : 52
-    day-in-year          : 365
+    day-in-year          : 366
     day-in-month         : 31
     day-of-week-in-month : 5
     day-in-week          : 1
   
   Test Date : -10000-12-31T23:59:59Z
     year                 : -10000
-    leap-year            : true
+    leap-year            : false
     month-in-year        : 12
     month-name           : December
     month-abbreviation   : Dec
     week-in-year         : 1
-    day-in-year          : 366
+    day-in-year          : 365
     day-in-month         : 31
     day-of-week-in-month : 5
-    day-in-week          : 4
-    day-name             : Wednesday
-    day-abbreviation     : Wed
+    day-in-week          : 2
+    day-name             : Monday
+    day-abbreviation     : Mon
     time                 : 23:59:59Z
     hour-in-day          : 23
     minute-in-hour       : 59
index bcafa2b..0329e15 100644 (file)
@@ -14,7 +14,9 @@ result     : -P366D
 difference : 0002-05-05 - 0001-01
 result     : -P1Y4M
 difference : -0002-01-05 - 0001-01-04
-result     : P729D
+result     : P730D
+difference : 0002 - -0001
+result     : -P2Y
 difference : 1970-01-01T05:04:03 - 1970-01-01T04:03:02
 result     : -PT1H1M1S
 difference : 2000-01-01T05:00:03 - 2000-01-01T04:03:02
@@ -34,4 +36,8 @@ result     : -PT2S
 difference : 2000-01-02T05:00:03 - 2000-01-01T04:03:02
 result     : -P1DT57M1S
 difference : 2016-04-28T17:59:30+02:00 - 2016-04-28T17:59:30+04:00
-result     : -PT2H
\ No newline at end of file
+result     : -PT2H
+difference : 2000-01-05T01:00:00+11:00 - 2000-01-01T23:00:00-11:00
+result     : -P2DT4H
+difference : 2000-01-01T23:00:00-11:00 - 2000-01-05T01:00:00+11:00
+result     : P2DT4H
\ No newline at end of file
index ca897c0..cfc4759 100644 (file)
@@ -9,6 +9,7 @@
   <date date1='0002-01-05' date2='0001-01-04'/>
   <date date1='0002-05-05' date2='0001-01'/>
   <date date1='-0002-01-05' date2='0001-01-04'/>
+  <date date1='0002' date2='-0001'/>
   <date date1='1970-01-01T05:04:03' date2='1970-01-01T04:03:02'/>
   <date date1='2000-01-01T05:00:03' date2='2000-01-01T04:03:02'/>
   <date date1='2000-01-01T05:00:03' date2='1980-01-01T04:03:02'/>
@@ -23,5 +24,7 @@
   <date date1='2000-01-02T05:00:03' date2='2000-01-01T04:03:02'/>
   <!-- with timezone -->
   <date date1='2016-04-28T17:59:30+02:00' date2='2016-04-28T17:59:30+04:00'/>
+  <date date1='2000-01-05T01:00:00+11:00' date2='2000-01-01T23:00:00-11:00'/>
+  <date date1='2000-01-01T23:00:00-11:00' date2='2000-01-05T01:00:00+11:00'/>
 </page>
 
index 9a7b291..c5c517c 100644 (file)
@@ -73,8 +73,8 @@
     minute-in-hour       : NaN
     second-in-minute     : NaN
   
-  Test Date : -0004
-    year                 : -4
+  Test Date : -0005
+    year                 : -5
     leap-year            : true
     month-in-year        : NaN
     month-name           : 
index 95d776b..fb1e577 100644 (file)
@@ -5,6 +5,6 @@
   <date date="3000"/>\r
   <date date="2000"/>\r
   <date date="9990001"/>\r
-  <date date="-0004"/>\r
+  <date date="-0005"/>\r
 </page>\r
 \r
index 57580c7..6ffef03 100644 (file)
@@ -73,8 +73,8 @@
     minute-in-hour       : NaN
     second-in-minute     : NaN
   
-  Test Date : -0004-02
-    year                 : -4
+  Test Date : -0005-02
+    year                 : -5
     leap-year            : true
     month-in-year        : 2
     month-name           : February
index 08a7d29..3e3bdaf 100644 (file)
@@ -5,6 +5,6 @@
   <date date="3000-01"/>\r
   <date date="2000-02"/>\r
   <date date="9990001-12"/>\r
-  <date date="-0004-02"/>\r
+  <date date="-0005-02"/>\r
 </page>\r
 \r
index c0eb72c..9044a31 100644 (file)
@@ -17,6 +17,10 @@ seconds : -P0Y0M31DT10H10M10.09S
 result  : -2715010.09
 seconds : PT100H100M100.001S
 result  : 366100.001
+seconds : PT10H10M.5S
+result  : 36600.5
+seconds : PT10H10M5.S
+result  : 36605
 seconds : 2001
 result  : 978307200
 seconds : 2001-10-29T10:31:07
@@ -34,7 +38,7 @@ result  : 31536000
 seconds : 0001-01-01T00:00:00
 result  : -6.21355968e+10
 seconds : -0001-01-01T00:00:00
-result  : -6.21671328e+10
+result  : -6.21672192e+10
 seconds : 1970-01-01
 result  : 0
 seconds : 1970-01-01Z
index 24d58fb..6e33f5c 100644 (file)
@@ -10,6 +10,8 @@
   <date duration="P0Y0M31DT10H10M10.09S"/>
   <date duration="-P0Y0M31DT10H10M10.09S"/>
   <date duration="PT100H100M100.001S"/>
+  <date duration="PT10H10M.5S"/>
+  <date duration="PT10H10M5.S"/>
   <!-- date/times -->
   <date duration="2001"/>
   <date duration="2001-10-29T10:31:07"/>
index e804d94..944b714 100644 (file)
@@ -7,8 +7,6 @@ seconds : PT-10D
 result  : NaN
 seconds : --PT10H
 result  : NaN
-seconds : PT10H10M.5S
-result  : NaN
 seconds : PYT0.00001S
 result  : NaN
 seconds : PT49.00001
index 276baef..9052b8f 100644 (file)
@@ -5,7 +5,6 @@
   <date duration="P-T10D"/>
   <date duration="PT-10D"/>
   <date duration="--PT10H"/>
-  <date duration="PT10H10M.5S"/>
   <date duration="PYT0.00001S"/>
   <date duration="PT49.00001"/>
   <date duration="P0Y0MDT10H10M10.09S"/>
index 3d625eb..4a1a88c 100644 (file)
@@ -209,6 +209,9 @@ PACKAGE_URL = @PACKAGE_URL@
 PACKAGE_VERSION = @PACKAGE_VERSION@
 PATH_SEPARATOR = @PATH_SEPARATOR@
 PERL = @PERL@
+PKG_CONFIG = @PKG_CONFIG@
+PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@
+PKG_CONFIG_PATH = @PKG_CONFIG_PATH@
 PYTHON = @PYTHON@
 PYTHONSODV = @PYTHONSODV@
 PYTHON_INCLUDES = @PYTHON_INCLUDES@
index 303043a..3241284 100644 (file)
@@ -13,7 +13,8 @@ EXTRA_DIST =                                          \
        function.7.out  function.7.xml  function.7.xsl  \
        function.8.out  function.8.xml  function.8.xsl  \
        function.9.out  function.9.xml  function.9.xsl  \
-       function.10.out function.10.xml function.10.xsl
+       function.10.out function.10.xml function.10.xsl \
+       function.11.out function.11.xml function.11.xsl
 
 CLEANFILES = .memdump
 
index 9087164..a409156 100644 (file)
@@ -209,6 +209,9 @@ PACKAGE_URL = @PACKAGE_URL@
 PACKAGE_VERSION = @PACKAGE_VERSION@
 PATH_SEPARATOR = @PATH_SEPARATOR@
 PERL = @PERL@
+PKG_CONFIG = @PKG_CONFIG@
+PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@
+PKG_CONFIG_PATH = @PKG_CONFIG_PATH@
 PYTHON = @PYTHON@
 PYTHONSODV = @PYTHONSODV@
 PYTHON_INCLUDES = @PYTHON_INCLUDES@
@@ -307,7 +310,8 @@ EXTRA_DIST = \
        function.7.out  function.7.xml  function.7.xsl  \
        function.8.out  function.8.xml  function.8.xsl  \
        function.9.out  function.9.xml  function.9.xsl  \
-       function.10.out function.10.xml function.10.xsl
+       function.10.out function.10.xml function.10.xsl \
+       function.11.out function.11.xml function.11.xsl
 
 CLEANFILES = .memdump
 all: all-am
diff --git a/tests/exslt/functions/function.11.out b/tests/exslt/functions/function.11.out
new file mode 100644 (file)
index 0000000..6dde03e
--- /dev/null
@@ -0,0 +1,2 @@
+<?xml version="1.0"?>
+<a><b/></a>
diff --git a/tests/exslt/functions/function.11.xml b/tests/exslt/functions/function.11.xml
new file mode 100644 (file)
index 0000000..8e39ecb
--- /dev/null
@@ -0,0 +1,2 @@
+<?xml version="1.0"?>
+<doc/>
diff --git a/tests/exslt/functions/function.11.xsl b/tests/exslt/functions/function.11.xsl
new file mode 100644 (file)
index 0000000..7a3437a
--- /dev/null
@@ -0,0 +1,32 @@
+<?xml version="1.0"?>
+
+<xsl:stylesheet
+    version="1.0"
+    xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+    xmlns:func="http://exslt.org/functions"
+    xmlns:test="test"
+    extension-element-prefixes="func"
+>
+    <func:function name="test:fragment">
+        <func:result>
+            <a>
+                <b/>
+            </a>
+        </func:result>
+    </func:function>
+
+    <func:function name="test:func1">
+        <xsl:variable name="var" select="test:fragment()"/>
+        <func:result select="$var"/>
+    </func:function>
+
+    <func:function name="test:func2">
+        <xsl:variable name="var" select="test:func1()"/>
+        <func:result select="$var"/>
+    </func:function>
+
+    <xsl:template match="/">
+        <xsl:copy-of select="test:func2()"/>
+    </xsl:template>
+</xsl:stylesheet>
+
index 1f7d7b7..4012f2a 100644 (file)
@@ -209,6 +209,9 @@ PACKAGE_URL = @PACKAGE_URL@
 PACKAGE_VERSION = @PACKAGE_VERSION@
 PATH_SEPARATOR = @PATH_SEPARATOR@
 PERL = @PERL@
+PKG_CONFIG = @PKG_CONFIG@
+PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@
+PKG_CONFIG_PATH = @PKG_CONFIG_PATH@
 PYTHON = @PYTHON@
 PYTHONSODV = @PYTHONSODV@
 PYTHON_INCLUDES = @PYTHON_INCLUDES@
index 9e7b316..3ef3a2c 100644 (file)
@@ -29,15 +29,11 @@ test tests: $(top_builddir)/xsltproc/xsltproc
                        mv $$name.bad $(srcdir)/$$name.err ; \
                fi ; \
          else \
-               if  [ ! -s $$name.res ] ; then \
-                       echo "Fatal error, no $$name.res\n" ; \
-               else \
-                       diff $(srcdir)/$$name.out $$name.res ; \
-                       if [ -s $(srcdir)/$$name.err ] ; then \
-                               diff $(srcdir)/$$name.err $$name.bad; \
-                       else \
-                               diff /dev/null $$name.bad; \
-                       fi ; \
+               diff $(srcdir)/$$name.out $$name.res ; \
+               if [ -s $(srcdir)/$$name.err ] ; then \
+                       diff $(srcdir)/$$name.err $$name.bad; \
+               else \
+                       diff /dev/null $$name.bad; \
                fi ; \
          fi; \
          grep "MORY ALLO" .memdump  | grep -v "MEMORY ALLOCATED : 0" || true`;\
index b200df3..bb6b58e 100644 (file)
@@ -209,6 +209,9 @@ PACKAGE_URL = @PACKAGE_URL@
 PACKAGE_VERSION = @PACKAGE_VERSION@
 PATH_SEPARATOR = @PATH_SEPARATOR@
 PERL = @PERL@
+PKG_CONFIG = @PKG_CONFIG@
+PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@
+PKG_CONFIG_PATH = @PKG_CONFIG_PATH@
 PYTHON = @PYTHON@
 PYTHONSODV = @PYTHONSODV@
 PYTHON_INCLUDES = @PYTHON_INCLUDES@
@@ -518,15 +521,11 @@ test tests: $(top_builddir)/xsltproc/xsltproc
                        mv $$name.bad $(srcdir)/$$name.err ; \
                fi ; \
          else \
-               if  [ ! -s $$name.res ] ; then \
-                       echo "Fatal error, no $$name.res\n" ; \
-               else \
-                       diff $(srcdir)/$$name.out $$name.res ; \
-                       if [ -s $(srcdir)/$$name.err ] ; then \
-                               diff $(srcdir)/$$name.err $$name.bad; \
-                       else \
-                               diff /dev/null $$name.bad; \
-                       fi ; \
+               diff $(srcdir)/$$name.out $$name.res ; \
+               if [ -s $(srcdir)/$$name.err ] ; then \
+                       diff $(srcdir)/$$name.err $$name.bad; \
+               else \
+                       diff /dev/null $$name.bad; \
                fi ; \
          fi; \
          grep "MORY ALLO" .memdump  | grep -v "MEMORY ALLOCATED : 0" || true`;\
index df8adfb..7fdd432 100644 (file)
@@ -2,6 +2,6 @@ XPath error : Invalid expression
 ###
 ^
 XPath error : Invalid expression
-xmlXPathCompiledEval: evaluation failed
 runtime error: file ./eval.2.xsl line 11 element value-of
 XPath evaluation returned no result.
+no result for ./eval.2.xml
index 3048a90..e69de29 100644 (file)
@@ -1,2 +0,0 @@
-<?xml version="1.0"?>
-<results/>
index 5a87793..573d4f6 100644 (file)
@@ -1,6 +1,5 @@
 XPath error : Undefined namespace prefix
-xmlXPathCompiledEval: evaluation failed
 XPath error : Invalid expression
-xmlXPathCompiledEval: evaluation failed
 runtime error: file ./eval.3.xsl line 11 element value-of
 XPath evaluation returned no result.
+no result for ./eval.3.xml
index 3048a90..e69de29 100644 (file)
@@ -1,2 +0,0 @@
-<?xml version="1.0"?>
-<results/>
index 75b5227..7d3f931 100644 (file)
@@ -209,6 +209,9 @@ PACKAGE_URL = @PACKAGE_URL@
 PACKAGE_VERSION = @PACKAGE_VERSION@
 PATH_SEPARATOR = @PATH_SEPARATOR@
 PERL = @PERL@
+PKG_CONFIG = @PKG_CONFIG@
+PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@
+PKG_CONFIG_PATH = @PKG_CONFIG_PATH@
 PYTHON = @PYTHON@
 PYTHONSODV = @PYTHONSODV@
 PYTHON_INCLUDES = @PYTHON_INCLUDES@
index 2cd3bbd..647b0b6 100644 (file)
@@ -209,6 +209,9 @@ PACKAGE_URL = @PACKAGE_URL@
 PACKAGE_VERSION = @PACKAGE_VERSION@
 PATH_SEPARATOR = @PATH_SEPARATOR@
 PERL = @PERL@
+PKG_CONFIG = @PKG_CONFIG@
+PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@
+PKG_CONFIG_PATH = @PKG_CONFIG_PATH@
 PYTHON = @PYTHON@
 PYTHONSODV = @PYTHONSODV@
 PYTHON_INCLUDES = @PYTHON_INCLUDES@
index 49e753a..36182bb 100644 (file)
@@ -209,6 +209,9 @@ PACKAGE_URL = @PACKAGE_URL@
 PACKAGE_VERSION = @PACKAGE_VERSION@
 PATH_SEPARATOR = @PATH_SEPARATOR@
 PERL = @PERL@
+PKG_CONFIG = @PKG_CONFIG@
+PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@
+PKG_CONFIG_PATH = @PKG_CONFIG_PATH@
 PYTHON = @PYTHON@
 PYTHONSODV = @PYTHONSODV@
 PYTHON_INCLUDES = @PYTHON_INCLUDES@
index 84d2fa8..f25b55b 100644 (file)
@@ -209,6 +209,9 @@ PACKAGE_URL = @PACKAGE_URL@
 PACKAGE_VERSION = @PACKAGE_VERSION@
 PATH_SEPARATOR = @PATH_SEPARATOR@
 PERL = @PERL@
+PKG_CONFIG = @PKG_CONFIG@
+PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@
+PKG_CONFIG_PATH = @PKG_CONFIG_PATH@
 PYTHON = @PYTHON@
 PYTHONSODV = @PYTHONSODV@
 PYTHON_INCLUDES = @PYTHON_INCLUDES@
index d7564e2..490fe53 100644 (file)
@@ -2,3 +2,4 @@ runtime error: file ./bug-165.xsl line 6 element value-of
 Variable 'pStyle' has not been declared.
 runtime error: file ./bug-165.xsl line 6 element value-of
 XPath evaluation returned no result.
+no result for ./../docs/bug-165.xml
index 0d7d44b..e69de29 100644 (file)
@@ -1,8 +0,0 @@
-<?xml version="1.0"?>
-
-
-
-
-
-
-
index 70cddd5..61f2edc 100644 (file)
@@ -1,6 +1,2 @@
-compilation error: file ./bug-175.xsl line 28 element function
-xsltStylePreCompute: unknown xsl:function
 compilation error: file ./bug-175.xsl line 5 element transform
-xsl:version: only 1.0 features are supported
-compilation error: file ./bug-175.xsl line 28 element function
-xsltParseStylesheetTop: ignoring unknown function element
+xsl:version: only 1.1 features are supported
index f25e4c9..8ab9f98 100644 (file)
@@ -25,6 +25,9 @@
       </html>
    </xsl:template>
 
-   <xsl:function name="test:test">YES</xsl:function>
+   <xsl:function name="test:test">
+      <xsl:param name="x"/>
+      <xsl:text>YES</xsl:text>
+   </xsl:function>
 
 </xsl:transform>
index e0e568e..6dd9bb2 100644 (file)
@@ -1,2 +1,3 @@
 runtime error: file ./bug-180.xsl line 4 element copy-of
 Variable 'xxx' has not been declared.
+no result for ./../docs/bug-180.xml
index ec5e912..9f029c9 100644 (file)
@@ -1,5 +1,5 @@
 runtime error: file ./bug-184.xsl line 5 element value-of
 Variable 'nonexistent' has not been declared.
-xmlXPathCompiledEval: 1 objects left on the stack.
 runtime error: file ./bug-184.xsl line 5 element value-of
 XPath evaluation returned no result.
+no result for ./../docs/bug-184.xml
index e829790..e69de29 100644 (file)
@@ -1,2 +0,0 @@
-<?xml version="1.0"?>
-<result/>
index cdd50f6..5babc76 100644 (file)
@@ -209,6 +209,9 @@ PACKAGE_URL = @PACKAGE_URL@
 PACKAGE_VERSION = @PACKAGE_VERSION@
 PATH_SEPARATOR = @PATH_SEPARATOR@
 PERL = @PERL@
+PKG_CONFIG = @PKG_CONFIG@
+PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@
+PKG_CONFIG_PATH = @PKG_CONFIG_PATH@
 PYTHON = @PYTHON@
 PYTHONSODV = @PYTHONSODV@
 PYTHON_INCLUDES = @PYTHON_INCLUDES@
index 1ad5e43..9e907ef 100644 (file)
@@ -209,6 +209,9 @@ PACKAGE_URL = @PACKAGE_URL@
 PACKAGE_VERSION = @PACKAGE_VERSION@
 PATH_SEPARATOR = @PATH_SEPARATOR@
 PERL = @PERL@
+PKG_CONFIG = @PKG_CONFIG@
+PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@
+PKG_CONFIG_PATH = @PKG_CONFIG_PATH@
 PYTHON = @PYTHON@
 PYTHONSODV = @PYTHONSODV@
 PYTHON_INCLUDES = @PYTHON_INCLUDES@
index 6351b09..59bbc64 100644 (file)
@@ -209,6 +209,9 @@ PACKAGE_URL = @PACKAGE_URL@
 PACKAGE_VERSION = @PACKAGE_VERSION@
 PATH_SEPARATOR = @PATH_SEPARATOR@
 PERL = @PERL@
+PKG_CONFIG = @PKG_CONFIG@
+PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@
+PKG_CONFIG_PATH = @PKG_CONFIG_PATH@
 PYTHON = @PYTHON@
 PYTHONSODV = @PYTHONSODV@
 PYTHON_INCLUDES = @PYTHON_INCLUDES@
index 74e9331..99999ab 100644 (file)
@@ -209,6 +209,9 @@ PACKAGE_URL = @PACKAGE_URL@
 PACKAGE_VERSION = @PACKAGE_VERSION@
 PATH_SEPARATOR = @PATH_SEPARATOR@
 PERL = @PERL@
+PKG_CONFIG = @PKG_CONFIG@
+PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@
+PKG_CONFIG_PATH = @PKG_CONFIG_PATH@
 PYTHON = @PYTHON@
 PYTHONSODV = @PYTHONSODV@
 PYTHON_INCLUDES = @PYTHON_INCLUDES@
index e0736ab..0f8c378 100644 (file)
@@ -21,7 +21,7 @@ plugindir = $(abs_builddir)/.libs
 xmlsoft_org_xslt_testplugin_la_CFLAGS = -DMODULE_COMPILE $(LIBXML_CFLAGS) $(LIBXSLT_CFLAGS)
 xmlsoft_org_xslt_testplugin_la_SOURCES = testplugin.c
 xmlsoft_org_xslt_testplugin_la_LIBADD = $(top_builddir)/libxslt/libxslt.la $(EXTRA_LIBS)
-xmlsoft_org_xslt_testplugin_la_LDFLAGS = -module -avoid-version -rpath $(plugindir)
+xmlsoft_org_xslt_testplugin_la_LDFLAGS = $(WIN32_EXTRA_LDFLAGS) -module -avoid-version -rpath $(plugindir)
 
 test-logall:
        @echo '## Running plugin tests'
index c51070e..4984f2e 100644 (file)
@@ -268,6 +268,9 @@ PACKAGE_URL = @PACKAGE_URL@
 PACKAGE_VERSION = @PACKAGE_VERSION@
 PATH_SEPARATOR = @PATH_SEPARATOR@
 PERL = @PERL@
+PKG_CONFIG = @PKG_CONFIG@
+PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@
+PKG_CONFIG_PATH = @PKG_CONFIG_PATH@
 PYTHON = @PYTHON@
 PYTHONSODV = @PYTHONSODV@
 PYTHON_INCLUDES = @PYTHON_INCLUDES@
@@ -367,7 +370,7 @@ CLEANFILES = *.res
 @WITH_MODULES_TRUE@xmlsoft_org_xslt_testplugin_la_CFLAGS = -DMODULE_COMPILE $(LIBXML_CFLAGS) $(LIBXSLT_CFLAGS)
 @WITH_MODULES_TRUE@xmlsoft_org_xslt_testplugin_la_SOURCES = testplugin.c
 @WITH_MODULES_TRUE@xmlsoft_org_xslt_testplugin_la_LIBADD = $(top_builddir)/libxslt/libxslt.la $(EXTRA_LIBS)
-@WITH_MODULES_TRUE@xmlsoft_org_xslt_testplugin_la_LDFLAGS = -module -avoid-version -rpath $(plugindir)
+@WITH_MODULES_TRUE@xmlsoft_org_xslt_testplugin_la_LDFLAGS = $(WIN32_EXTRA_LDFLAGS) -module -avoid-version -rpath $(plugindir)
 all: all-am
 
 .SUFFIXES:
index 1813704..c2de722 100644 (file)
@@ -209,6 +209,9 @@ PACKAGE_URL = @PACKAGE_URL@
 PACKAGE_VERSION = @PACKAGE_VERSION@
 PATH_SEPARATOR = @PATH_SEPARATOR@
 PERL = @PERL@
+PKG_CONFIG = @PKG_CONFIG@
+PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@
+PKG_CONFIG_PATH = @PKG_CONFIG_PATH@
 PYTHON = @PYTHON@
 PYTHONSODV = @PYTHONSODV@
 PYTHON_INCLUDES = @PYTHON_INCLUDES@
index 7043d72..dd21095 100644 (file)
@@ -209,6 +209,9 @@ PACKAGE_URL = @PACKAGE_URL@
 PACKAGE_VERSION = @PACKAGE_VERSION@
 PATH_SEPARATOR = @PATH_SEPARATOR@
 PERL = @PERL@
+PKG_CONFIG = @PKG_CONFIG@
+PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@
+PKG_CONFIG_PATH = @PKG_CONFIG_PATH@
 PYTHON = @PYTHON@
 PYTHONSODV = @PYTHONSODV@
 PYTHON_INCLUDES = @PYTHON_INCLUDES@
index 30963db..8c45cd2 100644 (file)
@@ -209,6 +209,9 @@ PACKAGE_URL = @PACKAGE_URL@
 PACKAGE_VERSION = @PACKAGE_VERSION@
 PATH_SEPARATOR = @PATH_SEPARATOR@
 PERL = @PERL@
+PKG_CONFIG = @PKG_CONFIG@
+PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@
+PKG_CONFIG_PATH = @PKG_CONFIG_PATH@
 PYTHON = @PYTHON@
 PYTHONSODV = @PYTHONSODV@
 PYTHON_INCLUDES = @PYTHON_INCLUDES@
index 5b102b3..4fc42fe 100644 (file)
@@ -155,37 +155,37 @@ libexslta : $(BINDIR)\$(EXSLT_A)
 utils : $(UTILS)
 
 clean :
-       cmd.exe /C if exist $(XSLT_INTDIR) rmdir /S /Q $(XSLT_INTDIR)
-       cmd.exe /C if exist $(XSLT_INTDIR_A) rmdir /S /Q $(XSLT_INTDIR_A)
-       cmd.exe /C if exist $(EXSLT_INTDIR) rmdir /S /Q $(EXSLT_INTDIR)
-       cmd.exe /C if exist $(EXSLT_INTDIR_A) rmdir /S /Q $(EXSLT_INTDIR_A)
-       cmd.exe /C if exist $(UTILS_INTDIR) rmdir /S /Q $(UTILS_INTDIR)
-       cmd.exe /C if exist $(BINDIR) rmdir /S /Q $(BINDIR)
-       cmd.exe /C if exist depends.mingw del depends.mingw
+       cmd.exe /C "if exist $(XSLT_INTDIR) rmdir /S /Q $(XSLT_INTDIR)"
+       cmd.exe /C "if exist $(XSLT_INTDIR_A) rmdir /S /Q $(XSLT_INTDIR_A)"
+       cmd.exe /C "if exist $(EXSLT_INTDIR) rmdir /S /Q $(EXSLT_INTDIR)"
+       cmd.exe /C "if exist $(EXSLT_INTDIR_A) rmdir /S /Q $(EXSLT_INTDIR_A)"
+       cmd.exe /C "if exist $(UTILS_INTDIR) rmdir /S /Q $(UTILS_INTDIR)"
+       cmd.exe /C "if exist $(BINDIR) rmdir /S /Q $(BINDIR)"
+       cmd.exe /C "if exist depends.mingw del depends.mingw"
 
 rebuild : clean all
 
 distclean : clean
-       cmd.exe /C if exist config.* del config.*
-       cmd.exe /C if exist depends.* del depends.*
-       cmd.exe /C if exist Makefile del Makefile
+       cmd.exe /C "if exist config.* del config.*"
+       cmd.exe /C "if exist depends.* del depends.*"
+       cmd.exe /C "if exist Makefile del Makefile"
 
 install-libs : all
-       cmd.exe /C if not exist $(INCPREFIX)\$(XSLT_BASENAME) mkdir $(INCPREFIX)\$(XSLT_BASENAME)
-       cmd.exe /C if not exist $(INCPREFIX)\$(EXSLT_BASENAME) mkdir $(INCPREFIX)\$(EXSLT_BASENAME)
-       cmd.exe /C if not exist $(BINPREFIX) mkdir $(BINPREFIX)
-       cmd.exe /C if not exist $(LIBPREFIX) mkdir $(LIBPREFIX)
-       cmd.exe /C copy $(XSLT_SRCDIR)\*.h $(INCPREFIX)\$(XSLT_BASENAME)
-       cmd.exe /C copy $(EXSLT_SRCDIR)\*.h $(INCPREFIX)\$(EXSLT_BASENAME)
-       cmd.exe /C copy $(BINDIR)\$(XSLT_SO) $(SOPREFIX)
-       cmd.exe /C copy $(BINDIR)\$(XSLT_A) $(LIBPREFIX)
-       cmd.exe /C copy $(BINDIR)\$(XSLT_IMP) $(LIBPREFIX)
-       cmd.exe /C copy $(BINDIR)\$(EXSLT_SO) $(SOPREFIX)
-       cmd.exe /C copy $(BINDIR)\$(EXSLT_A) $(LIBPREFIX)
-       cmd.exe /C copy $(BINDIR)\$(EXSLT_IMP) $(LIBPREFIX)
+       cmd.exe /C "if not exist $(INCPREFIX)\$(XSLT_BASENAME) mkdir $(INCPREFIX)\$(XSLT_BASENAME)"
+       cmd.exe /C "if not exist $(INCPREFIX)\$(EXSLT_BASENAME) mkdir $(INCPREFIX)\$(EXSLT_BASENAME)"
+       cmd.exe /C "if not exist $(BINPREFIX) mkdir $(BINPREFIX)"
+       cmd.exe /C "if not exist $(LIBPREFIX) mkdir $(LIBPREFIX)"
+       cmd.exe /C "copy $(XSLT_SRCDIR)\*.h $(INCPREFIX)\$(XSLT_BASENAME)"
+       cmd.exe /C "copy $(EXSLT_SRCDIR)\*.h $(INCPREFIX)\$(EXSLT_BASENAME)"
+       cmd.exe /C "copy $(BINDIR)\$(XSLT_SO) $(SOPREFIX)"
+       cmd.exe /C "copy $(BINDIR)\$(XSLT_A) $(LIBPREFIX)"
+       cmd.exe /C "copy $(BINDIR)\$(XSLT_IMP) $(LIBPREFIX)"
+       cmd.exe /C "copy $(BINDIR)\$(EXSLT_SO) $(SOPREFIX)"
+       cmd.exe /C "copy $(BINDIR)\$(EXSLT_A) $(LIBPREFIX)"
+       cmd.exe /C "copy $(BINDIR)\$(EXSLT_IMP) $(LIBPREFIX)"
 
 install : install-libs
-       cmd.exe /C copy $(BINDIR)\*.exe $(BINPREFIX)
+       cmd.exe /C "copy $(BINDIR)\*.exe $(BINPREFIX)"
 
 install-dist : install
 
@@ -205,16 +205,16 @@ dep :
 
 # Makes the compiler output directory.
 $(BINDIR) :
-       cmd.exe /C if not exist $(BINDIR) mkdir $(BINDIR)
+       cmd.exe /C "if not exist $(BINDIR) mkdir $(BINDIR)"
 
 
 # Makes the libxslt intermediate directory.
 $(XSLT_INTDIR) :
-       cmd.exe /C if not exist $(XSLT_INTDIR) mkdir $(XSLT_INTDIR)
+       cmd.exe /C "if not exist $(XSLT_INTDIR) mkdir $(XSLT_INTDIR)"
 
 # Makes the static libxslt intermediate directory.
 $(XSLT_INTDIR_A) :
-       cmd.exe /C if not exist $(XSLT_INTDIR_A) mkdir $(XSLT_INTDIR_A)
+       cmd.exe /C "if not exist $(XSLT_INTDIR_A) mkdir $(XSLT_INTDIR_A)"
 
 # An implicit rule for libxslt compilation.
 $(XSLT_INTDIR)/%.o : $(XSLT_SRCDIR)/%.c
@@ -244,11 +244,11 @@ $(BINDIR)\$(XSLT_A) : $(BINDIR) $(XSLT_OBJS_A)
 
 # Creates the libexslt intermediate directory.
 $(EXSLT_INTDIR) :
-       cmd.exe /C if not exist $(EXSLT_INTDIR) mkdir $(EXSLT_INTDIR)
+       cmd.exe /C "if not exist $(EXSLT_INTDIR) mkdir $(EXSLT_INTDIR)"
 
 # Creates the static libexslt intermediate directory.
 $(EXSLT_INTDIR_A) :
-       cmd.exe /C if not exist $(EXSLT_INTDIR_A) mkdir $(EXSLT_INTDIR_A)
+       cmd.exe /C "if not exist $(EXSLT_INTDIR_A) mkdir $(EXSLT_INTDIR_A)"
 
 # An implicit rule for libexslt compilation.
 $(EXSLT_INTDIR)/%.o : $(EXSLT_SRCDIR)/%.c
@@ -279,7 +279,7 @@ $(BINDIR)\$(EXSLT_A) : $(BINDIR) $(EXSLT_OBJS_A) libxslta
 
 # Creates the utils intermediate directory.
 $(UTILS_INTDIR) :
-       cmd.exe /C if not exist $(UTILS_INTDIR) mkdir $(UTILS_INTDIR)
+       cmd.exe /C "if not exist $(UTILS_INTDIR) mkdir $(UTILS_INTDIR)"
 
 # An implicit rule for xsltproc and friends.
 APPLIBS = $(LIBS)
index 7f2f854..3974591 100644 (file)
@@ -424,7 +424,7 @@ if (buildIncPrefix == "")
 if (buildLibPrefix == "")
        buildLibPrefix = "$(PREFIX)" + dirSep + "lib";
 if (buildSoPrefix == "")
-       buildSoPrefix = "$(PREFIX)" + dirSep + "lib";
+       buildSoPrefix = "$(PREFIX)" + dirSep + "bin";
 
 // Discover the version.
 discoverVersion();
index ad1c3dc..1a8804f 100644 (file)
@@ -41,4 +41,4 @@ xsltproc.dv: xsltproc.o
 tests: testThreads
        @echo > .memdump
        @echo '## Running testThreads'
-       @($(CHECKER) ./testThreads ; grep "MORY ALLO" .memdump  | grep -v "MEMORY ALLOCATED : 0" || true)
+       @($(CHECKER) ./testThreads > /dev/null; grep "MORY ALLO" .memdump  | grep -v "MEMORY ALLOCATED : 0" || true)
index 15fb77b..1e3873c 100644 (file)
@@ -274,6 +274,9 @@ PACKAGE_URL = @PACKAGE_URL@
 PACKAGE_VERSION = @PACKAGE_VERSION@
 PATH_SEPARATOR = @PATH_SEPARATOR@
 PERL = @PERL@
+PKG_CONFIG = @PKG_CONFIG@
+PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@
+PKG_CONFIG_PATH = @PKG_CONFIG_PATH@
 PYTHON = @PYTHON@
 PYTHONSODV = @PYTHONSODV@
 PYTHON_INCLUDES = @PYTHON_INCLUDES@
@@ -742,7 +745,7 @@ xsltproc.dv: xsltproc.o
 tests: testThreads
        @echo > .memdump
        @echo '## Running testThreads'
-       @($(CHECKER) ./testThreads ; grep "MORY ALLO" .memdump  | grep -v "MEMORY ALLOCATED : 0" || true)
+       @($(CHECKER) ./testThreads > /dev/null; grep "MORY ALLO" .memdump  | grep -v "MEMORY ALLOCATED : 0" || true)
 
 # 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.