Fri Jul 24 10:16:24 CEST 2009 Daniel Veillard <veillard@redhat.com>

	* libxslt/attributes.c: fix an IDness issue when building the tree

Tue May 12 09:03:46 CEST 2009 Daniel Veillard <veillard@redhat.com>

	* configure.in: adapt the extra version detection code to git
	* libxslt.doap: adding RDF dope file

Fri Jan 23 19:02:28 PST 2009 William Brack <wbrack@mmm.com.hk>

	* libexslt/strings.c: Fixed indexing error reported by
	  Ron Burk on the mailing list.

Fri Nov 14 15:06:55 CET 2008 Daniel Veillard <veillard@redhat.com>

	* python/Makefile.am libxslt/Makefile.am configure.in
	  libexslt/Makefile.am: applied patch from Roumen Petrov for
	  mingw cross compilation problems raised by Rich Jones

Tue Oct 28 11:55:27 CET 2008 Daniel Veillard <veillard@redhat.com>

	* configure.in Makefile.am: patch from Richard Jones to build
	  shared libs with MinGW cross-compiler

Tue Oct  7 18:16:08 CEST 2008 Daniel Veillard <veillard@redhat.com>

	* libxslt/pattern.c: prevent some unchecked pointer accesses, patch
	  by Jake Goulding

Wed Aug  6 20:10:08 HKT 2008 William Brack <wbrack@mmm.com.hk>

	* Minor cleanup of "typo" and some compilation warnings:
	  tests/namespaces/tst7.xsl: fixed typo detected by new libxml2 code
	  libxslt/keys.c, libxslt/xsltlocale.c, libexslt/date.c: trivial
	  changes for gcc warnings.

Fri Aug  1 10:16:48 CEST 2008 Daniel Veillard <veillard@redhat.com>

	* libxslt/xsltconfig.h.in libxslt/xslt.c libxslt/extensions.c
	  libxslt/xsltlocale.c libxslt/preproc.c libxslt/xsltutils.c
	  libxslt/xsltlocale.h libxslt/win32config.h configure.in
	  config.h.in win32/configure.js: big patch from Roumen Petrov
	  finishing xsl:sort lang support with many portability issues
	  fixed and feedback from Nick Wellnhofer and Rob Richards

Fri Aug  1 07:54:02 CEST 2008 Daniel Veillard <veillard@redhat.com>

	* libexslt/crypto.c: fix for CVE-2008-2935 libexslt RC4
	  encryption/decryption functions

Mon Jul 28 14:46:27 CEST 2008 Daniel Veillard <veillard@redhat.com>

	* configure.in: fix my static linking setup on x86_64

Sun Jul 27 13:52:10 CEST 2008 Daniel Veillard <veillard@redhat.com>

	* libxslt/xslt.c: avoid a quadratic behaviour when hitting duplicates
	  exclude-result-prefixes declarations, should fix #544906

Sat Jul 26 12:43:18 PST 2008 William Brack <wbrack@mmm.com.hk>

	*configure.in: fixed option --with-debugger with patch from
	 Arun Ragnavan #544829

Sat Jul 12 16:36:58 PST 2008 William Brack <wbrack@mmm.com.hk>

	* libexslt/math.c: fixed incorrect argument popping in
	  exsltMathAtan2Function #541965

Thu Jul 10 10:04:28 PST 2008 William Brack <wbrack@mmm.com.hk>

	* libxslt/functions.c: patch from Ron Burk to fix problem
	  with string check for element-available and
	  function-available #530891.

Tue Jun 24 23:55:48 PST 2008 William Brack <wbrack@mmm.com.hk>

	* libxslt/attrvt.c: added code to handle literal within an
	  AVT #539741.
	* tests/docs/Makefile.am tests/docs/bug-168.xsl
	* tests/general/Makefile.am tests/general/bug-168.* add a
	  test for this bug to the regression suite.

Fri Jun 13 10:58:52 CEST 2008 Daniel Veillard <daniel@veillard.com>

	* libxslt/libxslt.h libexslt/libexslt.h libexslt/exslt.h: patch
	  from Roumen Petrov fixing include path when compiling outside
	  source tree

Thu Jun 12 11:23:23 CEST 2008 Daniel Veillard <daniel@veillard.com>

	* libxslt/xsltconfig.h.in libxslt/xsltlocale.h configure.in
	  config.h.in win32/configure.js: patch from Nick Wellnhofer and
	  Roumen Petrov to fix some portability problems on the previous
	  xsl:sort locale patch

Tue Jun  3 18:26:26 CEST 2008 Daniel Veillard <daniel@veillard.com>

	* configure.in libxslt/extra.c libxslt/Makefile.am libxslt/preproc.c
	  libxslt/xsltInternals.h libxslt/xsltlocale.c libxslt/xsltlocale.h
	  libxslt/xsltutils.c win32/Makefile.mingw win32/Makefile.msvc: patch
	  from Nick Wellnhofer adding xsl:sort lang support using the locale
	  support from the C library.

Tue Jun  3 18:14:55 CEST 2008 Daniel Veillard <daniel@veillard.com>

	* libxslt/extensions.h: as Ralf Junker pointed out
	  xsltExtFunctionLookup was defined but never implemented, removing it

Tue May 13 17:51:05 CEST 2008 Daniel Veillard <daniel@veillard.com>

	* configure.in doc/*: release of 1.1.24
	* python/generator.py: syntactic cleanup (Martin)

Tue May 13 16:32:22 CEST 2008 Daniel Veillard <daniel@veillard.com>

	* libxslt/xslt.c libxslt/extensions.c libxslt/extensions.h:
	  fix the processing of top level elements of stylesheets which
	  are not in the XSLT namespace and are not an extension either
	  should fix #529223
	* tests/docs/Makefile.am tests/docs/bug-167.xml
	  tests/general/Makefile.am tests/general/bug-167.*: add the
	  test to the regression suite

Fri May  9 14:30:35 CEST 2008 Daniel Veillard <daniel@veillard.com>

	* libxslt/documents.c libxslt/keys.c libxslt/xsltInternals.h
	  libxslt/transform.c libxslt/pattern.c: fix the key initialization
	  problem introduced when tracking Josef Urban problem from 22 Dec
	  2007, this should also handle the problem of recursive keys
	  definitions should fix #531873.
	* tests/docs/bug-166.xml tests/docs/Makefile.am
	  tests/general/Makefile.am tests/general/bug-166.xsl
	  tests/general/bug-166.out: add the regression tests when a key
	  computation depends on another one.

Mon Apr 21 16:16:29 CEST 2008 Daniel Veillard <daniel@veillard.com>

	* doc/xsltproc.1 doc/xsltproc.xml: update the man page based on
	  Vincent Lefevre suggestion.

Mon Apr 14 11:19:14 CEST 2008 Daniel Veillard <daniel@veillard.com>

	* libxslt/pattern.c: fixes #527297 general patter comps fix and cleanup
	* libxslt/xsltInternals.h libxslt/pattern.h: other cleanups

Tue Apr  8 19:15:19 CEST 2008 Daniel Veillard <daniel@veillard.com>

	* configure.in doc/*: release of 1.1.23

Tue Apr  8 18:52:36 CEST 2008 Daniel Veillard <daniel@veillard.com>

	* libexslt/date.c: new version of patch from Peter Pawlowski

Tue Apr  8 10:19:01 CEST 2008 Daniel Veillard <daniel@veillard.com>

	* python/generator.py: fix an infinite loop bug

Thu Apr  3 09:32:49 CEST 2008 Daniel Veillard <daniel@veillard.com>

	* libxslt/xsltutils.c: avoid a scary realloc() loop should fix #520383

Thu Apr  3 07:32:36 CEST 2008 Daniel Veillard <daniel@veillard.com>

	* libexslt/date.c: applied patch from Peter Pawlowski  fixing
	  a timezone offset problem, fixes #521680
	* libxslt/namespaces.c: a bit of space/tabs cleanup

Thu Apr  3 06:25:02 CEST 2008 Daniel Veillard <daniel@veillard.com>

	* doc/xsltproc.xml doc/xsltproc.1 doc/xsltproc.html: small fix to
	  man page synopsis, should fix #525822

Sat Mar 15 11:13:18 HKT 2008 William Brack <wbrack@mmm.com.hk>

	* libexslt/functions.c: fixed minor error reported on the mailing
	 list by Mark Howe, which caused a segfault if func:result was
	 postitioned as top-level element.

Thu Mar 13 09:33:21 CET 2008 Daniel Veillard <daniel@veillard.com>

	* libxslt/win32config.h: patch from Rob Richards for VS 2008
	* python/types.c: fix a problem with namespace nodes coming from
	  XPath nodesets.

Mon Mar  3 09:39:31 CET 2008 Daniel Veillard <daniel@veillard.com>

	* doc/xsltproc.xml doc/xsltproc.1: fix maxdepth default value
	  documentation fixes #519921.

Sat Feb 16 01:24:58 HKT 2008 William Brack <wbrack@mmm.com.hk>

	*libxslt/extensions.c: fixed minor error bug #516483
	*tests/exslt/common - deleted node-set.9 regression test,
	 because it relied upon an external web import.

Tue Feb  5 08:53:30 CET 2008 Daniel Veillard <daniel@veillard.com>

	* libxslt/xslt.c: applied documentation patch from Jason Viers
	  for xsltParseStylesheetDoc

Tue Feb  5 08:36:53 CET 2008 Daniel Veillard <daniel@veillard.com>

	* python/tests/pyxsltproc.py: applied a portability patch from 
	  Stephane Bidoul

Thu Jan 24 16:24:05 CET 2008 Daniel Veillard <daniel@veillard.com>

	* doc/xslt.html doc/docbook.html: fix links for Cygwin DocBook
	  setup as suggested by Philippe Bourcier

Sun Dec 23 16:40:38 PST 2007 William Brack <wbrack@mmm.com.hk>

	* libxslt/keys.c, libxslt/pattern.c, libxslt/xsltInternals.h:
	  fixed a problem on superfluous re-generation of keys reported
	  on the mailing list by Josef Urban.

Thu Nov 29 11:43:14 CET 2007 Daniel Veillard <daniel@veillard.com>

	* configure.in: avoid a problem in configure if an old gcrypt
	  version is installed, patch from Brent Cowgill, fixes #500390

Tue Nov 13 13:08:08 PDT 2007 William Brack <wbrack@mmm.com.hk>

	* libexslt/common.c, libexslt/dynamic.c: After discussion on
	  Bugzilla with Peter Pawlowski, added same code for preventing
	  deletion of function result during garbage collection (see
	  bug #495995).
	  
Mon Nov 12 13:53:58 PDT 2007 William Brack <wbrack@mmm.com.hk>

	* libexslt/strings.c: Added code to mark the results of
	  str:tokenize and str:split as "function result" to avoid
	  garbage-collecting them during global variable initialisation.
	  Should fix bug #495995.

Wed Oct 24 17:41:08 PDT 2007 William Brack <wbrack@mmm.com.hk>

	* python/libxslt.c: changed iterator argument for Py_Dict_Next
	  from int to ssize_t (seems Python docs are incorrect) to fix
	  x86_64 bug #489854.

Wed Oct 10 16:33:09 CEST 2007 Daniel Veillard <daniel@veillard.com>

	* libexslt/date.c tests/exslt/date/datetime.1.out
	  tests/exslt/date/date.1.out tests/exslt/date/date.1.xml:
	  applied patch from Maurice van der Pot to fix EXSLT
	  week-in-year extenson which was not conforming to the definition.
	  This also changes the output of the tests a bit. Should fix #452876

Thu Aug 30 08:18:08 HKT 2007 William Brack <wbrack@mmm.com.hk>

	* python/libxslt.c: applied patch from Daniel Gryniewicz to
	  fix a segfault caused by a parameter array not being preset
	  to zero.

Thu Aug 23 17:18:03 CEST 2007 Daniel Veillard <daniel@veillard.com>

	* configure.in doc/*: preparing release of 1.1.22

Thu Aug 23 15:39:18 CEST 2007 Daniel Veillard <daniel@veillard.com>

	* libxslt/xslt.c: applied patch from Rob Richards to fix a 
	  stylesheet compilation error handling problem #382570

Thu Aug 23 15:22:55 CEST 2007 Daniel Veillard <daniel@veillard.com>

	* libxslt/security.c: applied patch from Roland Schwarz and Rob
	  Richards to fix the security file checks on Windows, should 
	  close #464432

Thu Aug 23 21:15:28 HKT 2007 William Brack <wbrack@mmm.com.hk>

	* tests/general/bug-165.[xsl,out,err], tests/docs/bug-165.xml,
	  tests/general/Makefile.am, tests/docs/Makefile.am:
	  added regression test for bug #469410

Thu Aug 23 14:13:02 CEST 2007 Daniel Veillard <daniel@veillard.com>

	* xsltproc/xsltproc.c: patch from Drazen Kacar to add a --encoding
	  option fixes #443868
	* doc/xsltproc.xml doc/xsltproc.1: augment and regenerate man page.
	
Thu Aug 23 11:47:20 CEST 2007 Daniel Veillard <daniel@veillard.com>

	* libexslt/date.c: apply patch from Björn Wiberg fixing build on AIX
	  and closing bug #332173

Fri Aug  3 15:49:26 CEST 2007 Daniel Veillard <daniel@veillard.com>

	* win32/Makefile.msvc win32/configure.js: apply patch from
	  Rob Richards to improve build with VS2005

Thu Jul 26 12:43:38 PDT 2007 William Brack <wbrack@mmm.com.hk>

	* libxslt/xslt.c: Removed the exclude-result-prefix change of
	  31 May 2007.  Fixes bug #459713.

Sat Jun 16 07:42:18 PDT 2007 William Brack <wbrack@mmm.com.hk>

	* libxslt/transform.c: Fixed problem with RVT cleanup related
	  to some exslt functions (reported on the list by Marc Adkins).

Wed Jun 13 13:27:48 PDT 2007 William Brack <wbrack@mmm.com.hk>

	* tests/exslt/common/node-set.9.[xml,xsl,out],
	  tests/exslt/common/Makefile.am: added test case for bug #413451

Tue Jun 12 18:43:05 CEST 2007 Daniel Veillard <daniel@veillard.com>

	* NEWS configure.in doc/*: preparing release of 1.1.21

Thu May 31 12:38:08 PDT 2007 William Brack <wbrack@mmm.com.hk>

	* libxslt/xslt.c: fixed obscure namespace problem related to
	  exclude-result-prefix

Mon May  7 00:14:28 HKT 2007 William Brack <wbrack@mmm.com.hk>

	* libxslt/transform.c: fixed minor compilation warning; no change
	  to logic.

Sun May  6 23:42:38 HKT 2007 William Brack <wbrack@mmm.com.hk>

	* libexslt/math.c: fixed two memory leaks, one in exsltMathConstant
	  and one in exsltMathConstantFunction (bug #436324)

Fri May  4 15:51:58 HKT 2007 William Brack <wbrack@mmm.com.hk>

	* libxslt/transform.c: fixed xpath context housekeeping problem
	  on processing "choose" (bug 435479).

Thu Apr 26 11:10:18 HKT 2007 William Brack <wbrack@mmm.com.hk>

	* libxslt/transform.c: fixed (another) problem with cached
	  RVT's (from re-opened #378766).

Tue Mar 27 16:50:52 CEST 2007 Daniel Veillard <daniel@veillard.com>

	* libxslt/xsltutils.c: apply patch fron Shaun McCance to hook
	  xsl:message construct to the new per-xsltTransformCtxt error
	  callback if set up.
	* Makefile.am: do not package svn files in releases

Fri Mar  2 18:45:48 HKT 2007 William Brack <wbrack@mmm.com.hk>

	* libxslt/xsltconfig.h.in: added setting of TRIO_REPLACE_STDIO
	  when TRIO routines are required.
	* libxslt/namespaces.c, libxslt/xsltutils.c: enhanced handling
	  of stdio.h vs. trio.h when trio routines are required (now
	  use XSLT_NEED_TRIO) (bug #412787)

Sun Feb 18 09:00:08 PST 2007 William Brack <wbrack@mmm.com.hk>

	* python/libxsl.py: fixed tab/space inconsistency with patch
	  provided by Andreas Hanke (bug #409193)

Thu Feb 15 14:03:18 PST 2007 William Brack <wbrack@mmm.com.hk>

	* doc/xslt.html: Changed all
	  references to CVS to be SVN; changed corresponding links.
	* doc/*html: regenerated the documentation for above

Wed Feb 14 01:21:38 PST 2007 William Brack <wbrack@mmm.com.hk>

	* libxslt/pattern.c: Fixed problem with namespace on compound
	  predicate (bug #407731)

Wed Jan 24 11:05:28 PST 2007 William Brack <wbrack@mmm.com.hk>

	* libxslt/pattern.c: added check for memory allocation error
	  (bug #400242); fixed "type-punned pointer" warnings.
	* libxslt/xsltutils.c: added checks for memory allocation error
	  (bug #400242)
	* restored NEWS, doc/EXSLT/downloads.html which mysteriously
	  disappeared from svn
	
Wed Jan 17 14:20:18 CET 2007 Daniel Veillard <daniel@veillard.com>

	* configure.in doc/*: preparing release of 1.1.20
	* libexslt/crypto.c: small patch for missing includes on some BSD,
	  fixes #397373
	* configure.in: replace == by = in test, raised by Roland Illig,
	  should fix #397371

Sun Jan 14 18:45:08 PST 2007 William Brack <wbrack@mmm.com.hk>

	* libxslt/functions.c: fixed two problems related to checking
	  of fragments, related to python htmlCtxtReadFile problem
	  reported on mailing list by Nic Ferrier.

Fri Jan 12 23:24:08 PST 2007 William Brack <wbrack@mmm.com.hk>

	* libxslt/extensions.c: reverted last change, fixed some
	  comments.  Note that in it's current state the 'plugin'
	  implementation will fail if called from a program
	  compiled as static!

Fri Jan 12 15:40:08 PST 2007 William Brack <wbrack@mmm.com.hk>

	* configure.in: fixed problem with DV/WMB testing env.
	* regenerated docs; doc/APIchunk1[012].html added to SVN
	* libxslt/extensions.c: fixed problem with plugin loading;
	  removed testplugin.c from SVN (current version kept as
	  tests/plugin/testplugin.c)

Thu Jan 11 11:08:18 PST 2007 William Brack <wbrack@mmm.com.hk>

	* libxslt/transform.c: enhanced to ignore empty text node
	  in xsltDefaultProcessOneNode (avoid calling xsltCopyText)
	  (bug #354900)
	* xsltproc/xsltproc.c: added check for output file problem,
	  yielding new error code 11 (Mike Hommey).
	* doc/xsltproc.html, doc/xsltproc.xml: added documentation
	  for above, regenerated docs (doc/xsltproc.1)

Wed Jan 10 19:13:08 PST 2007 William Brack <wbrack@mmm.com.hk>

	* libexslt/strings.c: added new function 'replace' from Joel
	  Reed.
	* tests/exslt/Makefile.am, replace.1.xml, replace.1.xsl,
	  replace.1.out: added new test case for above.
	* libxslt.spec.in: trivial change from 'Gnome' to 'GNOME'
	* configure.in: trivial change for flags on my compilations
	* libxslt/documents.c, libxslt/documents.h, libxslt/keys.c,
	  libxslt/keys.h, libxslt/variables.c, libxslt/templates.c,
	  libxslt/transform.c, libxslt/variables.c, libxslt/xslt.c,
	  libxslt/xsltutils.c: fixed some documentation/comments and
	  compilation warnings - no change to logic.
	* re-generated the documentation.

Wed Jan  3 16:46:05 CET 2007 Daniel Veillard <daniel@veillard.com>

	* configure.in: adapt the extra versioning code to SVN

Fri Dec 22 09:12:08 PST 2006 William Brack <wbrack@mmm.com.hk>

	* python/libxslt.c: applied patch supplied by Kjartan Maraas
	  (bug #388567).

Mon Dec 11 14:38:22 PST 2006 William Brack <wbrack@mmm.com.hk>

	* libexslt/functions.c: further enhancement to the original
	  fix for bug #381319 (which was not correct).
	* tests/exslt/functions: minor enhancement to function.9.xsl;
	  function.10.[xsl,xml,out] added to regression tests to check
	  recursive calls.

Mon Dec 11 12:13:14 CET 2006 Daniel Veillard <daniel@veillard.com>

	* configure python/generator.py python/libxsl.py
	  python/libxslt-python-api.xml python/libxslt.c
	  python/tests/2stage.py python/tests/loader.py: applied patch from
	  Nic James Ferrier to make stylesheets comparable and to add
	  transformContext handling

Sat Dec  9 15:22:34 PST 2006 William Brack <wbrack@mmm.com.hk>

	* libexslt/functions.c: changed handling of function params
	  to fix bug #381319
	* libxslt/transform.[ch]: exposed xsltLocalVariablePush and
	  xsltLocalVariablePop as global entries so that they could
	  be used from within libexslt/functions.c
	* tests/exslt/functions/function.9.[xsl,xml,out] added to
	  regression tests

Tue Dec  5 10:45:04 CET 2006 Daniel Veillard <daniel@veillard.com>

	* libxslt/extensions.c: applied patch from Marcus Meissner removing
	  a strict aliasing problem should fix #317921

Fri Dec  1 23:02:27 HKT 2006 William Brack <wbrack@mmm.com.hk>

	* libxslt/transform.c: fixed problem with housekeeping of
	  localRVTBase, bug #378766

Wed Nov 29 16:06:43 CET 2006 Daniel Veillard <daniel@veillard.com>

	* NEWS configure.in doc//*: preparing release of libxslt-1.1.19

Sat Nov 25 11:48:28 HKT 2006 William Brack <wbrack@mmm.com.hk>

	* libxslt/variables.c: fixed problem with cached RVT's,
	  bug #378766

Thu Nov 23 17:49:31 CET 2006 Daniel Veillard <daniel@veillard.com>

	* libxslt/transform.c: applied patch from Mike Hommey about saving
	  the current in-scope namespace list when calling a template, fixes
	  bug #377579

Thu Nov 23 15:36:28 CET 2006 Daniel Veillard <daniel@veillard.com>

	* configure.in: fix a python detection problem pointed out by 
	  Joseph Sacco, fixes bug #376391

Fri Nov 17 09:53:08 HKT 2006 William Brack <wbrack@mmm.com.hk>

	* libxslt/transform.c: fixed problem with entity handling
	  within xsltCopyAttrListNoOverwrite (#352907)
	* tests/general/bug-164.xsl, tests/general/bug-164.out,
	  tests/docs/bug-164.oxml: added a regression test for this

Thu Oct 26 15:31:01 CEST 2006 Daniel Veillard <daniel@veillard.com>

	* NEWS configure.in doc//*: preparing release of libxslt-1.1.18,
	  this bumps libxml2 requirement to 1.6.27
	* libexslt/date.c libxslt/namespaces.h libxslt/xslt.c 
	  libxslt/xsltInternals.h: cosmetic cleanups to restore the
	  API extraction

Thu Oct 26 10:36:43 CEST 2006 Daniel Veillard <daniel@veillard.com>

	* doc//*: removed all remaining references to the old Wiki

Thu Oct 12 23:12:24 HKT 2006 William Brack <wbrack@mmm.com.hk>

	* libexslt/date.c: fixed end-of-month problem in exsltDateCurrent
	  (#359246)

Thu Oct 12 14:39:37 CEST 2006 Daniel Veillard <daniel@veillard.com>

	* libxslt/preproc.c: applied patch from Mike Hommey fixing 2 
	  erroneous xmlFree() and adding a message on an unsupported feature

Wed Oct 11 23:16:10 CEST 2006 Daniel Veillard <daniel@veillard.com>

	* python/libxslt-python-api.xml: applied fix for accessor functions
	  of a stylesheet returning pointers to immutable strings, patch
	  from #320540
	* xsltproc/xsltproc.c: fix the xinclude on stylehseet problem
	  by adding a new parameter to xsltproc names --xincludestyle

Wed Oct 11 22:27:37 CEST 2006 Daniel Veillard <daniel@veillard.com>

	* xsltproc/xsltproc.c: apply patch from Gary Coady to compile when
	  libxml2 has no xinclude support #319886
	* docs/*: renamed Gnome to GNOME fixes #352159

Wed Oct 11 21:37:27 CEST 2006 Daniel Veillard <daniel@veillard.com>

	* libxslt/Makefile.am: a missing DESTDIR
	* python/Makefile.am: fix reference to build paths in python module
	* libexslt/exsltconfig.h.in libxslt/xsltconfig.h.in: fix the header
	  comments on version values, the 3 are patches from Peter
	  Breitenlohner   and should fix #340995

Wed Oct 11 11:16:34 CEST 2006 Daniel Veillard <daniel@veillard.com>

	* libxslt/security.c: applied cleanup patch from Mikhail Zabaluev
	  which should finish fixing #337486

Wed Oct 11 09:55:06 CEST 2006 Daniel Veillard <daniel@veillard.com>

	* libxslt/security.c: applied fix from Shane Corgatelli to pass
	  the full URL when checking security access for network URLs,
	  should fix bug #359366

Mon Aug 21 10:46:25 CEST 2006 Daniel Veillard <daniel@veillard.com>

	* doc/xslt.html python/tests/pyxsltproc.py xsltproc/xsltproc.c: 
	  applied patch from Daniel Leidert to fix some typo
	* xsltproc.xml xsltproc.1: applied another patch from Daniel Leidert
	  and regenerated

Wed Aug 16 17:39:04 CEST 2006 Daniel Veillard <daniel@veillard.com>

	* xsltproc/xsltproc.c: --xinclude should also force XInclude
	  processing on the stylesheets themselves, raised by Daniel Leidert

Thu Aug 10 15:54:02 CEST 2006 Kasimier Buchcik <libxml2-cvs@cazic.net>

	* libxslt/transform.c libxslt/variables.c
	  libxslt/xsltInternals.h: Fixed restoring the context doc
	  for XPath in xsltForEach(). Eliminated the use of @tmpDoc
	  of the transformation context.

Thu Aug 10 13:40:35 CEST 2006 Kasimier Buchcik <libxml2-cvs@cazic.net>

	* libxslt/preproc.c: Added missing QName-validation of some
	  attributes of XSLT-elements. This fixes bug #304921, reported
	  by Frans Englich.

Thu Aug 10 13:27:48 CEST 2006 Kasimier Buchcik <libxml2-cvs@cazic.net>

	* libxslt/transform.c: As suggested by Bill, I changed
	  xsltShallowCopyNsNode() to return an xmlNsPtr instead of
	  an int. The fix of bug #350085 is OK; i.e. the removal
	  of the call to xsltFreeRVTs() in
	  xsltApplyStylesheetInternal(). I think I tried to clear
	  the transformation context as much as possible, in case
	  it is reused; Daniel informed me on the list that reusing
	  the context is not intended, so no need anymore to try
	  to free the fragments immediately after the transformation.

Wed Aug  9 13:22:13 PDT 2006 William Brack <wbrack@mmm.com.hk>

	* libxslt/transform.c: Fixed problem with cleanup of RVT's, should
	  clear bug350085; cleaned up most warnings (still a problem in
	  xsltShallowCopyNsNode)
	* trivial warning cleanup in libxslt/[extensions.c, namespaces.c,
	  xslt.c and xsltInternals.h] and libexslt/functions.c

Fri Aug  4 14:50:41 CEST 2006 Daniel Veillard <daniel@veillard.com>

	* python/generator.py: fixed the conversion of long parameters

Wed Jul 19 15:06:39 EDT 2006 Daniel Veillard <daniel@veillard.com>

	* python/types.c: fix float and boolean XPath conversions
	* libxslt/xsltutils.c: try to fix Stephane Bidoul attempt
	  at setting XInclude support.

Mon Jul 17 11:15:23 PDT 2006 William Brack <wbrack@mmm.com.hk>

	* Updated tests affected by recent library changes -
	  tests/general/bug-1-.out, tests/general/bug-24-.out,
	  tests/keys/month.out : (<t></t> now becomes <t/>);
	  tests/general/bug-41-.xsl and tests/general/bug-43.xsl :
	  call-template and apply-template, where the template has
	  no parameter but one is supplied (var should not be affected)
	  tests/general/bug-145.err : changed error text
	  
Fri Jul 14 18:16:59 CEST 2006 Kasimier Buchcik <libxml2-cvs@cazic.net>

	* libxslt/attributes.c libxslt/documents.c
	  libxslt/functions.c libxslt/keys.c libxslt/namespaces.c
	  libxslt/pattern.c libxslt/preproc.c libxslt/templates.c
	  libxslt/templates.h libxslt/transform.c
	  libxslt/variables.c libxslt/xslt.c
	  libxslt/xsltInternals.h libxslt/xsltutils.c
	  libxslt/xsltutils.h libexslt/common.c libexslt/dynamic.c
	  libexslt/functions.c libexslt/strings.c:
	  Committing again, since I forgot to switch from win to linux
	  linebreaks in the files.
						    
Fri Jul 14 17:55:42 CEST 2006 Kasimier Buchcik <libxml2-cvs@cazic.net>

	* libxslt/attributes.c libxslt/documents.c
	  libxslt/functions.c libxslt/keys.c libxslt/namespaces.c
	  libxslt/pattern.c libxslt/preproc.c libxslt/templates.c
	  libxslt/templates.h libxslt/transform.c libxslt/variables.c
	  libxslt/xslt.c libxslt/xsltInternals.h libxslt/xsltutils.c
	  libxslt/xsltutils.h libexslt/common.c libexslt/dynamic.c
	  libexslt/functions.c libexslt/strings.c:
	  Refactored xsltValueOf(). Changed to use xmlXPathCastToString()
	  directly, rather than creating an intermediate object with
	  xmlXPathConvertString(). This now does not add a text-node to
	  the result if the string is empty (this has impact on
	  serialization, since an empty text-node is serialized as
	  <foo></foo>, and now it will be serialized as <foo/>).
	  Refactored other functions in transform.c:
	  Mostly code cleanup/restructuring. Minimized number of
	  function variables for instruction which eat up function stack
	  memory when recursing templates (xsltIf(), xsltChoose(),
	  xsltApplyTemplates(),  xsltCallTemplate()).
	  Changed XSLT tests to use xmlXPathCompiledEvalToBoolean().
	  Implemented redefinition checks at compilation-time and
	  eliminating them at transformation time in the refactored code
	  paths.
	  Introduced the field @currentTemplateRule on xsltTransformContext to
	  reflect the "Current Template Rule" as defined by the spec.
	  NOTE that ctxt->currentTemplateRule and ctxt->templ is not the
	  same; the former is the "Current Template Rule" as defined by the
	  XSLT spec, the latter is simply the template struct being
	  currently processed by Libxslt.
	  Added XML_COMMENT_NODE and XML_CDATA_SECTION_NODE to the macro
	  IS_XSLT_REAL_NODE.
	  Misc code cleanup/restructuring and everything else I already forgot.
	  Refactored lifetime of temporary result tree fragments.
	  Substituted all calls to the now deprecated xsltRegisterTmpRVT()
	  for the new xsltRegisterLocalRVT().
	  Fragments of xsl:variable and xsl:param are freed when the
	  variable/pram is freed.
	  Fragments created when evaluating a "select" of xsl:varible and
	  xsl:param are also bound to the lifetime of the var/param.
	  EXSLT's func:function now uses the following functions to let take
	  care the transformation's garbage collector of returned tree
	  fragments:
	    xsltExtensionInstructionResultRegister(),
	    xsltExtensionInstructionResultFinalize()
	  Fixes:
	  #339222 - xsl:param at invalid position inside an xsl:template is
	            not catched
	  #346015 - Non-declared caller-parameters are accepted
	  #160400 - Compiles invalid XSLT; unbound variable accepted
	  #308441 - namespaced parameters become unregistered
	  #307103 - problem with proximity position in predicates of match
	            patterns
	  #328218 - problem with exsl:node-set() when converting strings
	            to node sets
	  #318088 - infinite recursion detection
	  #321505 - Multiple contiguous CDATA in output
	  #334493 - "--param" option does not have root context
	  #114377 - weird func:result/xsl:variable/exsl:node-set interaction
	  #150309 - Regression caused by fix for 142768

Wed Jun 21 15:13:27 CEST 2006 Kasimier Buchcik <libxml2-cvs@cazic.net>

	* tests/docs/bug-54.xml tests/general/bug-54.out
	  tests/general/bug-99.out tests/general/bug-136.out
	  tests/REC/test-7.1.3.xsl tests/REC/test-7.1.4.xsl
	  tests/REC/test-7.3.xsl tests/REC/test-7.4.xsl:
	  Fixed incorrect regression tests/results.

Mon Jun 19 13:33:50 CEST 2006 Kasimier Buchcik <libxml2-cvs@cazic.net>

	* libxslt/attributes.c libxslt/attrvt.c libxslt/namespaces.c
	  libxslt/namespaces.h libxslt/preproc.c libxslt/templates.c
	  libxslt/transform.c libxslt/variables.c libxslt/xslt.c
	  libxslt/xsltInternals.h libxslt/xsltutils.c:
	  Merged all the namespace lookup/create/disable functions
	  into xsltGetSpecialNamespace(). Changed xsltGetNamespace()
	  and xsltGetPlainNamespace() to call xsltGetSpecialNamespace(),
	  but kept the ns-aliasing mechanism; the ns-aliasing needs
	  to be removed when we move to the refactored code, which
	  applies ns-alias only at compilaton time.
	  Refactored xsltElementComp() (preproc.c); enhanced error reports.
	  Fixed: if the "namespace" attribute was not given, then this
	  performed incorrectly only a lookup for a default namespace;
	  i.e., without taking any prefix on the "name" attribute into
	  account.
	  Refactored xsltElement() (transform.c); enhanced error reports.
	  Refactored xsltAttributeComp() (preproc.c). Added namespace
	  lookup as in xsltElementComp(). Enhanced error reports.
	  Refactored xsltAttribute() (transform.c); enhanced error reports.
	  xsltCopyTreeInternal(): eliminated the need to call xmlGetNsList()
	  for every element in the tree; this needs to be done only for
	  the top-most elements. For subsequent elements reconcile only
	  the ns-declarations. Disallowed setting of ns-declarations if
	  children have been already added to an element.
	  Removed ns-aliasing code where necessary.
	  xsltCopyProp(): disallowed setting of attribute nodes if
	  children have been already added to an element.
	  xsltCopy(): removed the incorrect skipping of attributes in the
	  XSLT namespace. Removed the incorrect ns-aliasing for attributes.
	  Changed to use the introduced function xsltShallowCopyAttr().
	  xsltShallowCopyAttr():  Centralized all attribute-copy related
	  code in this function. It will now be called by
	  xsltCopyTreeInternal(), xsltCopyOf() and xsltCopy().
	  xsltCopyAttrListNoOverwrite(): Renamed. Refactored. Optimized to
	  use xsltGetSpecialNamespace() and xmlNewDocProp().
	  Further substitution of various scattered namespace-lookup
	  related code for the use of xsltGetSpecialNamespace().
	  xsltAttrTemplateProcess(): Refactored. Removed the incorrect
	  processing of attribute-sets. Attribute sets need to be applied
	  before adding any normal attribute of the literal result element;
	  this is now done in  xsltAttrListTemplateProcess(). Fixed to
	  ensure that the ns-prefix of the overwriting attribute is used.
	  xsltAttrListTemplateProcess(): Refactored. Moved semantics from
	  xsltAttrTemplateProcess() over to this function in order to
	  optimize processing of multiple attributes. This does not call
	  xsltAttrTemplateProcess() anymore.
	  Fixed: do not exclude the XSLT namespace after ns-aliasing have
	  beed applied.
	  The IFDEFed-out refactored code fixes the following issues:
	  - #313711: namespace collision with namespace-alias (reported
	              by by Oleg Paraschenko)
	  - #338214: Incorrect scope for exclude-result-prefixes
	  - #341392: Excluding namespace declarations of literal result
	             elements.
	  - #341325: Namespace aliasing and resulting namespace prefixes
	  Already enabled fixes:
	  - #344183: xsl:copy misses to copy attributes in the XSLT namespace
	  - #341463: Namespace-alias using #default for result-prefix with no
	  	     default namespace in scope
	  - #313890: namespace collision with xsl:element and xsl:attribute,
	  	     reported by Oleg Paraschenko
	  - #344176: xsl:copy misses to set an element's namespace-URI in
	             some cases
	  - #305739: the "name" QName of xsl:element is incorrectly always
	  	     resolved to the default namespace

Mon Jun 12 16:34:15 CEST 2006 Daniel Veillard <daniel@veillard.com>

	* doc/xsltproc.1 doc/xsltproc.xml: more info about --output
	  from Daniel Leidert c.f. #344654

Tue Jun  6 17:16:33 CEST 2006 Daniel Veillard <daniel@veillard.com>

	* configure.in libxslt.spec.in doc//*: preparing release of 1.1.17

Tue Jun  6 11:44:34 CEST 2006 Kasimier Buchcik <libxml2-cvs@cazic.net>

	* libxslt/attributes.c: Eliminated a tiny difference wrt to
	  the old behaviour in the naming of newly generated ns-decls
	  in xsltAttributeInternal().

Thu Jun  1 15:06:31 CEST 2006 Daniel Veillard <daniel@veillard.com>

	* configure.in: fix a problem in Python detection

Thu Jun  1 13:58:19 CEST 2006 Kasimier Buchcik <libxml2-cvs@cazic.net>

	* libxslt/attributes.c libxslt/variables.c
	  libxslt/transform.c libxslt/xslt.c:
	  Next step in the refactored code: enhanced xsl:attribute;
	  enhanced xsltCopyProp.
	  Added the creation of an XPath cache in
	  xsltNewTransformContext().

Wed May 31 22:32:44 CEST 2006 Kasimier Buchcik <libxml2-cvs@cazic.net>

	* libxslt/transform.c: Fixed a difference in processing of
	  xsl:value-of and  xsl:text wrt to merging of strings of
	  output-escaped text-nodes. This difference made the
	  optimized string-merging mechanism run out of sync, which
	  led to segfaults in subsequent string reallocations. See
	  bug #343411, reported by Grzegorz Kaczor.
	* xslt.c: Added check for ctxt->internalized when we parse
	  xsl:text and internalize the strings.

Mon May 22 10:32:57 CEST 2006 Kasimier Buchcik <libxml2-cvs@cazic.net>

	* libxslt/attributes.c libxslt/documents.c
	  libxslt/extensions.c libxslt/keys.c libxslt/pattern.c
	  libxslt/preproc.c libxslt/templates.c
	  libxslt/transform.c libxslt/variables.c
	  libxslt/xslt.c libxslt/xsltInternals.h:
	  Next tiny step of refactoring - mostly bug fixes and
	  cosmetic changes.
	  Changes outside of the refactored code:
	  1) Optimized xsl:attribute if the content consists of
	   just 1 text node.
	  2) Optimized computation of xsl:key. The keys will now be
	   computed for a specific document not until the first call
	   of a key() function; here only the keys with the specific
	   name used by key() are computed. This means that this
	   now avoids computation of all keys for all loaded
	   input documents (even if no key() was called on them).
	   One exception is the scenario where a key() is used in
	   a template's match pattern; in this case all keys are
	   computed for a document if there's a chance that
	   a "keyed" template could match a node (this could still
	   be optimized a bit).

Mon May 15 22:32:13 CEST 2006 Kasimier Buchcik <libxml2-cvs@cazic.net>

	* libxslt/namespaces.c libxslt/attributes.c:
	  Fixed bug #302020, reported by Thomas Blatter.

Fri May 12 23:23:06 CEST 2006 Kasimier Buchcik <libxml2-cvs@cazic.net>

	* libxslt/documents.c libxslt/namespaces.c
	  libxslt/preproc.c libxslt/transform.c
	  libxslt/xslt.c libxslt/xsltInternals.h libxslt/xsltutils.c:
	  Next step of refactoring. For more details see bug #341588.
	  I applied the suggestion of Jerome Pesenti to the refactored
	  (still IDFEDed out with XSLT_REFACTORED) code: The XPath
	  compilation context (accessible via the compilation context)
	  is now reused for compilation of expressions at
	  compilation-time; this should reduce compilation time to 50%
	  for avarage stylesheets.

Thu May 11 22:12:22 CEST 2006 Kasimier Buchcik <libxml2-cvs@cazic.net>

	* libxslt/extensions.c: Changed a comment to indicate that a
	  specific bug was already fixed.
	  
Fri May  5 23:10:47 CEST 2006 Kasimier Buchcik <libxml2-cvs@cazic.net>

	* libxslt/xsltInternals.h libxslt/attributes.c
	  libxslt/documents.c libxslt/extensions.c
	  libxslt/extensions.h libxslt/functions.c
	  libxslt/imports.c libxslt/keys.c libxslt/preproc.c
	  libxslt/transform.c libxslt/variables.c libxslt/xslt.c
	  libxslt/xsltutils.c libxslt/xsltutils.h libexslt/functions.c:
	  Next step of refactoring (plus some bug-fixes).
	  For more details see #340780.

Fri May  5 14:31:53 CEST 2006 Kasimier Buchcik <libxml2-cvs@cazic.net>

	* tests/exslt/common/node-set.5.out
	  tests/exslt/sets/difference.1.out
	  tests/exslt/functions/function.6.out: Reverting the
	  changes; I'll rather change the processing stylesheet
	  documents in a way that they will produce the same results
	  for broken and stricter whitespace-stripping.

Thu May  4 22:55:26 CEST 2006 Kasimier Buchcik <libxml2-cvs@cazic.net>

	* tests/exslt/common/node-set.5.out
	  tests/exslt/sets/difference.1.out
	  tests/exslt/functions/function.6.out: Changed regression test
	  results (bug #340684). Those will now produce regression
	  errors; so we need to fix the processor.

Mon May  1 17:39:27 EDT 2006 Daniel Veillard <daniel@veillard.com>

	* configure.in NEWS doc//*: preparing release of 1.1.16, updated and
	  regenerated the docs.

Tue Apr 25 15:02:42 CEST 2006 Daniel Veillard <daniel@veillard.com>

	* configure.in: applied patch from Joseph Sacco changing slightly
	  the python detection scheme should fix bug #338527

Wed Apr 12 13:35:45 CEST 2006 Kasimier Buchcik <libxml2-cvs@cazic.net>

	* libxslt/attributes.c libxslt/preproc.c libxslt/transform.c
	  libxslt/variables.c libxslt/xslt.c libxslt/xsltInternals.h
	  libxslt/xsltutils.c libxslt/xsltutils.h:
	  Refactored the internal structures into specialized
	  structures and adjusted the code to work with those new
	  structures. I didn't yet (we should in the future)
	  renamed any fields of the old structures in order to avoid
	  changing too much code.
	  Introduced the internal structure xsltCompilerCtxt to be
	  used for storage and control of the compilation.
	  Optimized the way lists of in-scope namespaces are created
	  and stored; this will now only generate a new list if
	  really needed, i.e. if we encounter a ns-decl.
	  All this changes here are IFDEFed out with XSLT_REFACTORED.
	  
Thu Apr  6 10:16:59 CEST 2006 Daniel Veillard <daniel@veillard.com>

	* doc/xsltproc.1 doc/xsltproc.xml: applied man page improvement
	  from Daniel Leidert

Thu Mar 30 17:23:52 CEST 2006 Kasimier Buchcik <libxml2-cvs@cazic.net>

	* tests/general/bug-36-inc.xsl tests/general/bug-37-inc.xsl
	  tests/general/bug-65-inc.xsl tests/general/bug-100.xsl
	  tests/REC/test-15-1.xsl tests/REC/test-7.1.1-3.xsl
	  tests/namespaces/extra2.xsl tests/extensions/module.xsl
	  tests/plugins/plugin.xsl python/tests/extelem.py
	  python/tests/extfunc.py: Fixed regression tests wrt
	  usage of the attributes "exclude-result-prefixes"
	  and "extension-element-prefixes". test-7.1.1-3.xsl fails
	  now, since the code still does not exclude ns-decls
	  correctly.

Thu Mar 30 17:11:53 CEST 2006 Kasimier Buchcik <libxml2-cvs@cazic.net>

	* libxslt/xslt.c libxslt/xsltutils.c libxslt/preproc.c
	  libxslt/namespaces.c libxslt/imports.c
	  libxslt/attributes.c: Eliminated usage of xsltGetNsProp() in cases
	  where an attribute with a specific namespace is requested.
	  xsltGetNsProp() uses xmlGetProp() which is not namespace aware
	  and thus will return the first attribute with the requested
	  name but of arbitrary namespace.
	  Changed retrieval of the attributes "exclude-result-prefixes"
	  and "extension-element-prefixes", which are expected to be in
	  no namespace on XSLT elements and in the XSLT namespace on
	  literal result elements or extension elements.
	  Additional change: for XSLT elements the attribute
	  "exclude-result-prefixes" is only allowed on xsl:stylesheet
	  and xsl:transform. This attribute was previously processed on
	  all XSLT elements.

Wed Mar 29 12:16:41 CEST 2006 Daniel Veillard <daniel@veillard.com>

	* libxslt/transform.c: Charles Hardin pointed an OOM condition where
	  a NULL pointer could be dereferenced, closes #336394

Fri Mar 10 12:49:18 CET 2006 Daniel Veillard <daniel@veillard.com>

	* libexslt/crypto.c libexslt/date.c libexslt/saxon.c
	  libxslt/attributes.c libxslt/imports.c libxslt/pattern.c
	  libxslt/preproc.c libxslt/transform.c libxslt/variables.c
	  libxslt/xslt.c libxslt/xsltutils.c: various assorted small cleanups
	  based on the Coverity reports

Wed Feb 22 16:09:10 CET 2006 Daniel Veillard <daniel@veillard.com>

	* python/types.c: Nic Ferrier found debug statement left in the
	  XPath conversion code

Tue Feb 21 20:21:07 CET 2006 Daniel Veillard <daniel@veillard.com>

	* doc/xsltproc.1 doc/xsltproc.xml: new update from Daniel Leidert

Tue Feb 21 17:59:11 CET 2006 Daniel Veillard <daniel@veillard.com>

	* libxslt/extensions.c libxslt/xslt.c libxslt/xslt.h
	  libxslt/xsltInternals.h: applied patch from Christopher R. Palmer
	  to avoid a race condition in xsltInit()

Sun Feb 19 22:40:58 CET 2006 Daniel Veillard <daniel@veillard.com>

	* doc/xsltproc.1 doc/xsltproc.xml: improvement of the man page
	  by Daniel Leidert, c.f. #331779

Sat Feb 11 13:10:01 CET 2006 Daniel Veillard <daniel@veillard.com>

	* libxslt/xsltutils.c: fix xsltSaveResultToString comment
	* libxslt/transform.c: detect loops when computing variables, should
	  fix bug #330772
	* doc/xsltproc.xml doc/xsltproc.1: fix typo in man page
	* tests/namespaces/tst7.out tests/general/bug-152.out: small output
	  changes due to libxml2 xhtml meta handling modification

Mon Nov 21 12:22:21 CET 2005 Daniel Veillard <daniel@veillard.com>

	* libexslt/date.c: Albert Chin found another signed/unsigned problem
	  in the date and time code raised on IRIX 6.5

Mon Nov 21 12:08:05 CET 2005 Daniel Veillard <daniel@veillard.com>

	* libexslt/crypto.c: patch from Albert Chin needed for HP-UX
	  which doesn't have <sys/select.h>

Mon Nov 21 12:05:41 CET 2005 Daniel Veillard <daniel@veillard.com>

	* libexslt/date.c: Albert Chin posted a patch to fix a problem on
	  Solaris with dates, extended bitfield size too to match libxml2
	  code from xmlschemastypes.c

Wed Nov 16 12:47:25 CET 2005 Daniel Veillard <daniel@veillard.com>

	* libexslt/functions.c: fix an problem raised by Ralf Junker in the
	  use of xmlHashScanFull() fixes bug #321582
	
Sun Nov  6 19:22:45 CET 2005 Daniel Veillard <daniel@veillard.com>

	* libxslt/attrvt.c: added a missing parameter to a debug function

Tue Oct  4 20:37:09 HKT 2005 William Brack <wbrack@mmm.com.hk>

	* libexslt/date.c: applied fix to date:week-in-year posted to
	  the mailing list by Thomas Broyer
	* tests/exslt/date/date.1.out, tests/exslt/date/datetime.1.out:
	  updated to reflect above fix

Sun Oct  2 11:52:44 CEST 2005 Daniel Veillard <daniel@veillard.com>

	* configure.in libxslt/Makefile.am libxslt/xsltconfig.h.in
	  libxslt.spec.in tests/plugins/Makefile.am xslt-config.in: applied
	  patch from Joel Reed to ease plugin integration

Thu Sep 22 21:51:22 HKT 2005 William Brack <wbrack@mmm.com.hk>

	* libxslt/pattern.c: fixed problem in internal XPath compilation
	  of patterns including variables, fixes #316861

Wed Sep 14 14:30:03 CEST 2005 Daniel Veillard <daniel@veillard.com>

	* libxslt/transform.c: removed a superfluous second sorting of
	  the node set on xsl:copy-of, fixes #316288
	* libxslt/xsltutils.c: marked xsltDocumentSortFunction as slow,
	  obsolete and deprecated :-)

Sat Sep 10 14:35:06 CEST 2005 Daniel Veillard <daniel@veillard.com>

	* configure.in: check environment for PYTHON, fixes #315367

Mon Sep  5 00:44:24 CEST 2005 Daniel Veillard <daniel@veillard.com>

	* configure.in NEWS doc/*: preparing release 1.1.15
	* libxslt/pattern.c libxslt/xsltutils.c: a bit more cleanup

Mon Sep  5 00:07:40 CEST 2005 Daniel Veillard <daniel@veillard.com>

	* libxslt/pattern.c: fixed #303289 variable in match are forbidden
	* tests/general/bug-89.xsl: had to fix that test which was doing this
	* tests/general/bug-142.out tests/general/bug-152.out
	  tests/namespaces/tst7.out: small output change on libxml2-2.6.21
	  new way of serializing encoding meta in HTML

Wed Aug 31 13:49:51 CEST 2005 Daniel Veillard <daniel@veillard.com>

	* libxslt/transform.c: fixed #314936 a dictionnary issue on text
	  node merging, which probably fixed #311267 too.

Thu Aug 25 13:29:20 CEST 2005 Daniel Veillard <daniel@veillard.com>

	* libxslt/xslt.c: libxslt should deallocate directly text node content
	  use xmlSetNodeContent(..., NULL)

Fri Aug 12 12:17:10 CEST 2005 Daniel Veillard <daniel@veillard.com>

	* tests/general/bug-163.*, tests/general/Makefile.am,
	  tests/docs/bug-163.*, tests/docs/Makefile.am: check fix for
	  #310692

Tue Aug  9 22:13:18 CEST 2005 Daniel Veillard <daniel@veillard.com>

	* tests/plugins/Makefile.am: try to get rid of complaints from
	  jhbuild newbies.

Sun Aug  7 16:04:47 CEST 2005 Daniel Veillard <daniel@veillard.com>

	* libxslt/xsltutils.c: fixed a bug when size of xmlXPathContext
	  changes, uses the libxml2 alloc and dealloc functions instead.

Tue Jul 13 22:41:03 PDT 2005 William Brack <wbrack@mmm.com.hk>

	* libxslt/transform.c: added check in xsltCopyText to assure
	  content is in dictionary before doing a straight copy of
	  content (bug 302821)

Tue Jul 13 16:16:31 PDT 2005 William Brack <wbrack@mmm.com.hk>

	* libxslt/transform.c: fixed to set current default value for
	  XInclude when creating new TransformContext
	* libxslt/xslt.c: minor change for per-mille

Sun Jul 10 16:17:53 CEST 2005 Daniel Veillard <daniel@veillard.com>

	* libxslt/xsltwin32config.h*: try to avoid generating conflicts
	* libexslt/dynamic.c: applied patch from Mark Vakoc to implement
	  dyn:map
	* configure.in tests/exslt/Makefile.am tests/exslt/dynamic/*:
	  added test for dyn:map to the regression suite

Sat Jul  2 02:32:24 PDT 2005 <wbrack@mmm.com.hk>

	* libxslt/numbers.c: further fixes for bug 309209, changing
	  behaviour of format-number.
	* libxslt/xslt.c: changed definition of per-mille character from
	  '?' to Unicode #2030 (UTF-8 'â°') (ref XSLT spec 12.3)
	  
2005-06-30  Federico Mena Quintero  <federico@ximian.com>

	* libxslt/xsltwin32config.h: Added this file back.  We'll have to
	figure out a way to make jhbuild not get CVS conflicts with it.

Thu Jun 30 14:09:55 PDT 2005 William Brack <wbrack@mmm.com.hk>

	* libxslt/numbers.c: fixed bug in negative prefix (bug 309209)
	
2005-06-17  Federico Mena Quintero  <federico@ximian.com>

	* libxslt/xsltwin32config.h: Removed from CVS; this is a generated
	file anyway and it breaks jhbuild all the time.

Sat May  7 11:28:41 CEST 2005 Daniel Veillard <daniel@veillard.com>

	* libexslt/libexslt.3: applied patch from Jonathan Wakely to fix
	  the namespace name for the EXSLT date and time functions in the man
	  page.

Wed Apr  6 23:58:12 CEST 2005 Igor Zlatkovic <igor@zlatkovic.com>

	* libexslt/exslt.c libexslt/libexslt.h: Windows build cleanups,
	  removed obsolete checks
	* libxslt/libxslt.h libxslt/win32config.h libxslt/xsltutils.h: 
	  Windows build cleanups, removed obsolete checks
	* win32/configure.js: removed obsolete copy operations
	* win32/Makefile.*: make install cleanup
	* xsltproc/xsltproc.c: Windows build cleanup, removed obsolete 
	  macro definitions
	* .cvsignore: added Eclipse project files

Sat Apr  2 13:34:11 CEST 2005 Daniel Veillard <daniel@veillard.com>

	* configure.in NEWS doc/*: preparing release of 1.1.14, updated docs
	  and rebuilt.

Thu Mar 31 23:50:43 CEST 2005 Daniel Veillard <daniel@veillard.com>

	* tests/docbook/result/fo/gdp-handbook.fo tests/general/bug-105.out
	  tests/general/bug-142.out: updated the result of some tests
	  following the change to serailization in libxml2.

Thu Mar 31 11:54:31 CEST 2005 Daniel Veillard <daniel@veillard.com>

	* libxslt/pattern.c: fixed bug #171488 with cascading select in
	  patterns.
	* tests/general/bug-161.*, tests/general/Makefile.am,
	  tests/docs/bug-161.*, tests/docs/Makefile.am: added test provided
	  by Ben Ko
	
Thu Mar 31 00:28:38 CEST 2005 Daniel Veillard <daniel@veillard.com>

	* tests/plugins/Makefile.am: fixed build outside of source tree
	  bug #172155 thanks to patch from Mike Castle

Wed Mar 30 14:09:19 CEST 2005 Daniel Veillard <daniel@veillard.com>

	* xsltproc/xsltproc.c: fixed the xinclude problem with document()
	  as in bug #171893
	* configure.in tests/Makefile.am tests/xinclude/*: added a new
	  xinclude directory with the test for this problem

Wed Mar 30 11:59:06 CEST 2005 Daniel Veillard <daniel@veillard.com>

	* libxslt/pattern.c: fixed bug 169718 with ancestors in patterns
	  similar to same bug fixed in libxml2
	* tests/general/bug-160.*, tests/general/Makefile.am,
	  tests/docs/bug-160.*, tests/docs/Makefile.am: added test provided
	  by Aaron Kaplan

Tue Mar 29 22:35:14 CEST 2005 Daniel Veillard <daniel@veillard.com>

	* tests/general/bug-159.*, tests/general/Makefile.am,
	  tests/docs/bug-159.*, tests/docs/Makefile.am: added test for
	  bug #168196 fixed in libxml2

Tue Mar 29 21:06:11 CEST 2005 Daniel Veillard <daniel@veillard.com>

	* libxslt/transform.c: working around Mark Vakoc' reported bug related
	  to mode internaing
	* xsltproc/xsltproc.c: adding a --nodict mode to check problems with
	  document without a dictionnary.
	* tests/REC/Makefile.am tests/general/Makefile.am: testing without 
	  dictionnary

Tue Mar 29 15:37:13 CEST 2005 Daniel Veillard <daniel@veillard.com>

	* libxslt/xslt.c: fix bug #165201 when calling xsltInit() multiple
	  times.

Tue Mar 29 15:13:59 CEST 2005 Daniel Veillard <daniel@veillard.com>

	* libxslt/preproc.c libxslt/xslt.c libxslt/xsltInternals.h: 
	  added DTD like checking when compiling stylesheets, closes
	  bug #160402 and a long term TODO
	* tests/general/bug-89.xsl: thos spotted a misconstruct of one
	  of the test cases where <xsl:when> was not within <xsl:choose>

Mon Mar 21 20:56:43 MST 2005 John Fleck (jfleck@inkstain.net)

	* doc/xsltproc.xml, xsltproc.html, xsltproc.1:
	update documentation to reflect addition of --nodtdattr
	command line flag. Bug #171098

Wed Mar 16 17:19:24 HKT 2005 William Brack (wbrack@mmm.com.hk)

	* libxslt/xslt.c: fixed problem with text node on stylesheet
	  document without a dictionary (bug 170533)

Sun Mar 13 20:08:34 CET 2005 Daniel Veillard <daniel@veillard.com>

	* NEWS configure.in doc/*: preparing 1.1.13, updated and rebuilt
	  the docs.
	* tests/plugins/Makefile.am xsltproc/Makefile.am: trying to fix
	  some build problems.
	* libxslt.spec.in: adding a build require and a require for 
	  libgcrypt-devel, c.f. Red Hat bug #133211
	* libxslt/xsltInternals.h: as for libxml2, XML_CAST_FPTR was wrong.

Wed Feb 23 19:25:13 HKT 2005 William Brack <wbrack@mmm.com.hk>

	* libxslt/pattern.c: fixed a problem with '//' and
	  namespaces (bug 168208)

Mon Feb 14 23:10:21 HKT 2005 William Brack <wbrack@mmm.com.hk>

	* libxslt/namespaces.c: fixed a problem with
	  exclude-result-prefixes (bug 165560)

Mon Feb 14 12:51:07 CET 2005 Daniel Veillard <daniel@veillard.com>

	* libxslt/variables.c: added a cretion of ctxt->globalVars in
	  xsltProcessUserParamInternal if missing.

Wed Feb  9 21:58:56 CET 2005 Daniel Veillard <daniel@veillard.com>

	* doc/Makefile.am doc/libxslt-api.xml doc/libxslt-refs.xml 
	  doc/EXSLT/libexslt-api.xml: applied patch for make wiki from
	  Joel Reed and rebuild
	* tests/plugins/Makefile.am: fix from Joel Reed for make dist

Sun Jan 30 20:01:21 CET 2005 Daniel Veillard <daniel@veillard.com>

	* tests/plugins/testplugin.c win32/Makefile.msvc win32/configure.js:
	  applied plugin patch for Windows by Joel Reed

Fri Jan 28 01:00:56 CET 2005 Daniel Veillard <daniel@veillard.com>

	* win32/configure.js: Makefile fixes for Widows from Joel Reed

Sat Jan 22 22:14:26 CET 2005 Daniel Veillard <daniel@veillard.com>

	* libxslt/pattern.c libxslt/preproc.c libxslt/templates.c
	  libxslt/xslt.c libxslt/xsltInternals.h: chasing xmlStrEqual
	  calls and removed them when comparing mode and modeURI for
	  templates by interning those strings when compiling the
	  stylesheets.

Sat Jan 22 19:17:13 CET 2005 Daniel Veillard <daniel@veillard.com>

	* configure.in: small fix for local setup
	* libxslt/transform.c libxslt/variables.c : speeding up some
	  variable lookup. In the process dug out something nasty about
	  ctxt->dict creation and key initialization order.

Sat Jan 22 16:28:27 CET 2005 Daniel Veillard <daniel@veillard.com>

	* libxslt/templates.c libxslt/transform.c libxslt/xslt.c
	  libxslt/xsltInternals.h: when copying text nodes in elements
	  or attributes to the output, if interning, then reuse the strings
	  directly without copying them in the output tree if dicts are
	  shared between the context and the output docs. Less allocations
	  smaller output document and no copying involved anymore.

Sat Jan 22 11:24:43 CET 2005 Daniel Veillard <daniel@veillard.com>

	* libxslt/xslt.c: internalize all text node content from
	  stylesheet documents with the stylesheet dictionnary

Fri Jan 21 12:04:18 HKT 2005 William Brack <wbrack@mmm.com.hk>

	* tests/plugins/Makefile.am: Applied patch 11 (with small
	  modification) from Joel

Thu Jan 20 21:05:27 CET 2005 Daniel Veillard <daniel@veillard.com>

	* tests/plugins/Makefile.am tests/plugins/testplugin.c: applied
	  patch 10 from Joel Reed

Wed Jan 19 10:08:55 HKT 2005 William Brack <wbrack@mmm.com.hk>

	* libxslt/xsltwin32config.h, libxslt/xsltwin32config.h.in:
	  fixed a small error in LIBXSLT_VERSION_EXTRA pointed out
	  by Michael.Hewarth on the mailing list
	 
Wed Jan 19 13:58:16 CET 2005 Daniel Veillard <daniel@veillard.com>

	* configure.in: patch #9 from Joel Reed

Wed Jan 19 10:21:37 HKT 2005 William Brack <wbrack@mmm.com.hk>

	* transform.c: fixed problem with parserOptions not being
	  set before loading a new document (bug 164530)

Mon Jan 17 16:50:02 CET 2005 Daniel Veillard <daniel@veillard.com>

	* configure.in libxslt/Makefile.am libxslt/xsltwin32config.h
	  tests/Makefile.am tests/plugins/Makefile.am
	  tests/plugins/testplugin.c: applied another patch from Joel Reed
	  still failing here but looking better

Sun Jan 16 00:09:11 CET 2005 Daniel Veillard <daniel@veillard.com>

	* libxslt/extensions.c: applied another patch from Joel Reed

Sat Jan 15 13:54:28 CET 2005 Daniel Veillard <daniel@veillard.com>

	* tests/plugins/plugin.* tests/Makefile.am libxslt/extensions.c
	  libxslt/Makefile.am configure.in: Applied another patch from
	  Joel Reed, fixed a segfault and changed the configure code
	  a bit to work in my debug environment.

Tue Jan 11 10:50:33 HKT 2005 William Brack <wbrack@mmm.com.hk>

	* configure.in: added python2.4 to the list of accepted
	  versions (bug 163274)

Sun Jan  9 17:04:23 CET 2005 Daniel Veillard <daniel@veillard.com>

	* libxslt/extensions.c: oops previous patch could break build

Sun Jan  9 16:41:59 CET 2005 Daniel Veillard <daniel@veillard.com>

	* configure.in win32/configure.js libxslt/extensions.c
	  libxslt/xsltconfig.h.in libxslt/xsltwin32config.h.in:
	  integrated the module patch from Joel Reed with just a couple
	  of changes and cleanup.

Tue Dec 27 17:50:10 HKT 2004 William Brack <wbrack@mmm.com.hk>

	* libxslt/pattern.c: fixed a problem with the expression
	  "*//name" (bug 162265), also a small problem with the '|'
	  operator.

Thu Dec 23 16:04:47 HKT 2004 William Brack <wbrack@mmm.com.hk>

	* libxslt/transform.c, libxslt/templates.c: fixed a couple of
	  spots where out-of-memory errors were not detected in time
	  (bug #153660 on OSF/1)
	  
Thu Dec  2 21:10:31 HKT 2004 William Brack <wbrack@mmm.com.hk>

	*doc/xslt.html, doc/downloads.html: changed the download link
	 on the web page for cvs snapshot
	 
Wed Dec  1 22:37:55 HKT 2004 William Brack <wbrack@mmm.com.hk>

	* libxslt/extensions.c, libxslt/functions.c, libxslt/numbers.c,
	  libxslt/pattern.c, libxslt/transform.c, libxslt/xslt.c,
	  libxslt/xsltInternals.h: minor changes to get rid of gcc
	  warnings, especially on 64-bit system. Implemented
	  XML_CAST_FPTR macro to cast between function pointer <->
	  object pointer while avoiding gcc warnings (a hack).
	  No change to the logic.

Wed Dec  1 10:47:15 CET 2004 Daniel Veillard <daniel@veillard.com>

	* libxslt/security.c xsltproc/xsltproc.c: applied patch from
	  Aleksey Gurtovoy moving some stat() definition for Windows
	  to the right place.

Wed Dec  1 14:30:22 HKT 2004 William Brack <wbrack@mmm.com.hk>

	* libxslt/xslt.c: applied patch from Mark Vakoc fixing bug with
	  namespace URI on template names.
	* tests/namespaces/tst9*, tests/namespaces/Makefile.am: added
	  test case for this

Tue Nov 30 10:53:18 HKT 2004 William Brack <wbrack@mmm.com.hk>

	* libxslt/pattern.c: more on RVT's in XPath predicates, this
	  time for bug 159726.  Cleaned up the logic a little, hopefully
	  now covers all setting of XSLT_RUNTIME_EXTRA.
	* tests/general/bug-158.xsl: corrected a typo

Thu Nov 25 22:24:03 HKT 2004 William Brack <wbrack@mmm.com.hk>

	* libxslt/variables.c, libxslt/xsltInternals.h: backed out the
	  last change and re-did it the "right way" (bug 158372).
	* tests/general/bug-158.*, tests/general/Makefile.am,
	  tests/docs/bug-158.*, tests/general/Makefile.am: added test
	  case for this bug

Wed Nov 24 10:51:51 HKT 2004 William Brack <wbrack@mmm.com.hk>

	* libxslt/variables.c, libxslt/xsltInternals.h: enhanced the
	  evaluation of global variables to take account of possible
	  changes to the current document (bug 158372).
	  
Mon Nov 22 08:10:18 HKT 2004 William Brack <wbrack@mmm.com.hk>

	* libxslt/pattern.c: small change to previous fix for bug 153137,
	  fixes bug 158840.
	* tests/general/bug-157.*, tests/general/Makefile.am,
	  tests/docs/bug-157.*, tests/docs/Makefile.am: added test for this

Sun Nov 21 09:42:22 HKT 2004 William Brack <wbrack@mmm.com.hk>

	* libxslt/transform.c: enhanced code to assure the "current
	  template rule" is not changed by xsl:call-template (bug 157859).
	* tests/general/bug-156.*, tests/general/Makefile.am,
	  tests/docs/bug-156.*, tests/docs/Makefile.am: added a test case
	  
Mon Nov  8 11:41:32 HKT 2004 William Brack <wbrack@mmm.com.hk>

	* libexslt/date.c: fixed problem with day-of-week-in-month
	  (bug 157592) with patch from Sal Paradise
	* tests/exslt/date/datetime.1.out: corrected expected output
	  after above fix

Mon Nov  1 15:57:24 CET 2004 Daniel Veillard <daniel@veillard.com>

	* tests/general/bug-155.*, tests/general/Makefile.am,
	  tests/docs/bug-155*, tests/docs/Makefile.am: added a test case
	  provided by Markus Bertheau breaking on libxml2-2.6.15

Fri Oct 29 17:03:26 CEST 2004 Daniel Veillard <daniel@veillard.com>

	* configure.in NEWS doc/*: preparing release of libxslt-1.1.12
	* libexslt/crypto.c: mini change to avoid breaking apibuild.py
	* libxslt/templates.c: small fix, first step in adressing #153660

Fri Oct 29 14:18:35 CEST 2004 Daniel Veillard <daniel@veillard.com>

	* doc/xsltproc.1 doc/xsltproc.xml: indicate - means stdin closing
	  #156626

Wed Oct 27 17:00:54 CEST 2004 Daniel Veillard <daniel@veillard.com>

	* libxslt/transform.c: another dictionnary/string interning fix

Wed Oct 27 00:00:07 CEST 2004 Daniel Veillard <daniel@veillard.com>

	* libxslt/transform.c: fix to force string interning on generated
	  documents

Sat Oct 23 09:36:12 PDT 2004 William Brack <wbrack@mmm.com.hk>

	* libexslt/crypto.c, libexslt/functions.c, libxslt/keys.c,
	  libxslt/numbers.c, libxslt/pattern.c, libxslt/transform.c,
	  libxslt/variables.c: changed some variable names for warning
	  cleanup when -ansi flag is not present.
	* libxslt/namespaces.c: fixed potential NULL pointer reference
	  pointed out by Dennis Dams (bug 156187)

Mon Oct 18 17:04:27 CEST 2004 Daniel Veillard <daniel@veillard.com>

	* libxslt.spec.in doc/Makefile.am: fix for RedHat bug #136072
	  to include EXSLT doc in libxslt package.

Thu Oct 14 22:43:22 PDT 2004 William Brack <wbrack@mmm.com.hk>

	* configure.in, config.h.in, libexslt/date.c: changed date.c to use
	  gmtime_r if available (bug 129983)
	* libexslt/functions.c: fixed a namespace problem concerning a
	  function with a namespace-qualified name (bug 155197)

Tue Oct 12 03:54:44 CEST 2004 Daniel Veillard <daniel@veillard.com>

	* libxslt/namespaces.c: fixed a bug in namespace lookup exhibited
	  by the recent namespace tests in libxml2

Thu Oct  7 16:15:15 CEST 2004 Daniel Veillard <daniel@veillard.com>

	* libxslt/transform.c: fixed a problem of tree structure raised
	  by the new libxml2 tree checking code.

Thu Sep 30 11:28:03 PDT 2004 William Brack <wbrack@mmm.com.hk>

	* libexslt/date.c: fixed problem with negative periods
	  (bug 154021)
	* tests/exslt/date/sum.2.out: changed expected output, now
	  agrees with comments in sum.2.xml test data file
	  
Thu Sep 30 08:19:28 CEST 2004 Daniel Veillard <daniel@veillard.com>

	* libxslt/templates.c: patch from Mark Vakoc about an incorrect
	  attribute document pointer.

Thu Sep 30 08:13:57 CEST 2004 Daniel Veillard <daniel@veillard.com>

	* doc/tutorial2/libxslt_pipes.*: updated the tutorial from Panagiotis
	  Louridas

Thu Sep 30 00:10:09 CEST 2004 Daniel Veillard <daniel@veillard.com>

	* configure.in doc/*: release of 1.1.11, rebuilt the docs

Wed Sep 29 15:42:33 CEST 2004 Daniel Veillard <daniel@veillard.com>

	* libxslt/pattern.c: try to fix #153137 but without a test case
	  it's shooting in the dark.

Tue Sep 28 16:20:48 CEST 2004 Daniel Veillard <daniel@veillard.com>

	* doc/tutorial2/libxslt_pipes.*: New tutorial from Panagiotis Louridas
	* libxslt.spec.in doc/Makefile.am: integrated the tutorial in the
	  distribution

Sat Sep 25 21:38:57 CEST 2004 Daniel Veillard <daniel@veillard.com>

	* libxslt/preproc.c libxslt/variables.c: fixed 2 leaks with
	  namespaced variable names.
	* tests/general/bug-154.*, tests/general/Makefile.am,
	  tests/docs/bug-154*, tests/docs/Makefile.am: added test case
	  for above

Fri Sep 24 18:13:45 CEST 2004 Daniel Veillard <daniel@veillard.com>

	* Makefile.am: add missing variable
	* libxslt/transform.c: fixed some error callback data
	* tests/exslt/date/Makefile.am tests/exslt/date/sum*: added new
	  date:sum testing from Derek Poon

Fri Sep 24 09:17:22 PDT 2004 William Brack <wbrack@mmm.com.hk>

	* libexslt/date.c: fixed problem with empty sets, etc.
	  (see discussion on mailing list)

Sat Sep 18 17:08:31 PDT 2004 William Brack <wbrack@mmm.com.hk>

	* libexslt/date.c: fixed problem with timezone offset
	  (bug 153000)
	* tests/exslt/date/add.1.out: changed regression test output,
	  which was apparently incorrect for above case

Sat Sep 18 00:04:02 PDT 2004 William Brack <wbrack@mmm.com.hk>

	* libxslt/transform.c: re-arranged sequence of setting up
	  namespaces within xsltCopyTree (see the list thread
	  http://mail.gnome.org/archives/xml/2004-September/msg00072.html)
	* tests/general/bug-104.out: slight change to expected output
	  due to above fix

Fri Sep 17 23:15:33 PDT 2004 William Brack <wbrack@mmm.com.hk>

	* libexslt/date.c: enhanced validation of date-time to catch
	  bit-field overflow (bug 152836)
	* tests/exslt/date/date.2.*, tests/exslt/time.2.*: added test
	  cases for above

Tue Sep  7 18:04:55 PDT 2004 William Brack <wbrack@mmm.com.hk>

	* libxslt/numbers.c: further refinement to UTF8 pattern
	  separator (bug 151975)

Tue Sep  7 00:14:12 PDT 2004 William Brack <wbrack@mmm.com.hk>

	* libxslt/numbers.c: fixed problem with UTF8 pattern
	  separator (bug 151975)

Mon Sep  6 14:27:38 PDT 2004 William Brack <wbrack@mmm.com.hk>

	* libxslt/imports.c, libxslt/xslt.c, libxslt/xsltInternals.h:
	  fixed 2 problems with xsl:include (bug #151795)

Tue Aug 31 15:45:42 CEST 2004 Daniel Veillard <daniel@veillard.com>

	* NEWS configure.in doc/*: Release of libxslt-1.1.10

Tue Aug 31 11:41:11 CEST 2004 Daniel Veillard <daniel@veillard.com>

	* doc/xsltproc.1 doc/xsltproc.xml: added missing descriptions
	  for --path as well as --load-trace, fixes Red Hat bug #106545

Fri Aug 27 20:52:52 PDT 2004 William Brack <wbrack@mmm.com.hk>

	* libxslt/keys.c: fixed small problem with key initialisation
	  disturbing the transformation context (bug 151201).
	* tests/general/bug-153.*, tests/general/Makefile.am,
	  tests/docs/bug-153*, tests/docs/Makefile.am: added test case
	  for above

Tue Aug 24 16:40:51 CEST 2004 Igor Zlatkovic <igor@zlatkovic.com>

	* win32/configure.js: added support for version extra

Mon Aug 23 16:53:02 CEST 2004 Daniel Veillard <daniel@veillard.com>

	* libexslt/date.c libxslt/imports.c libxslt/xslt.c: fixing 
	  compilation problems on Solaris #150844

Sun Aug 22 17:19:49 CEST 2004 Daniel Veillard <daniel@veillard.com>

	* configure.in NEWS doc/*: preparing release of 1.1.9

Sat Aug 21 22:08:14 PDT 2004 William Brack <wbrack@mmm.com.hk>

	* transform.c: Further enhancement for keys on exslt:node-sets.
	  Corrects a rather serious timing problem (bug 150741)
	* tests/exslt/common/node-set.8.*: added regression test for this

Fri Aug 20 18:53:50 CEST 2004 Daniel Veillard <daniel@veillard.com>

	* Makefile.am configure.in: a bit of cleanup and a extra variable for
	  CVS dist

Fri Aug 20 11:30:19 CEST 2004 Daniel Veillard <daniel@veillard.com>

	* libxslt/imports.c: fix a 64bit bug reported by Andreas Schwab

Wed Aug 18 14:27:18 PDT 2004 William Brack <wbrack@mmm.com.hk>

	* configure.in libxslt/xsltconfig.h.in libxslt/xslt.c
	  libxslt/xsltwin32config.* libexslt/exsltconfig.h.in
	  libexslt/exslt.c: added some code to include the CVS
	  ChangeLog version in the version strings available for
	  printing (e.g. by xsltproc)

Wed Aug 18 00:22:00 CEST 2004 Daniel Veillard <daniel@veillard.com>

	* xsltproc/xsltproc.c: implemented --nodtdattr to avoid defaulting
	  DTD attributes, RFE 150311 . Also cleanup the code from all
	  libxml2 pre 2.6.0 specific code since we are using 
	  LIBXML_REQUIRED_VERSION=2.6.8 in configure.in

Tue Aug 17 01:01:22 CEST 2004 Daniel Veillard <daniel@veillard.com>

	* libxslt/documents.c libxslt/documents.h libxslt/imports.c
	  libxslt/xslt.c libxslt/xsltutils.c: Implemented a hook to
	  provide document loading as suggested by David Hyatt for
	  Safari

Mon Aug 16 12:53:55 PDT 2004 William Brack <wbrack@mmm.com.hk>

	* libxslt/transform.c: added a call to xmlXPathOrderDocElems
	  in xmlNewTransformContext for the principal document (bug 133289)

Sat Aug 14 21:49:48 PDT 2004 William Brack <wbrack@mmm.com.hk>

	* libxslt/namespaces.[ch], transform.c, xslt.c, xsltInternals.h:
	  fixed handling of #default in namespace-alias for default
	  namespace (bug 149659)
	* tests/namespaces/tst7.* tst8.*: added regression tests for above

Fri Aug  6 11:05:31 PDT 2004 William Brack <wbrack@mmm.com.hk>

	* libexslt/date.c: added date:sum routine supplied by Joel
	  Reed

Wed Aug  4 00:04:13 CEST 2004 Daniel Veillard <daniel@veillard.com>

	* doc/downloads.html doc/xslt.html: fixed a couple of problems
	  reported by Oliver Stoeneberg
		
Mon Aug  2 08:48:03 PDT 2004 William Brack <wbrack@mmm.com.hk>

	* libxslt/documents.c, libxslt/functions.c, libxslt/transform.c,
	  libxslt/variables.c: added code to assure keys are generated
	  when needed for node-sets (bug 148773)
	* tests/exslt/common/node-set.7.* - added test case for above.

Mon Jul 26 17:03:22 PDT 2004 William Brack <wbrack@mmm.com.hk>

	* libexslt/strings.c: fixed str:tokenize for case when 2nd
	  argument is an empty string (should produce a token for
	  each char in the string).  Reported on the mailing list by
	  Peter Pawlowski.

Fri Jul 23 21:55:14 PDT 2004 William Brack <wbrack@mmm.com.hk>
	* libxslt/imports.c: further enhancement for template priorities
	  on imported stylesheets (better fix for bug 141279, fixes
	  bug 148246).

Fri Jul 16 12:14:57 CEST 2004 Daniel Veillard <daniel@veillard.com>

	* configure.in libexslt/crypto.c libexslt/exslt.[ch] 
	  libexslt/exsltconfig.h.in win32/configure.js: apply patch from
	  Rob Richards to add a normal --with-crypto configure option.

Tue Jul 13 22:57:43 HKT 2004 William Brack <wbrack@mmm.com.hk>

	* libxslt/functions.c: added some logic to xsltKeyFunction
	  to set the transform context doc ptr when the xpath context
	  doc is different (bug 147445)
	* tests/exslt/common/Makefile.am, tests/exslt/common/node-set.5*
	  and tests/exslt/common/node-set.6*: added regression tests
	  for bug 145547 (UNION and FILTER for RVT's)

Mon Jul 12 08:28:07 HKT 2004 William Brack <wbrack@mmm.com.hk>

	* python/libxslt-python-api.xml: fixed type for doctypeSystem
	  and doctypePublic (problem reported on the list by Sitsofe
	  Wheeler)
	* doc/libxslt-api.xml: updated database.

Sun Jul 11 22:46:31 HKT 2004 William Brack <wbrack@mmm.com.hk>

	* transform.c: small change to key handling for RVT, needed
	  because of enhancement to libxml2 xpath.

Fri Jul  9 02:51:38 PDT 2004 Daniel Veillard <daniel@veillard.com>

	* python/libxsl.py: fixes Python on 64bits box problem.

Tue Jul  6 18:43:37 CEST 2004 Daniel Veillard <daniel@veillard.com>

	* libxslt.spec.in: better python dependancy Red hat bug #126364
	  by Robert Scheck

Tue Jul  6 21:35:44 HKT 2004 William Brack <wbrack@mmm.com.hk>

	* tests/namespaces/Makefile.am: added extra2.err, tst5.xml,
	  tst5.xsl and tst.out to EXTRA_DIST

Mon Jul  5 21:48:13 CEST 2004 Daniel Veillard <daniel@veillard.com>

	* configure.in doc/*: releasing 1.1.8

Sun Jul  4 24:18:12 HKT 2004 William Brack <wbrack@mmm.com.hk>

	* xsltproc/Makefile.am: changed the sequence of LD_ADDS and
	  LIBGCRYPT_LIBS on xsltproc_LDADD.  Previously this was
	  causing the wrong libs to be linked when using the configure
	  option --with-libxml-libs-prefix, or --with-libxml-src (nasty)

Sun Jul  4 21:42:48 HKT 2004 William Brack <wbrack@mmm.com.hk>

	* libexslt/Makefile.am: implemented change from Joel Reed for
	  automake-1.4 compatibility.
	* libexslt/crypto.c: reformatted source to remove an overly
	  generous supply of tabs.  Added a #include for sys/select to
	  fix a compilation error caused by the gcrypt include file's
	  usage of 'fd_set'.  Made some minor changes to fix
	  some warning messages (no change to the logic).
	* configure.in, config.h.in: added test for presence of
	  sys/select.h.
	  Added test for libgcrypt version > 1.1.41 (bug 145245)
	  
Sat Jul  3 17:52:27 HKT 2004 William Brack <wbrack@mmm.com.hk>

	* doc/xslt.html, doc/extensions.html: corrected the URI for libxslt
	  namespace, also a small enhancement of the surrounding text on
	  extension functions. (bug 145250)
	  
Fri Jul  2 15:51:49 CEST 2004 Daniel Veillard <daniel@veillard.com>

	* configure.in: convenience change
	* python/libxsl.py python/libxslt-python-api.xml python/libxslt.c:
	  try to avoid calling libxml2 cleanup function directly but go
	  though the python wrapper of libxml2 for memory debug accounting.

Fri Jul  2 16:24:12 HKT 2004 William Brack <wbrack@mmm.com.hk>

	* libxslt/keys.c: added namespace setup before calling XPath
	  to evaluate key (Bug 143520)

Thu Jul  1 10:07:55 HKT 2004 William Brack <wbrack@mmm.com.hk>

	* libxslt/transform.c: added coding to xsltCopyTree to copy
	  namespaces (bug 139578).
	* tests/general/bug-128.out: changed to reflect above fix
	* libxslt/xslt.c: minor change to an error message

Wed Jun 30 18:41:20 CEST 2004 Daniel Veillard <daniel@veillard.com>

	* win32/Makefile.msvc win32/Makefile.mingw libexslt/Makefile.am
	  libexslt/exslt.c libexslt/exslt.h config.h.in configure.in
	  libexslt/crypto.c: applied patch from Joel Reed to get EXSLT
	  crypto extensions based on libgcrypt if found at configure time.
	* tests/namespaces/Makefile.am: fixed a small breakage

Wed Jun 30 12:28:34 HKT 2004 William Brack <wbrack@mmm.com.hk>

	* libxslt/namespaces: some enhancement for fixing bug 142768
	* tests/namespaces/Makefile.am, tests/namespaces/tst6*:
	  added regression test for this bug

Tue Jun 29 09:23:03 CEST 2004 Daniel Veillard <daniel@veillard.com>

	* Makefile.am examples/xsltICUSort.c: seems I never commited to CVS
	  the example from Richard Jinks

Wed Jun  9 16:33:56 CEST 2004 Igor Zlatkovic <igor@zlatkovic.com>

	* win32/configure.js win32/Makefile.* minor changes for the new
	  layout of the Windows binary package

Wed May 26 10:51:22 HKT 2004 William Brack <wbrack@mmm.com.hk>

	* doc/search.php.inc, doc/search/php: enhanced to remove
	  forcing module names to lower case, and to fix problem
	  with links between pages in libxml2 directory.

Mon May 24 12:46:10 HKT 2004 Igor Zlatkovic <igor@zlatkovic.com>

	* win32/makefile.msvc, win32/configure.js: included the cruntime 
	  option, contributed by Oliver Stoeneberg

Mon May 24 08:37:22 HKT 2004 William Brack <wbrack@mmm.com.hk>

	* libxslt/xsltutils.c: fixed bug in error message printing
	  for undefined namespace (bug 143004)

Mon May 17 23:08:42 CEST 2004 Daniel Veillard <daniel@veillard.com>

	* NEWS doc/*: updated for 1.1.7

Mon May 17 06:14:09 CEST 2004 Daniel Veillard <daniel@veillard.com>

	* configure.in: release of libxslt-1.1.7

Sun May 16 23:08:05 CEST 2004 Daniel Veillard <daniel@veillard.com>

	* tests/general/bug-151*, tests/docs/bug-151.xml,
	  tests/general/Makefile.am, tests/docs/Makefile.am: added
	  regression test for old bug #127877

Sun May 16 20:48:35 CEST 2004 Daniel Veillard <daniel@veillard.com>

	* libxslt/transform.c: fixing bug #135542 about the DOCTYPE name
	  being generated when the root element is namespaced 
	* tests/general/bug-151*, tests/docs/bug-151.xml,
	  tests/general/Makefile.am, tests/docs/Makefile.am: added
	  regression test for bug #135542

Sun May 16 19:39:44 CEST 2004 Daniel Veillard <daniel@veillard.com>

	* libxslt/namespaces.c libxslt/namespaces.h libxslt/templates.c
	  libxslt/transform.c: fixing bug #134500 on namespace lookup for
	  attribute which sometimes lead to default namespace
	* tests/general/bug-150*, tests/docs/bug-150.xml,
	  tests/general/Makefile.am, tests/docs/Makefile.am: added
	  regression test for bug #134500

Sun May 16 18:09:36 CEST 2004 Daniel Veillard <daniel@veillard.com>

	* libexslt/date.h: fixing a small portability problem on Solaris
	  for the declaration of localtime_r bug #140468

Sun May 16 16:36:38 CEST 2004 Daniel Veillard <daniel@veillard.com>

	* libxslt.m4: applied patch from Edward Rudd to fix the problems
	  raised in bug #142429
	  
Sun May 16 11:01:52 CEST 2004 Daniel Veillard <daniel@veillard.com>

	* libxslt/xslt.c: fixed a weird namespace bug #141532
	* tests/docs/Makefile.am tests/docs/bug-14[89].xml
	  tests/general/Makefile.am tests/docs/bug-14[89]*: added tests
	  to the regression for bug #141532

Sun May  2 23:47:43 PDT 2004 William Brack <wbrack@mmm.com.hk>

	* libxslt/imports.c: added comments and function header,
	  improved logic of routine just added.
	* tests/general/bug-147*, tests/docs/bug-147.xml,
	  tests/general/Makefile.am, tests/docs/Makefile.am: added
	  regression test for bug 141279

Sun May  2 12:47:32 PDT 2004 William Brack <wbrack@mmm.com.hk>

	* libxslt/imports.c: enhanced normalization of comp steps
	  when an imported stylesheet has it's own imports
	  (bug 141279)

Sat May  1 10:35:03 PDT 2004 William Brack <wbrack@mmm.com.hk>

	* libxslt/transform.c: added code to recognize
	  disable-output-escaping on certain text nodes (bug 140755)
	* tests/general/bug-100.out: regenerated to account for change
	  from next ChangeLog entry (bug 140558)

Wed Apr 28 18:17:24 PDT 2004 William Brack <wbrack@mmm.com.hk>

	* libxslt/xsltutils.c: suppressed any automatic linefeed after
	  a comment following the document root element (bug 140558)

Thu Apr 22 08:38:35 CEST 2004 Daniel Veillard <daniel@veillard.com>

	* libxslt/transform.c: fix a problem where we updated an
	  ELEMENT node psvi field as if it was a DOCUMENT one, leading
	  to a subtle crash later, valgrind rules.

The Apr 20 00:22:37 HKT 2004 William Brack <wbrack@mmm.com.hk>

	* libexslt/strings.c: fixed bug in UTF8 string tokenize
	  kindly reported by Vasily Tchekalkin

Mon Apr 19 00:39:18 CEST 2004 Daniel Veillard <daniel@veillard.com>

	* configure.in doc/*: preparing release 1.1.6
	* libxslt.spec.in: keep the ChangeLog compressed 

Mon Apr  5 15:23:53 CEST 2004 Daniel Veillard <daniel@veillard.com>

	* libxslt/keys.c: fixed a stupid cut'npaste bug #139132
	* tests/docs/Makefile.am tests/docs/bug-146.xml
	  tests/general/Makefile.am tests/docs/bug-146*: added test
	  to the regression for bug #139132

2004-04-02 10:17:23 HKT 2004 William Brack <wbrack@mmm.com.hk>

	* libxslt/keys.c: applied patch from Mark Vakoc to fix problem
	  with key matching attribute node.

2004-04-01  Johan Dahlin  <johan@gnome.org>

	* python/.cvsignore: Add generated files, to make cvs silent.

	* .cvsignore: Add missing libexslt.pc and stamp-h1

Tue Mar 23 13:13:56 CET 2004 Daniel Veillard <daniel@veillard.com>

	* configure.in: prepare release of 1.1.5, made a hard dependancy
	  to libxml2 2.6.8 due to the dictionnary reference counting change
	* doc/*: updated and rebuilt the doc.
	* tests/namespaces/Makefile.am: fixed a build problem (tst5 ?)

Mon Mar 22 20:25:41 CET 2004 Daniel Veillard <daniel@veillard.com>

	* libxslt/xsltconfig.h.in: small fix for OpenVMS
	* libxslt/documents.c: fixed a leak associated to the change
	  in reference counting when running the XML parser and using
	  the document() function.

Wed Mar 17 18:49:55 HKT 2004 William Brack <wbrack@mmm.com.hk>

	* xsltproc/xsltproc.c: added check for state XSLT_STATE_STOPPED
	  when output file is used (bug 137341)
	  
Tue Mar 16 08:55:18 HKT 2004 William Brack <wbrack@mmm.com.hk>

	* libxslt/xsltutils.c: corrected my error from bug 135938
	  pointed out on the mailing list by Mark Vakoc.
	* libxslt/transform.c: enhanced the error message for
	  call-template when namespace is present.
	* tests/general/bug-145.err: regenerated for new message

Fri Mar 12 13:07:03 HKT 2004 William Brack <wbrack@mmm.com.hk>

	* libxslt/namespaces.c: added additional check to prevent
	  superfluous namespace href's being generated on elements
	  (bug 136914)
	* tests/namespaces/Makefile.am, tests/namespaces/tst5.x[ms]l:
	  added new test for bug 136914
	* tests/namespaces, tests/extensions/ tests/reports: fixed
	  error in "enhanced" Makefile.am, removed superfluous .err files
	  from cvs

Wed Mar 10 19:27:39 HKT 2004 William Brack <wbrack@mmm.com.hk>

	* doc/search.php.incl: minor addition for later version of php
	  requiring $HTTP_GET_VARS.
	  doc/*: rebuilt the docs

Wed Mar 10 17:14:13 HKT 2004 William Brack <wbrack@mmm.com.hk>

	* libexslt/strings.c: modified the 'tokenize' routine to work with
	  UTF8 chars in both string and tokens (Bug 136183)

Tue Mar  9 23:44:31 HKT 2004 William Brack <wbrack@mmm.com.hk>

	* libxslt/attrvt.c: added coding to allow growing the
	  AVT structure when a large number of segments are present
	  (bug 136624)
	* libxslt/keys.c: fixed a compilation warning (no logic change)

Sat Mar  6 23:42:47 HKT 2004 William Brack <wbrack@mmm.com.hk>

	* tests/docbook/Makefile.am: small fix to typo

Sat Mar  6 23:05:11 HKT 2004 William Brack <wbrack@mmm.com.hk>

	* Makefile.am, tests/Makefile.am, tests/REC/Makefile.am,
	  tests/REC1/Makefile.am, tests/REC2/Makefile.am,
	  tests/XSLTMark/Makefile.am, tests/docbook/Makefile.am,
	  tests/exslt/common/Makefile.am, tests/exslt/date/Makefile.am,
	  tests/exslt/functions/Makefile.am, tests/exslt/math/Makefile.am,
	  tests/exslt/sets/Makefile.am, tests/exslt/strings/Makefile.am,
	  tests/extensions/Makefile.am, tests/general/Makefile.am,
	  tests/keys/Makefile.am, tests/multiple/Makefile.am,
	  tests/namespaces/Makefile.am, tests/numbers/Makefile.am,
	  tests/reports/Makefile.am, test/xmlspec/Makefile.am,
	  tests/general/bug-60.err, tests/docbook/result/html/gdp-handbook.err,
	  tests/REC/test-2.5-1.err:
	  Major enhancement to "make tests". All but Python tests
	  cleaned up to produce minimum summary output if no problems.
	* tests/general/bug-145.xsl, tests/general/bug-145.err,
	  tests/docs/Makefile.am, tests/docs/bug-145.xml:
	  Added test case for bugzilla bug 135938
	  
Thu Mar  4 23:02:18 HKT 2004 William Brack <wbrack@mmm.com.hk>

	* libxslt/xsltutils.h, libxslt/xsltutils.c, libxslt/preproc.c:
	  fixed problem with dictionary handling (bug 135938).
	* doc/EXSLT/*: fixed a few more "href_base" files.

Wed Mar  3 21:33:33 HKT 2004 William Brack <wbrack@mmm.com.hk>

	* doc/*, doc/html/*, doc/EXSLT/*: rebuilt the docs to fix
	  the "href_base" problem.

Fri Feb 27 01:04:47 HKT 2004 William Brack <wbrack@mmm.com.hk>

	* configure.in, config.h.in: added test for localtime_r
	* libexslt/date.c: added usage of localtime_r if present on
	  system (bug 129983, suggested by Vasily Tchekalkin)

Thu Feb 26 16:59:45 CET 2004 Daniel Veillard <daniel@veillard.com>

	* libxslt/keys.c libxslt/pattern.c: removed the last use
	  of _private that time in the input document, use the psvi
	  field again, this may be interesting if XSLT2 support gets
	  in but since this is very unlikely ...

Thu Feb 26 16:04:28 CET 2004 Daniel Veillard <daniel@veillard.com>

	* libxslt/transform.c libxslt/variables.c: use the psvi field
	  of teh document used for RVT instead of _private. 

Thu Feb 26 15:17:52 CET 2004 Daniel Veillard <daniel@veillard.com>

	* libxslt/attrvt.c libxslt/templates.c: use the psvi field of
	  the attribute instead of the _private one to compile AVT infos

Thu Feb 26 14:53:16 CET 2004 Daniel Veillard <daniel@veillard.com>

	* tests/docs/Makefile.am tests/docs/bug-144.xml
	  tests/general/Makefile.am tests/docs/bug-144*: added test
	  similar to 143 but checking for AVT in local variables.
	
Thu Feb 26 13:16:33 CET 2004 Daniel Veillard <daniel@veillard.com>

	* libxslt/attrvt.c libxslt/variables.c: fixed a regression for
	  AVT found in global variable content.
	* tests/docs/Makefile.am tests/docs/bug-143.xml
	  tests/general/Makefile.am tests/docs/bug-143*: added test
	  to the regression suite.

Wed Feb 25 16:35:01 CET 2004 Daniel Veillard <daniel@veillard.com>

	* libxslt/attributes.c libxslt/keys.h libxslt/preproc.c 
	  libxslt/transform.c libxslt/variables.c libxslt/xsltutils.c:
	  First step toward _private cleanup: use the psvi field to store
	  the precompilation informations in the stylesheet nodes.

Wed Feb 25 14:24:34 CET 2004 Daniel Veillard <daniel@veillard.com>

	* libxslt/variables.c: trying to use the fact that names comes
	  from a dictionnary when looking up for variables.
	* tests/documents/Makefile.am: try to fix an error reported on
	  the list.

Wed Feb 25 17:02:22 HKT 2004 William Brack <wbrack@mmm.com.hk>

	* tests/general/Makefile.am, tests/general/bug-142.xsl,
	  tests/general/bug-142.out, tests/docs/Makefile.am,
	  tests/general/bug-142.xml: added test for language
	  attribute which previously triggered a memory leak
	  (from list report by Mike Hommey)

Mon Feb 23 18:01:44 CET 2004 Daniel Veillard <daniel@veillard.com>

	* NEWS configure.in doc/*: preparing release 1.1.4, updated and
	  regenerated the documentation

Tue Feb 24 00:37:28 HKT 2004 William Brack <wbrack@mmm.com.hk>

	* libxslt/xsltutils.c, libxslt/templates.c, libxslt/preproc.c:
	  minor changes to eliminate compilation warnings.  No change
	  to logic.

Sun Feb 22 23:59:12 CET 2004 Daniel Veillard <daniel@veillard.com>

	* libexslt/exsltexports.h libxslt/xsltexports.h: patches from
	  Mikhail S Grushinskiy to compile on Mingw

Sat Feb 21 16:47:04 CET 2004 Daniel Veillard <daniel@veillard.com>

	* win32/Makefile.msvc: patch from Mark Vadoc for attrvt.c

Wed Feb 18 13:32:55 CET 2004 Daniel Veillard <daniel@veillard.com>

	* libxslt/extensions.c: applied patch from Steve Little to 
	  display the extension modules.

Wed Feb 18 11:40:23 CET 2004 Daniel Veillard <daniel@veillard.com>

	* libxslt/transform.c: trying to fix an extension regression pointed
	  out on the list.

Tue Feb 17 12:20:26 CET 2004 Daniel Veillard <daniel@veillard.com>

	* libxslt/transform.c: try to fix the problem with yelp
	  and dictionnaries

Tue Feb 17 11:29:15 CET 2004 Daniel Veillard <daniel@veillard.com>

	* libxslt/templates.c: applied patch from #134588 provided by
	  Mariano Suárez-Alvarez, attribute text node without doc.

Mon Feb 16 15:55:57 CET 2004 Daniel Veillard <daniel@veillard.com>

	* configure.in, doc/*: updated and rebuilt the documentation
	  preparing release of 1.1.3
	* libxslt/attrvt.c libxslt/xsltInternals.h: cleanup

2004-02-15  Tomasz KÅoczko <kloczek@pld.org.pl>

	* libxslt.m4: small fix: added missing [] quotation macro name
	  defined in AC_DEFUN(). Fix is neccessary for aclocal from automake
	  1.8.x and is backward compatible with older auto tools.

Sun Feb 15 23:01:09 CET 2004 Daniel Veillard <daniel@veillard.com>

	* libxslt/attrvt.c libxslt/templates.c: removed the two last
	  known bug with the new code, was overoptimizing a bit...

Sun Feb 15 19:57:20 CET 2004 Daniel Veillard <daniel@veillard.com>

	* libxslt/attrvt.c: found the memory leak shown in DocBook,
	  mostly an error handling some ATV coupled with doctionnaries
	  reference counting.
	* libxslt/documents.c libxslt/transform.c libxslt/variables.c
	  libxslt/xslt.c: added a bit of debug to be able to trace 
	  dictionnaries.

Fri Feb 13 16:59:46 CET 2004 Daniel Veillard <daniel@veillard.com>

	* libxslt/attrvt.c libxslt/Makefile.am: added new code to handle
	  attribute value templates
	* libxslt/*.c libxslt/*.h: also a lot of work to reuse the 
	  dictionaries at the stylesheet and transformation level.
	* configure.in: this relies on a recent version of libxml2 
	  with the sub dictionnary catalog.

Sun Feb  8 16:53:14 HKT 2004 William Brack <wbrack@mmm.com.hk>

	* libxslt/transform.c: added check for "?>" in PI content
	  (Bug 133726)

Sat Jan 31 02:43:45 PST 2004 William Brack <wbrack@mmm.com.hk>

	* libxslt/namespaces.c: fixed problem with attribute
	  namespace (Bug 132953)

Thu Jan 29 14:47:22 PST 2004 William Brack <wbrack@mmm.com.hk>

	* libxslt/transform.c: added check for "--" or ending '-'
	  in xsl:comment (Bug 132742)

Thu Jan 29 14:08:31 PST 2004 William Brack <wbrack@mmm.com.hk>

	* libxslt/transform.c, libxslt/attributes.c: added
	  validation of QName for xsl:element and xsl:attribute
	  (Bug 132531)

Fri Jan 23 18:52:22 HKT 2004 William Brack <wbrack@mmm.com.hk>

	* libxslt/pattern.c: changed priority of template patterns
	  starting with '//' from 0.0 to 0.5 (Bug 131705)

Thu Jan 22 18:42:03 CET 2004 Daniel Veillard <daniel@veillard.com>

	* libxslt/xslt.c: applied patch from Stefan Kost to fix
	  behaviour on unknown element from the XSLT namespace.
	* python/generator.py: applied patch from Stephane bidoul
	  to export enums in the bindings.

Thu Jan 22 10:35:14 HKT 2004 William Brack <wbrack@mmm.com.hk>

	* tests/general/Makefile.am, tests/general/bug-141.out,
	  tests/general/bug-141.xsl, tests/docs/Makefile.am,
	  tests/general/bug-141.xml: added test case for
	  Bug 13971 (libxml2 xpath.c bug, but tested here)

Fri Jan 16 22:15:34 HKT 2004 William Brack <wbrack@mmm.com.hk>

	* libxslt/xsltutils.c: added a newline for any comment before
	  the root element (Bug 130433)
	* libxslt/xslt.c: fixed problem with cdata-section-elements when
	  default namespace is changed (Bug 130793)
	* tests/extensions/module.out, tests/general/bug-100.out: adjusted
	  for newline after comment change above.
	* tests/general/Makefile.am, tests/general/bug-140.xsl,
	  tests/general/Makefile.am, tests/docs/bug-140.xml: added test for
	  cdata-section-elements problem.

Wed Jan 14 16:44:58 CET 2004 Daniel Veillard <daniel@veillard.com>

	* python/libxsl.py: applied shared lib loading patch for OS X from
	  Gianni Ceccarelli

Wed Jan 14 14:28:02 HKT 2004 William Brack <wbrack@mmm.com.hk>

	* libexslt/math.c, libexslt/common.c: fixed problem,
	  reported on the list by Markus Bayerlein, concerning
	  math functions on nodesets generated with
	  exslt:node-set
	* tests/exslt/math/max.3.xsl, tests/exslt/math/max.3.xml,
	  tests/exslt/math/max.3.out, tests/exslt/math/Makefile.am:
	  added test case for above.

Tue Jan 13 00:33:50 HKT 2004 William Brack <wbrack@mmm.com.hk>

	* libxslt/transform.c: changed to assure comment which
	  preceeds root node is output after DTD (Bug 130433)
	* test/exslt/common/node-set.4.*: added test case for
	  Bug 130922

Mon Jan 12 12:51:45 HKT 2004 William Brack <wbrack@mmm.com.hk>

	* doc/site.xsl: Changed logo spacing to avoid stacking
	* doc/*: rebuilt web pages

Sun Jan 11 20:10:09 MST 2004 John Fleck <jfleck@inkstain.net>

	* doc/site.xsl
	* doc/w3c.png
	* doc/*
	Test William's new site.xsl improvements by adding the
	W3C logo icon, rebuild docs, and presto! It shows up
	everywhere!

Mon Jan 10 08:33:18 HKT 2004 William Brack <wbrack@mmm.com.hk>

	* libxslt/transform.c: Refined wrapper code with large
	  test case submitted by Norm Walsh. (Bug 130922)

Sun Jan 10 23:33:21 HKT 2004 William Brack <wbrack@mmm.com.hk>

	* libxslt/transform.c: Added coding to create a xsltDocument
	  wrapper for an RVT, in order to produce the applicable
	  keys (Bug 130922)

Sat Jan  9 17:04:38 HKT 2004 William Brack <wbrack@mmm.com.hk>

	* doc/search.xml, doc/search.templ, doc/Makefile.am,
	  doc/search.php.inc: Added new facility to "autogen"
	  the search script.  Fixed a few more problems with
	  the API page generation.
	* doc/site.xsl, doc/api.xsl, doc/newapi.xsl: integrated
	  the autogeneration of the php script.  Note that from
	  this point doc/search.php will be include in the
	  generic "Rebuilt docs".
	* doc/*: api docs rebuilt.
	
Fri Jan  8 08:32:55 HKT 2004 William Brack <wbrack@mmm.com.hk>

	* doc/site.xsl, doc/api.xsl, doc/newapi.xsl, doc/search.php:
	  Further cleanup, fully implemented common routine for
	  "generic page" within the docs.
	* doc/*: api docs rebuilt with enhanced scripts.

Thu Jan  8 06:45:04 MST 2004 John Fleck <jfleck@inkstain.net>

	* doc/xslt.html, doc/bugs.html
	made link to bugzilla more useful

Wed Jan  7 20:12:14 HKT 2004 William Brack <wbrack@mmm.com.hk>

	* doc/api.xsl, doc/site.xsl, doc/search.php: a little
	  cleanup of scripts, assuring page tables are consistent.
	* doc/*: api docs rebuilt with enhanced scripts.

Tue Jan  6 23:38:47 HKT 2004 William Brack <wbrack@mmm.com.hk>

	* configure.in: fixed Bug130593.
	* doc/apibuild.py: fixed a couple of sequence problems on
	  references within APIxxx.html files, rebuild doc/* (and NEWS)

Sun Jan  4 19:06:59 MST 2004 John Fleck <jfleck@inkstain.net>

	* doc/newapi.xsl: change background color of function
	declaration to improve readability
	* doc/*: rebuild docs with new stylesheet

Fri Jan  2 21:42:49 MST 2004 John Fleck <jfleck@inkstain.net>

	* libxslt/transform.c: fix bad doc comment formatting on 
	xsltDebugSetDefaultTrace and xsltDebugGetDefaultTrace
	* doc/*: rebuild docs

Wed Dec 24 15:15:52 CET 2003 Daniel Veillard <daniel@veillard.com>

	* configure.in doc/*: prepared release of libxslt-1.1.2
	* libxslt.spec.in doc/Makefile.am: some tweaking following the
	  new EXSLT docs.

Mon Dec 22 20:33:08 HKT 2003 William Brack <wbrack@mmm.com.hk>

	* libxlst/numbers.c: fixed xsl:number level="any" for Bug
	  129057

Sun Dec 21 21:38:11 HKT 2003 William Brack <wbrack@mmm.com.hk>

	* libxslt/numbers.c: added namespace comparison for
	  xsl:number count function (Bug 129057)

Sun Dec 21 13:56:48 CET 2003 Daniel Veillard <daniel@veillard.com>

	* tests/docs/Makefile.am tests/docs/bug-139.xml
	  tests/general/Makefile.am tests/general/bug-139*: added
	  test for entities parsing (Bug #129489)

Sun Dec 21 20:33:27 HKT 2003 William Brack <wbrack@mmm.com.hk>

	* tests/docs/Makefile.am tests/docs/bug-138.xml
	  tests/general/Makefile.am tests/general/bug-138*: added
	  test for namespace problem (Bug #129624)

Sun Dec 21 13:17:05 CET 2003 Daniel Veillard <daniel@veillard.com>

	* xsltproc.c: fixed #129327 make sure parser flags get transmitted to
	  the transformation context
	* libxslt/documents.c libxslt/transform.c libxslt/xsltInternals.h 
	  libxslt/xsltutils.c libxslt/xsltutils.h: add a new call
	  xsltSetCtxtParseOptions() to update parsing options in document()

Sun Dec 21 12:51:12 CET 2003 Daniel Veillard <daniel@veillard.com>

	* libxslt/keys.c: fixed second problem on #122483, namespace
	  definitions must be propagated to keys.
	* tests/docs/Makefile.am tests/docs/bug-137.xml
	  tests/general/Makefile.am tests/docs/bug-137*: added test
	  to the regression for bug #122483
	
Sun Dec 21 12:08:45 CET 2003 Daniel Veillard <daniel@veillard.com>

	* libxslt/transform.c: added the cast needed to fix #129188 warning

Sat Dec 20 23:37:31 HKT 2003 William Brack <wbrack@mmm.com.hk>

	* libexslt/transform.c: fixed Bug 129624 (erroneous output
	  of namespaces)

Sat Dec 20 16:22:11 HKT 2003 William Brack <wbrack@mmm.com.hk>

	* libexslt/date.c: fixed several routines to assure empty
	  string returned (rather than a string object with a null
	  string pointer) (Bug 129561)

Mon Dec 16 00:30:47 PST 2003 William Brack <wbrack@mmm.com.hk>

	* doc/Makefile.am doc/site.xsl doc/api.xsl doc/newapi.xsl
	  doc/xslt.html doc/apibuild.py doc/EXSLT doc/EXSLT/exslt.html:
	  enhanced documentation to include exslt; rebuilt docs
	  
Mon Dec 15 20:33:52 MST 2003 John Fleck <jfleck@inkstain.net>

	* libxslt/xsltutils.h
	* doc/*
	document XSLT_TRACE macro (sort of) and rebuild docs

Thu Dec 11 19:50:41 CET 2003 Igor Zlatkovic <igor@zlatkovic.com>

	* win32/Makefile.mingw win32/configure.js: tried to fix mingw
	  build, no success, it still works halfway.

Thu Dec 11 16:33:41 CET 2003 Igor Zlatkovic <igor@zlatkovic.com>

	* win32/Makefile.* win32/configure.js libxslt/xsltexports.h
	  libexslt/exsltexports.h libxslt/win32config.h: msvc and
	  mingw compilation fixes.

Wed Dec 10 20:37:46 MST 2003 John Fleck <jfleck@inkstain.net>

	* doc/xslt.html docs.html
	remove reference to gtk-doc

Wed Dec 10 17:20:27 CET 2003 Daniel Veillard <daniel@veillard.com>

	* configure.in NEWS doc/*: updated the docs, made release 1.1.1

Wed Dec 10 16:13:38 CET 2003 Daniel Veillard <daniel@veillard.com>

	* configure.in: upp'ed the dependancy to libxml2-2.6.3
	* libxslt/documents.c xsltproc/xsltproc.c: fixed #127473
	  by using the new XInclude APIs provided by 2.6.3...

Mon Dec  8 23:34:32 HKT 2003 William Brack <wbrack@mmm.com.hk>

	* libxslt/transform.c, libxslt/xslt.c: modified to assure
	  XML_CDATA_SECTION_NODE's do not have xmlStringTextNoenc
	  set into node name.  This modification arises from
	  bug #128520, and avoids unnecessary work in libxml2.
	  
Mon Dec  1 16:41:27 CET 2003 Daniel Veillard <daniel@veillard.com>

	* libxslt/*.h *.h.in: updated the metadata informations in the headers
	* doc/* doc/html/*: regenerated the docs.

Sun Nov 30 23:25:22 HKT 2003 William Brack <wbrack@mmm.com.hk>

	* doc/Makefile.am: small further enhancement to makefile
	* doc/APIchunk[127].html, doc/libxslt-api.xml, doc/libxslt-refs.xml,
	  doc/html/libxslt-transform.html: updated to reflect last change
	  to transform.c

Sun Nov 30 22:44:07 HKT 2003 William Brack <wbrack@mmm.com.hk>

	* doc/newapi.xsl, doc/api.xsl, doc/apibuild.py, doc/site.xsl,
	  Makefile.am: adapted the libxml files for libxslt.
	* doc/API*.html, doc/html/*.html, doc/libxslt-api.xml,
	  doc/libexslt-api.xml, doc/libxslt-refs.xml,
	  win32/libxslt.def.src, win32/libexslt.def.src: regenerated
	  the docs.

Sun Nov 30 18:48:27 HKT 2003 William Brack <wbrack@mmm.com.hk>

	* libxslt/transform.c: change initialisation of external functions
	  to take place in xsltNewTransformContext instead of in
	  xsltApplyStylesheetInternal.  This fixes bug 122483, and should
	  also fix problem reported on the mailing list on today's date.

Wed Nov 26 09:49:11 HKT 2003 William Brack <wbrack@mmm.com.hk>

	* libxslt/imports.c, libxslt/xsltInternals.h: Changed to
	  detect recursion in xslt:include (bug #127687).
	* tests/XSLTMark/reverser.out,
	* test/docbook/result/xhtml/gdp-handbook.xhtml: results changed
	  because of fix of bug #127877 in libxml2 (quotes in text)

Mon Nov 24 07:32:38 HKT 2003 William Brack <wbrack@mmm.com.hk>

	* libxslt/xslt.c, libxslt/imports.c, libxslt/parserInternals.h:
	  Changed to detect recursion in xslt:import (bug #127687).
	* doc/libxslt-api.xml, python/libxsltclass.txt: regenerated to
	  include change to xsltParseStylesheetImportedDoc parameters for
	  above.

Sat Nov 22 13:04:59 CET 2003 Daniel Veillard <daniel@veillard.com>

	* libxslt/keys.c libxslt/templates.c libxslt/transform.c
	  libxslt/variables.c libxslt/xsltInternals.h libxslt/xsltutils.h:
	  Applied patch from Mark Vadoc adding flexible trace debugging
	  support to the library.

Sat Nov 22 00:53:47 HKT 2003 William Brack <wbrack@mmm.com.hk>

	* libxslt/transform.c: fixed bug #127561 (xsl:element with a
	  'computed' namespace attribute)
	* tests/docs/Makefile.am tests/docs/bug-136.xml
	  tests/general/Makefile.am tests/docs/bug-136*: added tests
	  to the regression for bug #127561

Fri Nov 21 18:17:32 HKT 2003 William Brack <wbrack@mmm.com.hk>

	* libxslt/keys.c: small further enhancement, bug #127450

Thu Nov 20 17:26:57 CET 2003 Daniel Veillard <daniel@veillard.com>

	* libxslt/keys.c: another problem reported by Oleg Paraschenko
	  on the same code in #127450
	* tests/docs/Makefile.am tests/docs/bug-135.xml
	  tests/general/Makefile.am tests/docs/bug-135*: added tests
	  to the regression suite for bug #127450.

Thu Nov 20 10:59:48 CET 2003 Daniel Veillard <daniel@veillard.com>

	* libxslt/keys.c: fixed an error from #120684 patch raised in
	  #127450
	* tests/docs/Makefile.am tests/docs/bug-134.xml
	  tests/general/Makefile.am tests/docs/bug-134*: added tests
	  to the regression suite for bug #127450.
	
Thu Nov 20 00:22:14 CET 2003 Daniel Veillard <daniel@veillard.com>

	* libxslt/keys.c: fixed a bug in the keys selector parsing
	  #120684 when | is in a predicate or a string.
	* tests/docs/Makefile.am tests/docs/bug-133.xml
	  tests/general/Makefile.am tests/docs/bug-133*: added tests
	  to the regression suite for bug #120684.
	* Makefile.am: don't package cvs temp files
	* doc/apibuild.py: update from libxml2 one

Tue Nov 18 13:42:12 HKT 2003 William Brack <wbrack@mmm.com.hk>

	* libexslt/strings.c: fixed entity problem in exslt:tokenize
	  uncovered by newapi.xsl
	* libxslt/transform.c,libxslt/pattern.c,libxslt/keys.c: changed
	  to use IS_BLANK_CH for char compares (fixes warnings)

Fri Nov 14 23:59:08 CET 2003 Daniel Veillard <daniel@veillard.com>

	* libxslt/preproc.c: applied fix from Bjorn Reese to close
	  number formatting bug #126994

Fri Nov 14 18:44:50 CET 2003 Daniel Veillard <daniel@veillard.com>

	* Makefile.am configure.in libexslt.pc.in libxslt.spec.in: adding
	  libexslt.pc support

Thu Nov 13 11:54:36 CET 2003 Daniel Veillard <daniel@veillard.com>

	* libxslt/attributes.c libxslt/documents.c libxslt/transform.c
	  libxslt/variables.c libxslt/xsltInternals.h: applied Mark Vakoc
	  patch to moves the control of the XSLT debugger into the transform
	  context.

Tue Nov 12 18:17:24 HKT 2003 William Brack <wbrack@mmm.com.hk>

	* libexslt/functions.c: applied patch for param visibility from
	  Shaun McCance.  Changed variable scoping in accordance with
	  Shaun's suggestions.  This fixed problem reported on the list
	  by Bernd Lang
	* tests/exslt/functions/function.8.[xml,xsl,out], Makefile.am:
	  regression test for above
	
Sat Nov  8 13:27:12 CET 2003 Daniel Veillard <daniel@veillard.com>

	* libexslt/libexslt.3: applied improvement patch from Jonathan Wakely
	  describing the entry points.

Wed Nov  6 17:27:23 CET 2003 Igor Zlatkovic <igor@zlatkovic.com>

	* win32/configure.js: fixed #122146

Wed Nov  5 12:25:34 CET 2003 Daniel Veillard <daniel@veillard.com>

	* tests/multiple/Makefile.am: applied last fix from #125614

Tue Nov  4 19:08:53 PST 2003 William Brack <wbrack@mmm.com.hk>

	Minor enhancements to eliminate compile/test warnings
	* libxslt/xsltconfig.h.in, libexstl/exsltconfig.h.in:
	  changed macro ATTRIBUTE_UNUSED for gcc so that, if undefined,
	  it's defined as __attribute__((unused))
	* python/libxslt.c: fixed ATTRIBUTE_UNUSED to appear after
	  variable declaration
	* libxslt/preproc.c: minor change to get rid of unused var/code
	  
Tue Nov  4 14:21:06 CET 2003 Daniel Veillard <daniel@veillard.com>

	* doc/* NEWS: preparing release 1.1.0

Tue Nov  4 14:04:58 CET 2003 Daniel Veillard <daniel@veillard.com>

	* libxslt/preproc.c: fixing the Document element precompilation
	  to avoid the problem raised in #125614

Tue Nov  4 01:08:17 PST 2003 William Brack <wbrack@mmm.com.hk>

	* tests/multiple/out/letter*.orig: updated to reflect change
	  to HTML output in libxml2 (formatting of <p>, bug #125093)

Sun Nov  2 09:07:32 PST 2003 William Brack <wbrack@mmm.com.hk>

	* libxslt/xslt.c: fixed bug #124286 - detect invalid name on
	  template
	
Sun Nov  2 10:51:58 CET 2003 Daniel Veillard <daniel@veillard.com>

	* Makefile.am configure.in libxslt.spec.in doc/libxslt-api.xml
	  libxslt/xslt.h libxslt/xsltwin32config.h: some cleanup and trial
	  for the upcoming 1.1.0 release
	* breakpoint/*: this release removes the deprecated breakpoint library

Sat Nov  1 17:04:27 PST 2003 William Brack <wbrack@mmm.com.hk>

	* libxslt/transform.c, tests/general/bug-119.out: fixed
	  bug #125502 and corrected expected test output
	* tests/general/bug-79.out: fixed broken test (bug #123328)
	* libxslt/pattern.c, libexslt/functions.c: minor change to
	  eliminate compilation warning
	  
Sat Nov  1 22:36:30 CET 2003 Daniel Veillard <daniel@veillard.com>

	* tests/REC/test-5.2-17.xsl tests/REC/test-5.2-18.xsl: fixing two
	  broken tests (revealed by #125502)

Sat Nov  1 07:41:06 CET 2003 Daniel Veillard <daniel@veillard.com>

	* libexslt/strings.c: fix bug #125265 about entities breaking
	  exsl:tokenize and exsl:split
	* tests/exslt/strings/split.1.* tests/exslt/strings/tokenize.1.*:
	  augmented the reression tests with the example from the bug report.

Fri Oct 31 20:26:04 CET 2003 Daniel Veillard <daniel@veillard.com>

	* libxslt/preproc.c: fix bug #120828 make sure that xsl:sort is
	  empty.

Fri Oct 31 15:53:45 CET 2003 Daniel Veillard <daniel@veillard.com>

	* libxslt/documents.c libxslt/imports.c libxslt/xslt.c libxslt/xslt.h
	  xsltproc/xsltproc.c: switch to use xmlReadfile instead of
	  xmlParseFile, this avoid relying on global parser options, far
	  far cleaner.
	* tests/XSLTMark/xslbench1.out tests/general/bug-90.out: fixes a
	  slightly corrected output for CDATA and STYLE element save.

Tue Oct 28 15:30:54 CET 2003 Daniel Veillard <daniel@veillard.com>

	* configure.in python/Makefile.am python/tests/Makefile.am: applied
	  patch from Roumen Petrov for bug #124539 when building outside the
	  source directory
	* libxslt/xsltutils.c: fixed the way to grab the line number from
	  the document, use the predefiend libxml2 API which mate it work
	  with both 2.5.x and 2.6.x

Mon Oct 27 08:57:43 HKT 2003 William Brack <wbrack@mmm.com.hk>

	* libxslt/xslt.c: put in #undef for IS_BLANK macros to fix
	  problem reported on the mailing list by Justin Fletcher

Fri Oct 24 00:49:05 CEST 2003 Daniel Veillard <daniel@veillard.com>

	* configure.in libxslt.spec.in: doing some testing and raising
	  the build requirement to 2.5.10 
	* libexslt/Makefile.am configure.in: applied patch from Graham Wilson
	  for linking the exslt lib with the lib being build instead of the
	  installed one

Thu Oct 23 15:48:39 HKT 2003 William Brack <wbrack@mmm.com.hk>

	* libxslt/pattern.c: Fixed problem with cascaded predicates
	  (more of bug 119946)

Thu Oct 23 15:37:26 HKT 2003 William Brack <wbrack@mmm.com.hk>

	* restored earliest portion of ChangeLog (was corrupted)

Wed Oct 22 13:07:50 CEST 2003 Daniel Veillard <daniel@veillard.com>

	* libxslt/xsltutils.[ch]: applied patch from Kasimier Buchcik
	  for xsltGetDebuggerStatus and xsltSetDebuggerStatus
	* doc/libxslt-api.xml: regenerated the API

Sun Oct 19 23:32:23 CEST 2003 Daniel Veillard <daniel@veillard.com>

	* configure.in: bump the libxml2 require to 2.6.0 which
	  should ship for good real soon...
	* doc/Makefile.am: fix installation of HTML pages
	* doc/libxslt-api.xml: rebuilt
	* libxslt/xsltexports.h: cleanup
	* python/generator.py: ATTRIBUTE_UNUSED is after the parameter
	* xsltproc/xsltproc.c: applied Crutcher Dunnavant --load-trace patch 2

Fri Oct 17 18:25:42 HKT 2003 William Brack <wbrack@mmm.com.hk>

	* libxslt/attributes.c: fixed bug 123822

Fri Oct 17 12:40:37 HKT 2003 William Brack <wbrack@mmm.com.hk>

	* libxslt/pattern.c: fixed bug 119946
	* configure.in: enhanced for better devel (me) testing

Wed Oct 15 17:30:43 CEST 2003 Daniel Veillard <daniel@veillard.com>

	* configure.in: applied a small patch from Troels Walsted Hansen
	  for python libxml2 detection.

Sat Sep 27 18:42:57 PDT 2003 William Brack <wbrack@mmm.com.hk>

	* libxslt/numbers.c, libxslt/extensions.c, libexslt/date.c,
	  python/libxslt.c, xsltproc/xsltproc.c: minor cleanup for
	  various compilation warnings (AIX as well as gcc)

Sat Sep 27 17:29:43 CEST 2003 Daniel Veillard <daniel@veillard.com>

	* libexslt/saxon.c: applied patch from Brett Kail to implement
	  saxon:line-number()

Thu Sep 25 11:46:40 CEST 2003 Daniel Veillard <daniel@veillard.com>

	* libxslt/extensions.h libxslt/extra.h: fix some header paths
	  as pointed by Steve Ball

Wed Sep 24 23:31:45 CEST 2003 Daniel Veillard <daniel@veillard.com>

	* libxslt/extensions.c: applied patch from Karl Eichwalder
	  apparently the xmlFree was introducting a memory error
	  on x86_64, though not reproduced.
	* libxslt/transform.c: patch from Shaun McCance fixing a comment.

Thu Sep 18 11:32:20 CEST 2003 Daniel Veillard <daniel@veillard.com>

	* python/libxslt.c: don't output errors to stdout by default
	  use stderr instead.

Thu Sep 18 11:28:43 CEST 2003 Daniel Veillard <daniel@veillard.com>

	* libxslt/functions.c libxslt/numbers.c: small fixes w.r.t.
	  IS_XSLT_REAL_NODE change
	* python/Makefile.am Makefile.am: some makefile "distclean"
	  target improvement from Graham Wilson
	* xsltproc/xsltproc.c: small fix from Alexey Efimov for options
	  display.

Mon Sep 15 07:41:14 PDT 2003 William Brack <wbrack@mmm.com.hk>

	* libxslt/xsltutils.h: Added XML_PI_NODE to the macro
	  IS_XSLT_REAL_NODE, fixed bug 120644.

Sat Sep 13 02:04:13 CEST 2003 Daniel Veillard <daniel@veillard.com>

	* xsltproc/xsltproc.c doc/xsltproc.1 doc/xsltproc.xml
	  libxslt/xsltutils.h: removing the DocBook SGML support

Fri Sep 12 13:52:07 CEST 2003 Daniel Veillard <daniel@veillard.com>

	* configure.in: preparing release libxslt-1.0.33
	* doc/*: updated and rebuilt the docs
	* doc/apibuild.py: small fixes for new tokens

Wed Sep 10 23:32:42 PDT 2003 William Brack <wbrack@mmm.com.hk>

	* transform.c: enhanced previous fix to bug #120684, using
	  excellent suggestion by Daniel
	* attributes.c: fixed bug #119583, merging attribute sets
	  from imported stylesheets.
	* tests/docs/Makefile.am tests/docs/bug-131.xml
	  tests/general/Makefile.am tests/docs/bug-131*: added tests
	  to the regression suite for bug #120684.
	  
Sat Sep  6 09:57:03 PDT 2003 William Brack <wbrack@mmm.com.hk>

	* pattern.c pattern.h imports.c: fixed bug 119946, caused by
	  incorrect creation of "extra" variables when compiling
	  templates on imported stylesheets.
	* tests/docs/Makefile.am tests/docs/bug-130.xml tests/docs/bug-130.doc
	  tests/general/Makefile.am test/docs/bug-130*: added tests
	  to the regression suite for this bug.


Wed Sep  3 15:33:40 CEST 2003 Daniel Veillard <daniel@veillard.com>

	* tests/xmlspec/*.html: tyny change HTML -> html DOCTYPE due to
	  a libxml2 change

Tue Sep  2 18:22:46 PDT 2003 William Brack <wbrack@mmm.com.hk>

	* transform.c: fixing bug #120684 on crash caused by text between
	  apply-templates

Tue Sep  2 16:05:37 CEST 2003 Igor Zlatkovic <igor@zlatkovic.com>

	* libxslt/xsltexports.h libexslt/exsltexports.h: defined additional 
	  macros which affect exports and added mingw section

Mon Sep  1 23:02:12 CEST 2003 Daniel Veillard <daniel@veillard.com>

	* libxslt/function.c: patch from Mark Vadoc to allow compiling
	  against libxml2 without XPointer supoort.

Fri Aug 29 12:28:12 CEST 2003 Daniel Veillard <daniel@veillard.com>

	* libxslt/transform.c: fixing the bug #120971 on cdata-section-elements
	  with namespaced names reported by Steve Hay
	* tests/docs/Makefile.am tests/docs/bug-129.*
	  tests/general/Makefile.am tests/general/bug-129*: added the
	  test to the regression suite for this bug.

Thu Aug 28 18:30:11 CEST 2003 Igor Zlatkovic <igor@zlatkovic.com>

	* libxslt/xsltexports.h libexslt/exsltexports.h: fixed typos reported by
	  Mark Vakoc 

Wed Aug 27 12:07:13 CEST 2003 Igor Zlatkovic <igor@zlatkovic.com>

	* libxslt/*.h: realigned parameters after taint

Wed Aug 27 09:59:54 CEST 2003 Igor Zlatkovic <igor@zlatkovic.com>

	* libxslt/xsltexports.h libexslt/exsltexports.h: fixed defs for 
	  Borland compiler, as reported by Eric Zurcher

Mon Aug 25 13:39:40 CEST 2003 Daniel Veillard <daniel@veillard.com>

	* libxslt/Makefile.am libexslt/Makefile.am: add the new header so they
	  get included in the distrib

Mon Aug 25 11:56:02 CEST 2003 Igor Zlatkovic <igor@zlatkovic.com>

	* libxslt/*.h libexslt/*.h: exportability taint of the headers.
	* libxslt/xsltexports.h libexslt/exsltexports.h: new files,
	  contain the export defs.

Tue Aug 19 00:38:46 CEST 2003 Daniel Veillard <daniel@veillard.com>

	* xsltproc/Makefile.am libxslt/libxslt.h libxslt/numbersInternals.h
	  libexslt/*.c configure.in: applied patch from Mikhail Grushinskiy
	  for compilation with MingW compiler on Windows.

Mon Aug 18 14:42:12 HKT 2003 William Brack <wbrack@mmm.com.hk>

	* keys.c: enhanced xsltInitCtxtKey to take care of multiple
	  instances of a key with the same namespace:name, reported
	  on the mailing list by Ian Young.  Added regression test
	  (bug-128).

Thu Aug 15 13:00:02 HKT 2003 William Brack <wbrack@mmm.com.hk>

	* variables.c: fixed bug 119699 (missing error on shadowed
	  variable)
	* autogen.sh: removed dependency on automake-1.4, updated
	  links for fetching auto* tools
	* doc/Makefile.am: added check for automatic regeneration of
	  win32/*.def.src when api xml files are updated.

Thu Aug 14 23:15:14 HKT 2003 William Brack <wbrack@mmm.com.hk>

	* transform.c: fixed bug 114563 (params not passed when
	  default template processed)

Thu Aug 14 22:04:37 HKT 2003 William Brack <wbrack@mmm.com.hk>

	* xslt.c: fixed bug 119862 (missing param on ns error print)

Sun Aug 10 00:21:48 CEST 2003 Daniel Veillard <daniel@veillard.com>

	* News configure.in: preparing libxslt-1.0.32 release
	* doc/* : updated the doc and rebuilt

Thu Aug  7 21:02:07 HKT 2003 William Brack <wbrack@mmm.com.hk>

	* breakpoint/Makefile.am: removed ref to libxslt.la
	* numbers.c transform.c python/libxml_wrap.h python/types.c
	  xlstproc/xsltproc.c: Minor cleanup of warning errors

Mon Aug  4 22:43:05 CEST 2003 Daniel Veillard <daniel@veillard.com>

	* doc/libxslt-api.xml doc/* doc/html/*: revuilt the API and docs

Sun Aug  3 21:34:44 EDT 2003 Daniel Veillard <daniel@veillard.com>

	* tests/docs/Makefile.am tests/docs/bug-127.*
	  tests/general/Makefile.am tests/general/bug-127*: added the
	  test from bug #118763 to the regression suite.

Sun Aug  3 17:40:13 EDT 2003 Daniel Veillard <daniel@veillard.com>

	* xsltproc/xsltproc.c: minor change, avoid wasting CPU cycles

Sun Aug 3 21:05:07 HKT 2003 William Brack <wbrack@mmm.com.hk>

	Minor cleanup of regression test general/bug-125

Sun Aug 3 19:46:42 HKT 2003 William Brack <wbrack@mmm.com.hk>

	Fixed bug 116517 - handling of '{' and '}'
	* templates.c: added checks for escaping and balancing of
	  curly brackets
	* tests/general/Makefile.am tests/docs/Makefile.am:
	  Added test case (bug-126) to regression suite.

Sun Aug 3 15:50:51 HKT 2003 William Brack <wbrack@mmm.com.hk>

	Fixed bug 117552 - sort with multiple keys
	* xsltutils.c: enhanced treatment of NaN when multiple sort
	  keys are specified.
	* tests/general/Makefile.am tests/docs/Makefile.am:
	  Added test case (bug-125) to regression suite.
	  
Sat Aug 2 09:55:38 HKT 2003 William Brack <wbrack@mmm.com.hk>

	Fixing bug 118561 (IRIX MIPSPro compiler warnings)
	* transform.c, variables.c, xslt.c, xsltutils.c:
	  removed some unused variables
  
Thu Jul 31 20:33:12 HKT 2003 William Brack <wbrack@mmm.com.hk>

	Fixing bug 118558 (Solaris 8 compiler warnings)
	* xslt.c: minor re-ordering of code
	* functions.c: added an explicit cast
	* number.c: added include for string.h
	* security.c: added an explicit cast

Tue Jul 29 12:43:17 HKT 2003 William Brack <wbrack@mmm.com.hk>

	* libexslt/date.c test/exslt/data/seconds.1 : changed sign
	  of date:seconds as previously posted to the mailing list
	* numbers.c: extensive modification to cater for UTF8 within
	  the various routines.

Thu Jul 24 19:38:56 IST 2003 Daniel Veillard <daniel@veillard.com>

	* libexslt/strings.c: applied patch from Shaun McCance to fix bug
	  #117616 about EXST str:tokenize.
	* tests/exslt/strings/Makefile.am tests/exslt/strings/tokenize.3.*:
	  added the test in the regression suite.

Wed Jul 23 21:57:39 IST 2003 Daniel Veillard <daniel@veillard.com>

	* xsltproc/xsltproc.c: applying a patch based on #117377
	  for --path option.

Mon Jul 21 20:28:11 IST 2003 Daniel Veillard <daniel@veillard.com>

	* libxslt/transform.c: allow strip-space to support full namespaces
	  using prefix:* , should fix #114287
	* tests/docs/Makefile.am tests/docs/bug-124.*
	  tests/general/Makefile.am tests/general/bug-124*: added a
	  test to the regression suite for this bug.

Mon Jul 21 20:09:57 IST 2003 Daniel Veillard <daniel@veillard.com>

	* libxslt/tramsform.c: make xsl:copy on attribute a copy in case
	  the attribute was already defined, should fix bug #113812
	* tests/docs/Makefile.am tests/docs/bug-123.*
	  tests/general/Makefile.am tests/general/bug-123*: added the
	  test to the regression suite.

Fri Jul 18 13:13:52 CEST 2003 Daniel Veillard <daniel@veillard.com>

	* libexslt/strings.c: applied patch from Shaun McCance to implement
	  exslt:split c.f. #117752
	* tests/exslt/strings/Makefile.am tests/exslt/strings/split.1.*:
	  added the test to the regression suite.

Thu Jul 17 10:35:22 CEST 2003 Daniel Veillard <daniel@veillard.com>

	* libxslt/numbers.c: quick fix for an HP-UX compilation problem,
	  might require more attention could be an Unicode support breakage.

Wed Jul 16 10:46:35 CEST 2003 Daniel Veillard <daniel@veillard.com>

	* libxslt/numbers.c libxslt/transform.c libxslt/transform.h
	  libxslt/xsltInternals.h: optimize text node coalescing by 
	  caching info about the last text node generated and doing
	  fast alloc/copy of the text. Should fix #115273

Mon Jul 14 13:00:00 HKT 2003 William Brack <wbrack@mmm.com.hk>

	* fixed bug 113520, incorrect result for date:seconds
	  with change to type casting in libexslt/date.c

Sat Jul 12 20:35:28 HKT 2003 William Brack <wbrack@mmm.com.hk>

	* fixed bug 114764: trouble with globals and RVT's
	  with minor changes in variables.c and transform.c
	  so that any global instantiated with an RVT gets
	  uninitialized when the RVT is destroyed.
	  
Thu Jul 10 15:47:33 CEST 2003 Daniel Veillard <daniel@veillard.com>

	* libxslt/transform.c: simple cast missing Peter Breitenlohner
	* breakpoint/Makefile.am: added deps to libxslt
	* tests/exslt/common/Makefile.am: integrated William Brack test
	  in the regression suite

Wed Jul  9 21:27:43 HKT 2003 William Brack <wbrack@mmm.com.hk>

	* fixed bug 114812, trouble with imported exslt functions
	  added lookup function in libxslt/extension.c
	  enhanced exsltInitFunc in libexslt/functions.c to take
	  better care of imports

Wed Jul  9 12:19:34 CEST 2003 Daniel Veillard <daniel@veillard.com>

	* python/generator.py python/libxslt-python-api.xml python/libxslt.c
	  python/libxslt_wrap.h python/libxsltclass.txt: patch from
	  Sean Treadway, adding Python bindings for extension element and
	  some bindings cleanups.
	* python/tests/Makefile.am python/tests/extelem.py: also add an
	  example/test.

Tue Jul  8 12:20:11 CEST 2003 Daniel Veillard <daniel@veillard.com>

	* python/libxml_wrap.h: applied patch from #116943 which should
	  fix the xsltSaveResultToFile python binding.

Mon Jul  7 11:03:18 CEST 2003 Daniel Veillard <daniel@veillard.com>

	* INSTALL: removed an old reference to libxml2 >= 2.2.12

Sun Jul  6 23:57:35 CEST 2003 Daniel Veillard <daniel@veillard.com>

	* configure.in: releasing 1.0.31
	* doc/*: update and rebuild of the docs

Sun Jul  6 18:31:56 CEST 2003 Daniel Veillard <daniel@veillard.com>

	* libxslt/transform.c: fixing bug #115913 for xsl:copy with namespace
	  nodes.
	* tests/docs/Makefile.am tests/docs/bug-122.*
	  tests/general/Makefile.am tests/general/bug-122*: added the
	  test to the regression suite.
	
Sun Jul  6 18:09:13 CEST 2003 Daniel Veillard <daniel@veillard.com>

	* libxslt/preproc.c: fix bug #115778 for attribute value template
	  on xsl:sort order

Sun Jul  6 17:22:35 CEST 2003 Daniel Veillard <daniel@veillard.com>

	* libxslt/documents.c libxslt/transform.c: applied patch from
	  Keith Isdale to desactivate node numbering when running under
	  the debugger.

Sun Jul  6 00:00:31 CEST 2003 Daniel Veillard <daniel@veillard.com>

	* libxslt/security.c: fix the write checking code when
	  the output filename does not parse as an URL bug #115402

Sun Jun 22 19:38:04 CEST 2003 Daniel Veillard <daniel@veillard.com>

	* libxslt/Makefile.am: Albert Chin pointed out that trio.h and
	  triodef.h were missing from the distribution

Fri Jun 13 16:53:33 CEST 2003 Daniel Veillard <daniel@veillard.com>

	* libxslt.spec.in libexslt/Makefile.am libexslt/libexslt.3
	  libxslt/Makefile.am libxslt/libxslt.3: Moved the man pages
	  to section 3
	* libexslt/sets.c: applied patch from Peter Breitenlohner
	* doc/*: rebuilt the docs
	* tests/docbook/result//* tests/xmlspec/*.html: changes in
	  generattion of &quot; as " in element content.

Sun Jun 08 22:57:13 CEST 2003 Igor Zlatkovic <igor@zlatkovic.com>

	* libxslt/transform.c: changed xsltChoose to ignore whitespace 
	  which is a sibling of xsl:when

Sat May 31 17:18:21 CEST 2003 Igor Zlatkovic <igor@zlatkovic.com>

	* libxslt/xslt.c: fixed a possible crash when the document
	  wasn't a proper stylesheet.

Tue May 20 12:14:12 CEST 2003 Daniel Veillard <daniel@veillard.com>

	* libxslt/variables.c: fixes a 64bits cleanliness issue #113318

Sat May 17 13:25:32 CEST 2003 Igor Zlatkovic <igor@zlatkovic.com>

	* win32/defgen.xsl: new file, generates the export sources.
	* win32/*.def.src: these are now autogenerated, changes to these
	  will not be logged anymore.

Fri May 16 13:22:31 EDT 2003 Daniel Veillard <daniel@veillard.com>

	* tests/docs/Makefile.am tests/docs/bug-121.*
	  tests/general/Makefile.am tests/general/bug-121*: added the
	  example for bug #112904 in the regression tests, the bug fix is
	  actually in libxml2

Thu May 15 16:26:34 EDT 2003 Daniel Veillard <daniel@veillard.com>

	* xsltproc/xsltproc.c: fixing portability bug #113002 on HP-UX
	* configure.in libxslt.spec.in python/Makefile.am: cleanup
	  of --with-python like for libxml2

Thu May 15 11:45:00 HKT 2003 William Brack <wbrack@mmm.com.hk>

	* libxslt/xsltutils.c: fixing bug #112995, a problem with
	  NaN within the sort element. Also added regression test.

Tue May 13 18:22:38 EDT 2003 Daniel Veillard <daniel@veillard.com>

	* doc/Makefile.am: fixing bug #112803 , make sure to avoid
	  network accesses when building

Sat May 10 14:19:14 EDT 2003 Daniel Veillard <daniel@veillard.com>

	* libxslt/transform.c: fixed a segfault introduced with the RVT
	  handling change, bug #112703 .

Sat May 10 13:05:21 EDT 2003 Daniel Veillard <daniel@veillard.com>

	* libxslt/xslt.c: make sure stylesheet compilation errors
	  forces a NULL stylesheet, fixes #112270

Sun May  4 17:41:23 CEST 2003 Daniel Veillard <daniel@veillard.com>

	* NEWS configure.in : preparing release 1.0.30
	* doc/apibuild.py: backported a patch from libxml2
	* doc/*: updated and rebuilt the docs

Wed Apr 30 22:44:49 CEST 2003 Daniel Veillard <daniel@veillard.com>

	* libxslt/transform.c libxslt/variables.c libxslt/xsltInternals.h:
	  cleaning up Result Value Tree handling
	* libexslt/functions.c libexslt/strings.c: fixed a pair of
	  implementations.
	* tests/exslt/strings/Makefile.am tests/exslt/strings/tokenize.2.*:
	  added Mark Vakoc test combining for-each and exslt:tokenize

Wed Apr 30 15:23:33 CEST 2003 Daniel Veillard <daniel@veillard.com>

	* libxslt/transform.c: fixing bug #111755 when a template is
	  applied to an attribute
	* tests/docs/Makefile.am tests/docs/bug-119.*
	  tests/general/Makefile.am tests/general/bug-119*: added the
	  example in the regression tests for that bug.

Tue Apr 29 15:18:31 CEST 2003 Daniel Veillard <daniel@veillard.com>

	* doc/Makefile.am doc/libxslt.xml: upgraded to the XML/XSLT toolchain
	  for the HTML generation fixing #111799
	* doc/html/*.html doc/html/*.png: associated update

Sun Apr 27 18:00:12 CEST 2003 Igor Zlatkovic <igor@zlatkovic.com>

	* libxslt/variables.c: removed premature call to xsltFreeStackElem
	* win32/libxslty.def.src: added more exports

Sun Apr 27 12:46:31 CEST 2003 Daniel Veillard <daniel@veillard.com>

	* NEWS doc/*.xsl doc/*.html: updated the web site, made the
	  transition to XHTML1 added validity checking to the makefile rules.

Sat Apr 26 14:00:58 CEST 2003 Daniel Veillard <daniel@veillard.com>

	* python/generator.py: fixed a problem in the generator where
	  the way functions are remapped as methods on classes was
	  not symetric and dependant on python internal hash order,
	  as reported by Stéphane Bidoul
	* libexslt/strings.c: attempt at fixing an object type pbm
	* libxslt/triodef.h: update for OpenVMS from libxml2

Fri Apr 25 15:26:26 CEST 2003 Daniel Veillard <daniel@veillard.com>

	* doc/Makefile.am doc/xsltproc.1 doc/xsltproc.xml: automated the
	  generation of the man page

Wed Apr 23 23:27:44 CEST 2003 Daniel Veillard <daniel@veillard.com>

	* libexslt/sets.c: fixed a bug introduced in the last commit
	* libxslt/transform.c: tried to fix #111437
	* tests/docbook/result/xtchunk/html/*.orig
	  tests/multiple/out/*.orig: side effect of #111437 change.

Wed Apr 23 22:41:08 CEST 2003 Daniel Veillard <daniel@veillard.com>

	* libexslt/strings.c: applied last patch for #110023 from 
	  Mark Vakoc
	* libexslt/sets.c: fixed a memory leak when mixing one of the
	  EXSLT set functions and a Result Value Tree
	* TODO: there are other bugs around in libexslt/sets.c in conjunction
	  with Result Value Tree

Wed Apr 23 17:00:16 CEST 2003 Daniel Veillard <daniel@veillard.com>

	*  libxslt/extensions.c: patch from Vasily Tchekalkin fixing
	   bug #111420 about double initialization of extension contexts

Wed Apr 23 14:25:46 CEST 2003 Daniel Veillard <daniel@veillard.com>

	* libxslt/transform.c: fix bug #110577 namespace in copy-of
	  don't obbey the same rules as for literal reusl elements.
	* tests/docs/Makefile.am tests/docs/bug-118.*
	  tests/general/Makefile.am tests/general/bug-118*: added the
	  example in the regression tests for that bug.
	* libxslt/variables.c: fixed a bug introduced in fixing #110020
	* tests/docs/Makefile.am tests/docs/bug-11[67].*
	  tests/general/Makefile.am tests/general/bug-11[67]*: added 2
	  regression tests one still exposing a mem leak (Mark Vadoc).

Tue Apr 22 16:01:25 CEST 2003 Daniel Veillard <daniel@veillard.com>

	* libxslt/pattern.c: fix a memory related segfault on a
	  pattern compilation error #110189

Tue Apr 22 15:45:25 CEST 2003 Daniel Veillard <daniel@veillard.com>

	* libxslt/variables.c: fixing bug #110020 on global parameter
	  and variables mismatch
	* tests/reports/Makefile.am tests/reports/cmdlineparams.*: added
	  the test to the regression suite

Mon Apr 21 12:22:31 CEST 2003 Daniel Veillard <daniel@veillard.com>

	* libexslt/math.c: applied patch from Charles Bozeman fixing
	  the math power function where args were inverted #110996
	* tests/exslt/math/Makefile.am tests/exslt/math/power.1.*:
	  added the test to the regraession for #110996
	* libexslt/sets.c: avoid a problem with nodesets.

Wed Apr 14 18:10:21 CEST 2003 Igor Zlatkovic <igor@zlatkovic.com>

	* libxslt/win32config.h: added HAVE_MATH_H
	  
Wed Apr 13 14:04:15 CEST 2003 Igor Zlatkovic <igor@zlatkovic.com>

	* win32/Makefile.msvc: fixed compilation with thread-enabled
	  libxml
	  
Wed Apr  9 22:02:17 CEST 2003 Daniel Veillard <daniel@veillard.com>

	* libexslt/strings.c: applied patch from Mark Vakoc fixing a problem
	  with RTF in libexslt

Mon Apr  7 14:39:01 CEST 2003 Daniel Veillard <daniel@veillard.com>

	* libxslt/keys.c libxslt/templates.c libxslt/transform.c
	  libxslt/variables.c: Fixes bug #110023 reported by Mark Vakoc and
	  other places where ctxt->document pointer may be used without 
	  checking it agaisnt NULL.
	* tests/docs/Makefile.am tests/docs/bug-115.*
	  tests/general/Makefile.am tests/general/bug-115*: added the
	  example in the regression tests for that bug.
	* libxslt/trio.h libxslt/triodef.h: update of Trio from Bjorn Reese

Tue Apr  1 13:39:26 CEST 2003 Daniel Veillard <daniel@veillard.com>

	* configure.in NEWS: preparing 1.0.29 release
	* libxslt/documents.c: generate the document order for document()
	  loaded resources.
	* doc/*: updated and regenerated the docs

Tue Apr  1 11:28:01 CEST 2003 Daniel Veillard <daniel@veillard.com>

	* libxslt/transform.c: fixed a namespace redundancy problem
	  in xsl:element
	* tests/docs/Makefile.am tests/docs/bug-114.*
	  tests/general/Makefile.am tests/general/bug-114*: added an
	  example in the regression tests for that bug.

Fri Mar 28 12:19:35 CET 2003 Daniel Veillard <daniel@veillard.com>

	* python/libxsl.py: fix bug #109395 as pointed out by Ben Phillips
	  and avoid some warnings when loading the python modules on non
	  Linux platforms.
	* libxslt/transform.c: fix a bug introduced in the document lookup
	  and exhibited by the keys test.

Wed Mar 26 22:41:00 CET 2003 Daniel Veillard <daniel@veillard.com>

	* tests/docs/Makefile.am tests/docs/bug-113.*
	  tests/general/Makefile.am tests/general/bug-113*: added an
	  example in the regression tests for bug #109160 fixed in libxml2

Wed Mar 26 21:43:30 CET 2003 Daniel Veillard <daniel@veillard.com>

	* configure.in python/Makefile.am python/libxslt.c libxslt/xsltutils.c
	  libxslt/trio.h libxslt/triodef.h: portability fixes from Albert Chin
	* python/libxslt.py: avoid RTLD_GLOBAL detection warning too

Wed Mar 26 19:08:55 CET 2003 Daniel Veillard <daniel@veillard.com>

	* libxslt/transform.c: forgot to make one change related to
	  Result Value Tree change, pointed out by Sebastian Rahtz
	* tests/docs/Makefile.am tests/docs/bug-112.*
	  tests/general/Makefile.am tests/general/bug-112*: added an
	  example in the regression tests that bug

Wed Mar 26 01:38:38 CET 2003 Daniel Veillard <daniel@veillard.com>

	* libxslt/transform.c: second part of the patch fixing #108905
	  performances problems, ask for computation of document order on
	  the document transformed and avoid inefficiencies building large
	  nodesets of unique nodes.
	* configure.in: fix a trouble with libtool in my debug environment.

Mon Mar 24 22:30:00 CET 2003 Daniel Veillard <daniel@veillard.com>

	* libxslt/pattern.c libxslt/transform.c libxslt/variables.c:
	  Result Value Tree are now generated with a document root node
	  not an element, it's quite cleaner.
	* configure.in libxslt.spec.in NEWS: But this requires libxml2-2.5.5
	  also prepared for libxslt-1.0.28 release
	* doc/*: updated and regenerated the docs

Mon Mar 24 15:01:07 CET 2003 Daniel Veillard <daniel@veillard.com>

	* libxslt/pattern.c libxslt/transform.c libxslt/variables.c:
	  Finally fixed bug #75813, processing or Result Value Tree 
	  converted into node-sets should be a bit more sensible now.
	* tests/exslt/common/node-set.2.out: the associated fix in libxml2
	  fixes this regression test, there is 4 nodes, not 3
	* tests/docs/Makefile.am tests/docs/bug-111.*
	  tests/general/Makefile.am tests/general/bug-111*: added an
	  example in the regression tests for bug #75813
	
Sun Mar 23 13:09:17 CET 2003 Daniel Veillard <daniel@veillard.com>

	* tests/docs/Makefile.am tests/docs/bug-110.*
	  tests/general/Makefile.am tests/general/bug-110*: added an
	  example in the regression tests for bug #108976 which is
	  fixed in libxml2

Sat Mar 22 12:35:47 CET 2003 Daniel Veillard <daniel@veillard.com>

	* tests/docs/Makefile.am tests/docs/bug-109.xml
	  tests/general/Makefile.am tests/general/bug-109*: added an
	  example in the regression tests for the invalid bug #108716

Sat Mar 22 12:01:24 CET 2003 Daniel Veillard <daniel@veillard.com>

	* libxslt/variables.c: fixed bug #108633 reported by
	  Jerome Pesenti about recursive global variables/param detections
	* tests/reports/Makefile.am tests/reports/rec*: added regression
	  tests for the checking of recusion in global/local param/variables.

Fri Mar  7 16:08:24 CET 2003 Daniel Veillard <daniel@veillard.com>

	* libxslt/numbers.c: valgrind pointed out an uninitialized
	  variable use in format-number()

Fri Mar  7 15:27:56 CET 2003 Daniel Veillard <daniel@veillard.com>

	* tests/docs/Makefile.am tests/docs/bug-108.xml
	  tests/general/Makefile.am tests/general/bug-108*: added an
	  example in the regression tests bug #107804 fixed in libxml2

Wed Mar  5 12:47:31 CET 2003 Daniel Veillard <daniel@veillard.com>

	* libxslt/pattern.c: fixed bug #107591 node() in pattern
	  matches should catch comments and PIs
	* tests/docs/Makefile.am tests/docs/bug-107.xml
	  tests/general/Makefile.am tests/general/bug-107*: added an
	  example in the regression tests for this case

Wed Feb 26 16:49:17 CET 2003 Daniel Veillard <daniel@veillard.com>

	* tests/docs/Makefile.am tests/docs/bug-106.xml
	  tests/general/Makefile.am tests/general/bug-106*: added the next
	  example for bug #106788 from James Clark in the regression tests,
	  the bug fix is actually in libxml2

Tue Feb 25 16:19:45 CET 2003 Daniel Veillard <daniel@veillard.com>

	* configure.in doc/Makefile.am xsltproc/Makefile.am: some cleanup
	  for Python checks, makefile cleanup, and convenience changes

Mon Feb 24 23:49:01 CET 2003 Daniel Veillard <daniel@veillard.com>

	* xsltproc/xsltproc.c: had to comment out Igor last change
	  since it made libxslt-1.0.27 depends on libxml2 newly 
	  API extension which hasn't propagated yet :-(

Mon Feb 24 22:21:09 CET 2003 Daniel Veillard <daniel@veillard.com>

	* configure.in: preparing release 1.0.27
	* doc/*: updated and rebuilt the docs

Mon Feb 24 19:43:15 CET 2003 Daniel Veillard <daniel@veillard.com>

	* libxslt/namespaces.c: fixed #106554 for spurious xmlns:nsX=""
	  generation

Sun Feb 23 14:52:57 CET 2003 Daniel Veillard <daniel@veillard.com>

	* tests/docs/Makefile.am tests/docs/bug-105.xml
	  tests/general/Makefile.am tests/general/bug-105*: added the
	  example for bug #106788 from James Clark in the regression tests,
	  the bug fix is actually in libxml2

Sun Feb 23 14:25:13 CET 2003 Daniel Veillard <daniel@veillard.com>

	* libxslt/namespaces.c libxslt/transform.c: fixed bug #106789 from
	  James Clark and a bit of cleanup
	* tests/docs/Makefile.am tests/docs/bug-104.xml
	  tests/general/Makefile.am tests/general/bug-104*: added the
	  example in the regression tests for this case

Fri Feb 21 17:07:59 CET 2003 Daniel Veillard <daniel@veillard.com>

	* libxslt.spec.in: fixed RH#84801 wrong prereqs in the spec file

Wed Feb 19 18:51:06 CET 2003 Igor Zlatkovic <igor@zlatkovic.com>

	* libxslt/functions.c libxslt/xslt.c: fixed bug 106251

Wed Feb 19 15:52:33 CET 2003 Igor Zlatkovic <igor@zlatkovic.com>

	* xsltproc/xsltproc.c: obsoleted xmlNormalizeWindowsPath
	* win32/configure.js: included handling of the trio option

Mon Feb 10 17:34:32 CET 2003 Daniel Veillard <daniel@veillard.com>

	* configure.in doc/*: preparing release 1.0.26

Fri Feb  7 15:47:20 CET 2003 Daniel Veillard <daniel@veillard.com>

	* libxslt/functions.c: fixing another bug in document(), bug #105450
	* tests/documents/test_bad.result: Slight change to the output

Fri Feb  7 15:34:24 CET 2003 Daniel Veillard <daniel@veillard.com>

	* libxslt/functions.c: fixing a segfault in document(), bug #105418
	* tests/documents/Makefile.am tests/documents/test_bad: add the
	  specific test as suggested by Jean T Anderson

Fri Feb  7 14:18:40 CET 2003 Daniel Veillard <daniel@veillard.com>

	* libxslt/extensions.c libxslt/keys.c libxslt/pattern.c
	  libxslt/preproc.c libxslt/transform.c libxslt/variables.c
	  libxslt/xslt.c: tried to fix 105387 and all similar cases
	  in the library sources.

Wed Feb  5 16:04:10 CET 2003 Daniel Veillard <daniel@veillard.com>

	* doc/* configure.in: preparing for release of 1.0.25

Wed Feb  5 00:07:43 CET 2003 Daniel Veillard <daniel@veillard.com>

	* xsltproc/xsltproc.c: fixed bug #99623

Tue Feb  4 22:10:17 CET 2003 Daniel Veillard <daniel@veillard.com>

	* libxslt/transform.c: fixing bug #105116 sometimes one need
	  to generate a default namespace reset xmlns="" in the output
	* tests/docs/Makefile.am tests/docs/bug-103.xml
	  tests/general/Makefile.am tests/general/bug-103*: added the
	  example in the regression tests for this case

Tue Feb  4 18:39:35 CET 2003 Daniel Veillard <daniel@veillard.com>

	* libxslt/pattern.c libxslt/transform.c: changed the way the
	  root element of value tree are handled to fix bug #104123

Tue Feb  4 18:15:01 CET 2003 Daniel Veillard <daniel@veillard.com>

	* README: change of policy w.r.t. mails
	* configure.in: small cleanup
	* libxslt/transform.c libxslt/xslt.c libxslt/variables.c: fixed
	  a couple of bugs raised by Eric van der Vlist in #104114
	* tests/exslt/*/*.out: slight change to the tests

Tue Feb  4 17:18:54 CET 2003 Daniel Veillard <daniel@veillard.com>

	* doc/xsltproc.1 doc/xsltproc.xml: fixing bug #104096, put
	  emphasis on the fact that --docbook should not be used
	  for XML.

Wed Jan 22 16:43:49 CET 2003 Daniel Veillard <daniel@veillard.com>

	* python/libxslt.c: fixed a couple of return error #104150
	  reported by Peter O'Shea 

Fri Jan 17 17:43:43 CET 2003 Daniel Veillard <daniel@veillard.com>

	* xsltproc/xsltproc.c: fixed a double free of stylesheet
	  when applied to a standalone stylesheet

Tue Jan 14 16:22:48 CET 2003 Daniel Veillard <daniel@veillard.com>

	* configure.in: preparing release 2.0.24
	* libxslt.spec.in: small update
	* doc/*: updated the news, rebuilt the APIs descriptions

Tue Jan 14 14:23:47 CET 2003 Daniel Veillard <daniel@veillard.com>

	* libxslt/functions.c: fixed #101502 by applying and cleaning up
	  the associated patch from Daniel Stodden.
	* tests/documents/Makefile.am tests/documents/fragment*: added a
	  specific test.

Mon Jan 13 23:25:59 CET 2003 Daniel Veillard <daniel@veillard.com>

	* libxslt/extensions.c libxslt/transform.c: fixing bug #101602
	  for extension modules init and shutdown callbacks, check that
	  they are now called when needed.
	* python/libxsl.py python/libxslt-python-api.xml python/libxslt.c:
	  started adding the extension module support at the Python level.
	  Still a strange bug to hunt down left.

Sun Jan 12 23:56:18 CET 2003 Daniel Veillard <daniel@veillard.com>

	* libxslt/attributes.c libxslt/xsltInternals.h libxslt/imports.c
	  libxslt/xslt.c: fixed bug #101003 on attribute-sets value
	  computation in the presence of imports
	* tests/docs/Makefile.am tests/docs/bug-102.xml
	  tests/general/Makefile.am tests/general/bug-102*: added an
	  example in the regression tests for this case

Fri Jan 10 10:34:23 CET 2003 Daniel Veillard <daniel@veillard.com>

	* xsltproc/xsltproc.c: final touch to #102800 fix

Thu Jan  9 18:17:40 CET 2003 Daniel Veillard <daniel@veillard.com>

	* xsltproc/xsltproc.c: tried to fix #102800 for good. Reenabled
	  memory debug checking which got deactivated at some point ?!?
	* libexslt/date.c libxslt/attributes.c: fixing some memory leaks
	* libxslt/xsltutils.c: very small change on HTML indentation handling

Thu Jan  9 14:28:19 CET 2003 Daniel Veillard <daniel@veillard.com>

	* tests/REC/test-8-1.xsl tests/REC/test-9.1-2.xsl 
	  tests/general/bug-83.xsl tests/multiple/dict.xsl: added some
	  exclude-result-prefixes to avoid extra namespace declaration being
	  dumped following the fix for #102920 in libxml2

Wed Jan  8 12:33:47 CET 2003 Daniel Veillard <daniel@veillard.com>

	* libxslt/transform.c: fixed a problem related to directory
	  checking and creation raised by Craig Goss

Thu Jan  2 23:23:30 CET 2003 Daniel Veillard <daniel@veillard.com>

	* libexslt/strings.c: applied patch from Jörg Walter to provide
	  URI escaping and unescaping functions.

Thu Dec 26 15:43:31 CET 2002 Daniel Veillard <daniel@veillard.com>

	* libexslt/strings.c: Alexey Efimov found a typo bug in
	  exsltStrPaddingFunction()

Mon Dec 23 15:43:59 CET 2002 Daniel Veillard <daniel@veillard.com>

	* python/libxslt.c: patch from Stéphane Bidoul for Python 2.1

Sun Dec 22 22:54:04 CET 2002 Daniel Veillard <daniel@veillard.com>

	* vms/build_xslt.com libxslt/xsltconfig.h.in libxslt/xsltutils.c:
	  applied patch from Craig A. Berry for the VMS port.

Wed Dec 18 15:41:21 CET 2002 Daniel Veillard <daniel@veillard.com>

	* libxslt/xsltInternals.h: increase the max number of cascaded
	  sort operations.
	* AUTHORS doc/* win32/*: updated Igor's mail and the Web page for
	  the Windows binaries.

Mon Dec 16 19:31:16 CET 2002 Igor Zlatkovic <igor@stud.fh-frankfurt.de>

	* win32/libxslt.def.src: added more exports for Stephane Bidoul
	
Fri Dec 13 14:50:12 CET 2002 Daniel Veillard <daniel@veillard.com>

	* doc/apibuild.py doc/libexslt-api.xml doc/libxslt-api.xml: updated
	  the apibuilder script, regenerated the APIs

Fri Dec 13 11:59:07 CET 2002 Daniel Veillard <daniel@veillard.com>

	* libxslt/numbers.c: numbering should not traverse XInclude
	  nodes left in the tree. Closes bug #101114 raised by
	  Bernd Kuemmerlen

Thu Dec 12 01:17:09 CET 2002 Daniel Veillard <daniel@veillard.com>

	* doc/apibuild.py: fixed a bug in merging public info from
	  C modules.
	* win32/Makefile.msvc win32/configure.js: patch from Mark Vakoc
	  the iconv option to configure.js didn't work, and 
	  added zlib option needed when linking xsltproc statically

Wed Dec 11 19:18:45 CET 2002 Daniel Veillard <daniel@veillard.com>

	* doc/Makefile.am doc/apibuild.py doc/libexslt-api.xml: added
	  the generation of libexslt-api.xml
        * libexslt/exslt.h: small cleanup.

Wed Dec 11 18:45:09 CET 2002 Daniel Veillard <daniel@veillard.com>

	* doc/Makefile.am doc/apibuild.py doc/libxslt-api.xml:
	  copied over the apibuild.py from libxml2, adapted a bit and
	  regenerated the API description in XML. Todo: libexslt-api.xml
	* libxslt/attributes.c libxslt/documents.c libxslt/extensions.c
	  libxslt/imports.c libxslt/numbers.c libxslt/numbersInternals.h
	  libxslt/pattern.c libxslt/preproc.c libxslt/security.c
	  libxslt/templates.c libxslt/transform.c libxslt/transform.h
	  libxslt/variables.c libxslt/xslt.c libxslt/xsltInternals.h
	  libxslt/xsltutils.c libxslt/xsltutils.h: cleanup based on the
	  report from the scripts.
	* libxslt.spec.in: make sure libxslt-api.xml ends up in the devel
	  package

Thu Dec  5 18:05:44 CET 2002 Daniel Veillard <daniel@veillard.com>

	* libxslt/transform.c: xsl:element generated superfluous xmlns
	  declarations, closes bug #99905
	* tests/docs/Makefile.am tests/docs/bug-101.xml
	  tests/general/Makefile.am tests/general/bug-101.*: added the
	  example in the regression tests for this case

Wed Dec  4 18:12:24 CET 2002 Daniel Veillard <daniel@veillard.com>

	* libxslt/xslt.c: Matt Sergeant reported a bug when having comments
	  within an <xsl:text>

Mon Dec  2 17:19:38 CET 2002 Daniel Veillard <daniel@veillard.com>

	* libxslt/extensions.c: applied patch from Josh Parsons fixing bug
	  #100056
	* tests/docs/Makefile.am tests/docs/bug-100.xml
	  tests/general/Makefile.am tests/general/bug-100.*: added the
	  example in the regression tests for this case
	* tests/docs/Makefile.am tests/docs/bug-99.xml
	  tests/general/Makefile.am tests/general/bug-99.*: this test
	  covers an xsl:attribute namespace bug that Norm pointed out.

Thu Nov 28 17:52:21 CET 2002 Daniel Veillard <daniel@veillard.com>

	* libxslt/xsltInternals.h libxslt/xsltutils.c libxslt/xsltutils.h
	  win32/libxslt.def.src: applied another patch from Richard Jinks
	  for the export of teh sorting routine and allowing per context
	  sort.

Wed Nov 27 13:33:26 CET 2002 Daniel Veillard <daniel@veillard.com>

	* libxslt/preproc.c libxslt/xsltInternals.h libxslt/xsltutils.c
	  libxslt/xsltutils.h: Applied patch from Richard Jinks to allow
	  redefining the sorting routine, plus a bit of tweaking of the
	  interfaces.

Tue Nov 26 16:02:38 CET 2002 Daniel Veillard <daniel@veillard.com>

	* doc/Makefile.am doc/parsedecl.py: fixed the API generation
	  scripts.
	* doc/libxslt-api.xml doc/libxslt-refs.xml: regenerated
	* doc/html/*.html: updated too
	* python/libxsltclass.txt: updated too

Tue Nov 26 15:17:13 CET 2002 Daniel Veillard <daniel@veillard.com>

	* libxslt/xsltutils.c libxslt/xsltutils.h: added the function
	  xsltGetProfileInformation() to retrieve profiling informations
	  from an XSLT transformation context. It returns it as an XML
	  tree. Provided by Michael Rothwell this closes RFE #99527

Tue Nov 26 14:40:45 CET 2002 Daniel Veillard <daniel@veillard.com>

	* libxslt/imports.c: apply patch from Daniel Stodden, a bug
	  in xsltFindElemSpaceHandling() missing imported informations
	* tests/REC/stand-2.7-1.stand.out: this change slightly the result
	  of this test.

Mon Nov 25 17:33:48 CET 2002 Daniel Veillard <daniel@veillard.com>

	* libxslt/namespaces.c: fix for namespace generation on 
	  attributes created with xsl:attribute

Mon Nov 25 17:30:02 CET 2002 Daniel Veillard <daniel@veillard.com>

	* libxslt.spec.in configure.in: add a line in %changelog for releases

Mon Nov 25 14:57:53 CET 2002 Daniel Veillard <daniel@veillard.com>

	* libxslt/transform.h: Kir Kolyshkin pointed out it lacked 
	  xsltInternals.h reference.

Sun Nov 24 15:49:58 CET 2002 Daniel Veillard <daniel@veillard.com>

	* python/tests/*.py: enable libxml2 memory debug before
	  loading libxslt since libxslt initialization now includes
	  EXSLT registration which initialize the libxml2 library and
	  allocate memory

Sun Nov 24 13:58:48 CET 2002 Daniel Veillard <daniel@veillard.com>

	* python/libxsl.py: updated with new version from Stéphane Bidoul

Sat Nov 23 22:49:08 CET 2002 Igor Zlatkovic <igor@stud.fh-frankfurt.de>

	* win32/libxslt.def.src: exported new functions

Sat Nov 23 14:46:06 CET 2002 Daniel Veillard <daniel@veillard.com>

	* libexslt/date.c: patch from Charles Bozeman fixing a memory
	  leak in exsltDateDurationFunction pointed out by Bernard Brinkhus
	* python/tests/exslt.py: trouble with mem debug in that specific
	  test...

Sat Nov 23 12:33:58 CET 2002 Daniel Veillard <daniel@veillard.com>

	* libxslt/xsltInternals.h: Alexey Efimov reported a portability
	  problem when compiling on HP-UX

Sat Nov 23 12:23:32 CET 2002 Daniel Veillard <daniel@veillard.com>

	* python/generator.py python/libxslt.c: fixes for compiling
	  without config.h

Thu Nov 21 18:51:29 CET 2002 Daniel Veillard <daniel@veillard.com>

	* libxslt/transform.c: fixed bug #99168 select evaluating to
	  a node list check

Thu Nov 21 15:12:33 CET 2002 Daniel Veillard <daniel@veillard.com>

	* tests/documents/result.xhtml: the XHTML1 serialization change
	  to libxml2 modifies slightly the result of that test.

Mon Nov 18 11:38:46 CET 2002 Daniel Veillard <daniel@veillard.com>

	* configure.in: the python bindings requires libxml2 >= 2.4.25
	  for the regexp stuff.

Mon Nov 18 10:09:06 CET 2002 Daniel Veillard <daniel@veillard.com>

	* configure.in: similar patch to #98825 for --with-python

Sun Nov 17 22:06:59 CET 2002 Daniel Veillard <daniel@veillard.com>

	* libxslt/variables.c: fix bug #98793 on clash of imported global
	  variables.
	* tests/reports/tst-1.err: this changes the output of that test

Sun Nov 17 18:12:20 CET 2002 Daniel Veillard <daniel@veillard.com>

	* configure.in: preparing 1.0.23
	* doc/*: rebuilding the docs

Sat Nov 16 23:23:41 CET 2002 Daniel Veillard <daniel@veillard.com>

	* python/libxslt.c: make sure to register EXSLT for the bindings
	* python/tests/Makefile.am python/tests/exslt.py: add a specific test
	* xsltproc/xsltproc.c: minor cleanup

Fri Nov 15 12:35:57 CET 2002 Daniel Veillard <daniel@veillard.com>

	* python/Makefile.am python/tests/Makefile.am: trying to fix #98518
	  when building outside of the source tree

Thu Nov 14 21:39:37 CET 2002 Daniel Veillard <daniel@veillard.com>

	* python/generator.py: xpathObjectRet() pertains to the libxml2
	  module, add the namespace.

Thu Nov 14 18:48:00 CEST 2002 Igor Zlatkovic <igor@stud.fh-frankfurt.de>

	* libxslt/win32config.h: cleanup
	* win32/Makefile.mingw: new file, integrated mingw in JScript configure
	* win32/Makefile.msvc: modified to allow mingw coexistence
	* win32/configure.js: integrated mingw
	* win32/Readme.txt: cleanup
	* xsltproc/xsltproc.c: allowed stdarg for mingw

Thu Nov 14 07:22:23 MST 2002 John Fleck <jfleck@inkstain.net>

	* doc/xsltproc.1
	* doc/xsltproc.html - ran stylesheets to update man page
	and html with Daniel's fix to #95510

Thu Nov 14 15:10:13 CET 2002 Daniel Veillard <daniel@veillard.com>

	* libxslt/transform.c: applied patch from Brian McCauley fixing #95493 
	* doc/xsltproc.xml: fixing #95510 missing description of --writesubtree
	* README: fix the bug page URL

Thu Nov 14 10:03:12 CET 2002 Daniel Veillard <daniel@veillard.com>

	* libxslt/functions.c: make sure the fixup for key() reported
	  by John Escott actually works.
	* tests/docs/Makefile.am tests/docs/bug-98.xml
	  tests/general/Makefile.am tests/general/bug-98.*: added the
	  example in the regression tests for this case

Wed Nov 13 10:35:46 CET 2002 Daniel Veillard <daniel@veillard.com>

	* libxslt/pattern.c: fixes bug #97969 for @*[...] patterns
	* tests/docs/Makefile.am tests/docs/bug-97.xml
	  tests/general/Makefile.am tests/general/bug-97.*: added the
	  example in the regression tests for this case
	
Tue Nov 12 22:35:47 CET 2002 Daniel Veillard <daniel@veillard.com>

	* libxslt/transform.c: fixes bug #97950 for cdata-section-elements
	  checks in recursive copies.
	* tests/docs/Makefile.am tests/docs/bug-96.xml
	  tests/general/Makefile.am tests/general/bug-96.*: added the
	  example in the regression tests for this case

Tue Nov 12 19:31:49 CET 2002 Daniel Veillard <daniel@veillard.com>

	* libxslt/functions.c: autoconvert key() first arg to string,
	  reported by John Escott

Tue Nov 12 13:40:47 CET 2002 Daniel Veillard <daniel@veillard.com>

	* libxslt/transform.c: corner case handling of copying a CDATA node.

Fri Nov  8 18:12:46 CEST 2002 Igor Zlatkovic <igor@stud.fh-frankfurt.de>

	* libxslt/win32config.h: retired xmlwin32version.h

Fri Nov  8 17:09:14 CET 2002 Daniel Veillard <daniel@veillard.com>

	* Makefile.am libxslt.m4 libxslt.spec.in: integrated libxslt.m4
	  written by Thomas Schraitle (RFE #96485)

Thu Nov  7 11:18:42 MST 2002 John Fleck <jfleck@inkstain.net>

	* doc/xsltproc.xml
	* doc/xsltproc.1
	clarifying --catalog option and xsltproc's use of 
	XML_CATALOG_FILES and /etc/xml/catalog. fixes
	http://bugzilla.gnome.org/show_bug.cgi?id=97891
	
Mon Nov  4 06:55:36 CET 2002 Daniel Veillard <daniel@veillard.com>

	* xsltproc/xsltproc.c: remove the use of snprintf, and use
	  libxml2 string API instead.
	* configure.in libxslt/xsltconfig.h.in libxslt/xsltutils.c:
	  try to cope with architecture lacking some of the string functions,
	  reuse the trio ones compiled in libxml2 , should close #97113

Wed Oct 23 17:06:24 CEST 2002 Daniel Veillard <daniel@veillard.com>

	* Makefile.am libxslt.spec.in doc/Makefile.am: cleaned up
	  the spec file and associated changes in the Makefiles.

Tue Oct 22 21:02:37 CEST 2002 Daniel Veillard <daniel@veillard.com>

	* libxslt/pattern.c: Forgot to check a pointer, fixes bug #96495

Tue Oct 22 20:53:10 CEST 2002 Daniel Veillard <daniel@veillard.com>

	* libxslt/keys.h: fixed include c.f. bug #96487
	* config.h.in:  Red Hat 8.0 induced change 

Mon Oct 21 20:56:31 CEST 2002 Daniel Veillard <daniel@veillard.com>

	* libxslt/numbers.c libxslt/numbersInternals.h libxslt/xsltutils.[ch]:
	  fixed bug #78501 when using a non ascii character for the
	  number formatting grouping separator.
	* tests/docs/Makefile.am tests/docs/bug-95.xml
	  tests/general/Makefile.am tests/general/bug-95.*: added the
	  example in the regression tests for this case
	* libxslt/attributes.c: cleaning up a problem introduced in last
	  patch

Mon Oct 21 09:31:55 CEST 2002 Igor Zlatkovic <igor@stud.fh-frankfurt.de>

	* libxslt/attributes.c: fixed minor typo in a call to
	  xmlHasNsProp

Sun Oct 20 23:20:37 CEST 2002 Daniel Veillard <daniel@veillard.com>

	* python/types.c: fixed bugs when passing result value tree
	  to Python functions.

Sun Oct 20 15:23:28 CEST 2002 Igor Zlatkovic <igor@stud.fh-frankfurt.de>

	* libxslt/win32config.h: mapped vsnprintf to _vsnprintf for the
	  MS runtime
	* xsltproc/xsltproc.c: mapped snprintf to _snprintf for the MS
	  runtime
	
Fri Oct 18 13:40:12 CEST 2002 Daniel Veillard <daniel@veillard.com>

	* configure.in: preparing 1.0.22
	* doc/*: upated and rebuilt the docs

Thu Oct 17 16:32:44 CEST 2002 Daniel Veillard <daniel@veillard.com>

	* libxslt/variables.c: fixed bug #86421 
	* tests/docs/Makefile.am tests/docs/bug-94.xml
	  tests/general/Makefile.am tests/general/bug-94.*: added the
	  example in the regression tests for this case

Thu Oct 17 15:50:04 CEST 2002 Daniel Veillard <daniel@veillard.com>

	* xsltproc: added and tested the --path option to close #79638

Thu Oct 17 15:25:46 CEST 2002 Daniel Veillard <daniel@veillard.com>

	* libxslt/attributes.c: fixing bug #95826 the attribute was reset
	  with the inherited stylesheet value.
	* tests/docs/Makefile.am tests/docs/bug-93.xml
	  tests/general/Makefile.am tests/general/bug-93-inc.*
	  tests/general/bug-93.*: added the example in the regression
	  tests for this case
	
Tue Oct 15 18:02:37 CEST 2002 Daniel Veillard <daniel@veillard.com>

	* libxslt/xsltInternals.h libxslt/xsltutils.[ch]: added the
	  possibility to register a transformation context specific
	  error handler, with xsltSetTransformErrorFunc() and provided
	  a new routine xsltTransformError() to handle contextual errors,
	  this should fix #94435
	* libxslt/*.c: modified all the code to use the context specific
	  error handling, as a result xsltPrintErrorContext() is not called
	  anymore except internally from xsltTransformError()

Tue Oct 15 14:52:23 CEST 2002 Daniel Veillard <daniel@veillard.com>

	* libxslt/transform.c: closing #94933, any error will make
	  the transformation abort with  no result.
	* tests/reports/tst-1.err tests/reports/tst-1.out 
	  tests/reports/undefvar.err: this changed the regression tests
	  output.
	* tests/exslt/date/difference.1.out tests/exslt/date/seconds.1.out:
	  updated the result accordingly to the fixes done last month.
	* libxslt/namespaces.c: make sure to avoid duplicate namespace
	  declarations in the result trees. May fix #93692 but it's unclear.

Tue Oct 15 12:45:42 CEST 2002 Daniel Veillard <daniel@veillard.com>

	* xsltproc/xsltproc.c: added a --path option to provide the
	  enhancement requested by #79638, first cut at it, untested
	  yet.

Tue Oct 15 13:02:40 CEST 2002 Daniel Veillard <daniel@veillard.com>

	* libxslt/xslt.c: seems the media-type attribute wasn't
	  always correctly handled

Mon Oct 14 09:27:01 CEST 2002 Daniel Veillard <daniel@veillard.com>

	* libxslt/transform.c: added URI escaping in case the resource 
	  target computation of exslt:element failed. Should fix #81837

Tue Oct 15 12:42:25 CEST 2002 Daniel Veillard <daniel@veillard.com>

	* README: updated the contact informations

Tue Oct 15 11:40:19 CEST 2002 Daniel Veillard <daniel@veillard.com>

	* libxslt/pattern.c: fixed the behaviour of node() patter which
	  didn't patch the one defined in XPath :-( . Closes bug #95793
	* tests/docs/Makefile.am tests/docs/bug-92.xml
	  tests/general/Makefile.am tests/general/bug-92.*: added the
	  example in the regression tests for this case

Mon Oct 14 12:29:53 CEST 2002 Igor Zlatkovic <igor@stud.fh-frankfurt.de>

	* libxslt/win32config.h: remapped mkdir to _mkdir for MS runtime
	* win32/Makefile.msvc: added security.c to the build
	* win32/libxslt.def.src: exported functions from security.c

Thu Oct 10 18:41:56 CEST 2002 Daniel Veillard <daniel@veillard.com>

	* xsltproc/xsltproc.c: added another option --writesubtree to allow
	  documents to be written only to  a given subtree.

Thu Oct 10 17:16:52 CEST 2002 Daniel Veillard <daniel@veillard.com>

	* libxslt/security.[ch] libxslt/Makefile.am: new module with
	  runtime security checks, it will also check and do directory
	  creation when allowed
	* libxslt/documents.c libxslt/imports.c libxslt/transform.c
	  libxslt/xslt.c libxslt/xsltInternals.h: plug-in the new
	  security infrastructure probes at file reading or file creation
	* xsltproc/xsltproc.c: plugged the security module there too,
	  added the new options --nowrite and --nomkdir
	* doc/*: updated the man page and regenerated.

Wed Oct  9 18:37:56 CEST 2002 Daniel Veillard <daniel@veillard.com>

	* doc/*: updated the doc XSLT to add the search, added the search
	  page, fixed a link problem raised by Yves Pratter, regenerated

Wed Oct  9 14:27:17 CEST 2002 Daniel Veillard <daniel@veillard.com>

	* doc/index.py: the indexer version of the XSLT part of the
	  xmlsoft site + archives

Sun Sep 29 20:02:25 CEST 2002 Igor Zlatkovic <igor@stud.fh-frankfurt.de>

	* win32/Makefile.msvc: introduced double-run compilation.
	* win32/configure.js: introduced double-run compilation.

Thu Sep 26 20:08:50 CEST 2002 Daniel Veillard <daniel@veillard.com>

	* configure.in: preparing 1.0.21
	* doc/* : updated and regenerated the docs and web pages

Wed Sep 25 11:16:06 CEST 2002 Daniel Veillard <daniel@veillard.com>

	* libxslt/transform.c: fixed a disable output escaping bug for
	  HTML output introduced in 1.0.20 and raised by Mario Weilguni
	* tests/docs/Makefile.am tests/docs/bug-91.xml
	  tests/general/Makefile.am tests/general/bug-91.*: added the
	  example in the regression tests for this case

Tue Sep 24 20:33:08 MDT 2002 John Fleck <jfleck@inkstain.net>

	* doc/xlst.html: changing link on ftp.gnome.org

Mon Sep 23 10:14:38 CEST 2002 Daniel Veillard <daniel@veillard.com>

	* Makefile.am: set-up DIST_SUBDIRS to avoid the same problem Jacob
	  reported for libxml2

Fri Sep 20 14:06:45 CEST 2002 Daniel Veillard <daniel@veillard.com>

	* Makefile.am configure.in: trying to fix the same problem as
	  #88412 by bypassing all the python subdir if python ain't detected

Fri Sep 20 10:55:03 CEST 2002 Daniel Veillard <daniel@veillard.com>

	* libxslt/templates.c: fixed a problem reported by Mark Vakoc

Wed Sep 18 15:46:50 CEST 2002 Igor Zlatkovic <igor@stud.fh-frankfurt.de>

	* libexslt/date.c: fixed the embedded '-' in the duration format 
	  function
	* tests/.../difference.1.xml: added test cases which illustrated
	  the above bug

Tue Sep 17 18:01:22 CEST 2002 Igor Zlatkovic <igor@stud.fh-frankfurt.de>

	* libexslt/date.c: fixed date:difference() bugs, removed all
	  type conversion warnings.
	* libxslt/xsltutils.c: removed unused local variable.

Sat Sep 14 16:17:51 MDT 2002 John Fleck <jfleck@inkstain.net>

	* doc/xsltproc.html:
	oops, forgot to update the html version of the man page

Sat Sep 14 16:10:21 MDT 2002 John Fleck <jfleck@inkstain.net>

	* doc/xsltproc.xml
	* doc/xsltproc.1
	* doc/xsltproc2.html
	Fixing erroneous mention of old --warnnet option (thanks to Jean
	T. Anderson for pointing this out)

Tue Sep 10 21:05:28 CEST 2002 Igor Zlatkovic <igor@stud.fh-frankfurt.de>

	* win32/configure.js: added more readme info for the binary
	  package.
	
Mon Sep  9 14:07:06 CEST 2002 Daniel Veillard <daniel@veillard.com>

	* libxslt/pattern.c: fixed a bug in match="node()" reported by
	  Ben Ko

Mon Sep  9 14:06:25 CEST 2002 Daniel Veillard <daniel@veillard.com>

	* libxslt.spec.in: fixes libary path for x86_64 AMD

Thu Sep  5 10:07:13 CEST 2002 Daniel Veillard <daniel@veillard.com>

	* python/Makefile.am: applied patch from Christophe Merlet to
	  reestablish DESTDIR

Thu Aug 29 21:26:30 CEST 2002 Daniel Veillard <daniel@veillard.com>

	* libxslt/transform.c: re-applied the patch from Nathan Myers about
	  a possible memory leak in case of error

Wed Aug 28 13:44:54 CEST 2002 Daniel Veillard <daniel@veillard.com>

	* doc/Libxslt-Logo-180x168.gif doc/Libxslt-Logo-90x34.gif:
	  nice logos generated by Marc Liyanage
	* doc/site.xsl *.html: changed the stylesheet to show the new
	  logo and regenerated the pages

Sun Aug 25 17:01:40 CEST 2002 Daniel Veillard <daniel@veillard.com>

	* python/libxslt-python-api.xml python/libxslt.c
	  python/libxsltclass.txt python/tests/basic.py: applied a patch
	  from Ralf Mattes providing style.saveResultToString()

Fri Aug 23 13:53:50 CEST 2002 Daniel Veillard <daniel@veillard.com>

	* configure.in: preparing release 1.0.20
	* doc/*: updated and regenerated the docs

Wed Aug 21 21:27:29 CEST 2002 Daniel Veillard <daniel@veillard.com>

	* libxslt/templates.c: fixed a bug w.r.t. namespace context when
	  doing the evaluation of attribute value templates 
	* libxslt.spec.in python/Makefile.am: fixed some troubles
	  with "make rpm"

Wed Aug 21 18:59:28 CEST 2002 Daniel Veillard <daniel@veillard.com>

	* python/libxslt.c: fixed the parameter order when calling
	  Python based extensions.

Wed Aug 21 13:48:07 CEST 2002 Daniel Veillard <daniel@veillard.com>

	* libxslt/transform.c libxslt/xslt.c: fixed bug #89258 and a bit of
	  cleanup.
	* tests/docs/Makefile.am tests/docs/bug-90.xml
	  tests/general/Makefile.am tests/general/bug-90.*: added the
	  example in the regression tests for this case

Tue Aug 20 16:40:48 CEST 2002 Igor Zlatkovic <igor@stud.fh-frankfurt.de>

	* win32/Makefile.msvc: added the prefix location to the include
	and lib search path.

Mon Aug 19 15:03:11 CEST 2002 Daniel Veillard <daniel@veillard.com>

	* libxslt/transform.c: found and fixed the small <xsl:choose>
	  bug which was giving troubles to DocBook users (the test expression
	  of <when> was evaluated in the namespace context of <choose> !)

2002-08-18  Havoc Pennington  <hp@pobox.com>

	* autogen.sh: hardcode aclocal-1.4/automake-1.4 so that users with
	both automake 1.6 and 1.4 installed get the right automake. Means
	compilation from CVS will now require the latest automake 1.4
	release, or manually creating symlinks called "automake-1.4" and
	"aclocal-1.4"

Wed Aug 14 18:54:19 CEST 2002 Daniel Veillard <daniel@veillard.com>

	* configure.in python/Makefile.am: AMD x86-64 induced changes from
	  Frederic Crozat

Wed Aug 14 13:35:04 CEST 2002 Daniel Veillard <daniel@veillard.com>

	* libxslt/functions.c: recovering to the old (somewhat) broken
	  implementation of document('') when there is no base for the
	  source document or it can't be realoaded (e.g. when the sytlesheet
	  was loaded from a memory string). Matt Sergeant insisted on this
	  one :-)

Tue Aug 13 11:21:44 CEST 2002 Daniel Veillard <daniel@veillard.com>

	* libxslt/transform.c: applied another patch from Nathan Myers about
	  a possible memory leak in case of error

Mon Aug 12 23:12:59 CEST 2002 Daniel Veillard <daniel@veillard.com>

	* libxslt/transform.c: applied a patch from Nathan Myers about
	  an erroneous free in case of error

Thu Aug  1 14:29:11 CEST 2002 Daniel Veillard <daniel@veillard.com>

	* configure.in: upon suggestion of Marc-Andre Lemburg, make 
	  the misdetection of libxml2 python bindings a warning only

Sun Jul 21 19:10:00 HKT 2002 William Brack <wbrack@mmm.com.hk>

	* xsltInternals.h/xslt.c/transform.c and pattern.c: fixed
	  a bug reported by Gero Meissner (87230)
	* fixed a problem compiling python directory when multiple
	  'make' jobs were executed (python/Makefile.am)

Wed Jul 17 19:58:36 CEST 2002 Daniel Veillard <daniel@veillard.com>

	* libxslt/attributes.c: fixed a bug reported by Keith Isdale
	  at the xsltdbg interface when encountering an empty attribute
	  set.

Wed Jul 17 19:51:47 CEST 2002 Daniel Veillard <daniel@veillard.com>

	* tests/* : the change in HTML meta encoding tag serialization
	  affected some of the results

Thu Jul 11 22:04:30 CEST 2002 Daniel Veillard <daniel@veillard.com>

	* doc/Makefile.am: adding doc/xsltproc.xml to the tarball
	  to fix Red Hat bug #68614 

Wed Jul 10 21:28:11 CEST 2002 Igor Zlatkovic <igor@stud.fh-frankfurt.de>
	
	* win32/Makefile.msvc: Made the copy *.pdb in install succeed even
	  if there is no *.pdb
	
Sat Jul  6 22:00:08 CEST 2002 Daniel Veillard <daniel@veillard.com>

	* configure.in: preparing 1.0.19
	* doc/* : rebuilt the docs

Sat Jul  6 17:51:14 CEST 2002 Daniel Veillard <daniel@veillard.com>

	* libxslt/transform.c: fixed bug #83749 about namespace generated
	  being invalid when they are inherited from the context.

Fri Jul  5 22:27:47 CEST 2002 Daniel Veillard <daniel@veillard.com>

	* libxslt/transform.c: fixed bug #86753 on multiple identical
	  attributes being generated, oops ...
	* tests/docs/Makefile.am tests/docs/bug-89.xml
	  tests/general/Makefile.am tests/general/bug-89.*: added an
	  example in the regression tests for this case
	
Fri Jul  5 18:28:08 CEST 2002 Daniel Veillard <daniel@veillard.com>

	* libxslt/preproc.c libxslt/transform.c: fixed bug #87279
	* tests/docs/Makefile.am tests/docs/bug-88.xml
	  tests/general/Makefile.am tests/general/bug-88.*: added an
	  example in the regression tests for this case

Fri Jul  5 16:30:02 CEST 2002 Daniel Veillard <daniel@veillard.com>

	* libxslt/preproc.c libxslt/xsltutils.c: applied a patch from
	  Ken Neighbors to implement/fix sorting orders
	* tests/docbook/result/*/gdp-handbook.* 
	  tests/docbook/result/xtchunk/html/*.orig
	  tests/general/bug-12-.out tests/general/bug-63.out:
	  cleaned up the result of "make tests" following some changes
	  in namespace axis order and serialization rules in libxml2

Thu Jul  4 16:53:00 HKT 2002 William Brack <wbrack@mmm.com.hk>

	* transform.c further enhancement for bug 84902 (another
	  path), also cleaned up code slightly

Wed Jul  3 00:50:00 HKT 2002 William Brack <wbrack@mmm.com.hk>

	* transform.c: fixed bug 84902 - message with terminate=yes
	  caused segfault

Tue Jul  2 00:02:53 CEST 2002 Daniel Veillard <daniel@veillard.com>

	* tests/docs/Makefile.am tests/docs/bug-87.xml
	  tests/general/Makefile.am tests/general/bug-87.*: added a
	  example in the regression tests for a case where the XML
	  default namespace was missing from the namespace axis
	* xsltproc/xsltproc.c: added the informations that parameter
	  strings are expected to be UTF8
	* libxslt/attributes.c: fixes on attribute group implementation

Sat Jun 29 21:12:14 MDT 2002 John Fleck <jfleck@inkstain.net>

	* doc/xsltproc.xml, doc/xsltproc.html/, doc/xsltproc.1
	updating docs to add reference to UTF-8 requirement for
	stringparam command line option

Wed Jun 19 13:43:00 CEST 2002 Daniel Veillard <daniel@veillard.com>

	* libxslt/documents.c libxslt/functions.c libxslt/xsltInternals.h:
	  fixed document('') as pointed by Eric van der Vlist
	* tests/docs/Makefile.am tests/docs/bug-86.xml
	  tests/general/Makefile.am tests/general/bug-86.*: added the
	  specific example in the regression tests

Sat Jun 15 15:44:58 CEST 2002 Daniel Veillard <daniel@veillard.com>

	* libxslt/numbers.c libxslt/numbersInternals.h: applied a
	  patch from Ken Neighbors fixing some format-number inconsistencies
	* tests/numbers/format-number.out tests/numbers/format-number.xml
	  tests/numbers/format-number.xsl: the patch also included
	  updates to the regression tests

Mon Jun 10 14:55:31 CEST 2002 Daniel Veillard <daniel@veillard.com>

	* libxslt/numbers.c: patch from Richard Jinks t correct a bug in
	  xsl:number level="multiple"
	* tests/docs/Makefile.am tests/docs/bug-84.xml
	  tests/general/Makefile.am tests/general/bug-84.*: added a 
	  specific example in the regression tests

Fri May 31 09:33:09 CEST 2002 Daniel Veillard <daniel@veillard.com>

	* libexslt/dynamic.c: turned a function static
	* libxslt/win32config.h: applied patch from Mark Vadoc

Thu May 30 23:35:47 CEST 2002 Daniel Veillard <daniel@veillard.com>

	* win32/Makefile.msvc libexslt/Makefile.am libexslt/date.c
	  libexslt/dynamic.c libexslt/exslt.c libexslt/exslt.h: applied
	  a patch from Mark Vakoc to implement the EXSLT
	  object dyn:evaluate(string) extension function, and a small fix
	  to date.c

Mon May 27 23:24:57 CEST 2002 Daniel Veillard <daniel@veillard.com>

	* configure.in: preparing 1.0.18
	* doc/*: recompiled the API and web site

Mon May 27 19:14:46 CEST 2002 Daniel Veillard <daniel@veillard.com>

	* libxslt/namespaces.c libxslt/transform.c: fix bug #81099 about
	  duplicated namespace declarations, this might not be as generic as
	  it should but works well for DocBook stylesheets

Sat May 25 12:07:45 CEST 2002 Daniel Veillard <daniel@veillard.com>

	* libxslt.pc.in: fix bug #82970

Fri May 24 15:02:50 CEST 2002 Daniel Veillard <daniel@veillard.com>

	* python/libxslt-python-api.xml python/libxslt.c 
	  python/libxsltclass.txt : tried to fix #79105 by providing a 
	  specific error registering routine.

Thu May 23 17:28:35 CEST 2002 Daniel Veillard <daniel@veillard.com>

	* libxslt/xsltutils.[ch] : applied patch from Morus Walter
	  adding xsltSaveResultToString()
	* doc/APIfiles.html doc/APIfunctions.html doc/libxslt-api.xml
	  doc/libxslt-decl.txt doc/libxslt-refs.xml: this increased the
	  API with the new function.

Wed May 22 11:50:36 CEST 2002 Daniel Veillard <daniel@veillard.com>

	* libxslt/function.c: applied a patch from Richard Jinks
	  to avoid a crash in element-available()

Tue May 21 19:38:20 CEST 2002 Daniel Veillard <daniel@veillard.com>

	* libxslt.spec.in: applied patch from Geert Kloosterman to
	  not miss gif and .png files in the RPM  documentation

Tue May 21 08:43:11 CEST 2002 Daniel Veillard <daniel@veillard.com>

	* libexslt/libexslt.4: Applied patch for the EXSLT man page
	  from Charles Bozeman

Sat May 18 10:01:38 CEST 2002 Daniel Veillard <daniel@veillard.com>

	* libexslt/libexslt.4 libxslt/libxslt.4 libxslt/keys.c 
	  libxslt/xsltconfig.h.in: applied a man page patch from 
	  Christian Cornelssen and fixed a couple of issues he raised.

Thu May 16 19:38:24 CEST 2002 Daniel Veillard <daniel@veillard.com>

	* xsltproc/xsltproc.c: moved the extension dump out of the loop

Thu May 16 19:31:35 CEST 2002 Daniel Veillard <daniel@veillard.com>

	* libxslt/extensions.[ch]  xsltproc/xsltproc.c win32/libxslt.def.src:
	  Applied Mark Vakoc patch to show registered extensions in xsltproc
	* doc/*: rebuilt the API, docs and website
	* python/libxsltclass.txt: this added an entry point

Wed May 15 00:20:10 CEST 2002 Igor Zlatkovic <igor@stud.fh-frankfurt.de>

	* libxslt/xslt.c: xsl:include crash fix
	* libxslt/imports.c: xsl:include crash fix
	* libxslt/imports.h: xsl:include crash fix	

Wed May  9 01:39:14 CEST 2002 Igor Zlatkovic <igor@stud.fh-frankfurt.de>

	* libexslt/exslt.h: fixed a typo _cplusplus -> __cplusplus

Thu May  2 11:08:22 CEST 2002 Daniel Veillard <daniel@veillard.com>

	* xsltproc/xsltproc.c libxslt/xsltutils.c doc/xsltproc.xml:
	  fixed some return code problems raised by Thomas Mauch

Tue Apr 30 18:06:14 CEST 2002 Daniel Veillard <daniel@veillard.com>

	* libxslt/transform.c: don't allow adding an attribute to
	  a document node

Mon Apr 29 19:00:22 CEST 2002 Daniel Veillard <daniel@veillard.com>

	* configure.in libxslt/xsltwin32config.h: preparing 1.0.17
	* doc/*: rebuilt the docs.

Mon Apr 29 17:22:08 CEST 2002 Daniel Veillard <daniel@veillard.com>

	* libxslt/variables.c: better attempt to fix the problem in
	  xsltProcessUserParamInternal reported by Babak Vahedipour-Kunze

Sun Apr 28 17:53:23 CEST 2002 Igor Zlatkovic <igor@stud.fh-frankfurt.de>

	* win32/dsp/*.dsp: Removed obsolete macros
	* win32/dsp/*.def: Updated export definitions
	
Sun Apr 28 17:47:17 CEST 2002 Daniel Veillard <daniel@veillard.com>

	* libxslt/variables.c: tried to fix a problem in
	  xsltProcessUserParamInternal reported by Babak Vahedipour-Kunze

Fri Apr 26 08:15:30 CEST 2002 Daniel Veillard <daniel@veillard.com>

	* libexslt/date.c: applied another patch from Charles Bozeman to
	  enhance date/duration support
	* tests/exslt/date: added the associated set of regression tests

Thu Apr 25 08:18:57 CEST 2002 Daniel Veillard <daniel@veillard.com>

	* libexslt/date.c: applied a patch from Charles Bozeman to add
	  duration routines to the date exslt extensions.

Thu Apr 18 22:56:06 CEST 2002 Daniel Veillard <daniel@veillard.com>

	* libexslt/exslt.h: extern "C" {  missing by Mark Vakoc

Tue Apr 17 23:16:54 CEST 2002 Igor Zlatkovic <igor@stud.fh-frankfurt.de>

	* libexslt/date.c: fixed type inconsistencies, double->int
	 and unsigned/signed mismatch warnings eliminated

Tue Apr 16 19:40:21 CEST 2002 Igor Zlatkovic <igor@stud.fh-frankfurt.de>

	* win32/Makefile.msvc: XSLT debugger support fix
	* win32/configure.js: XSLT debugger support fix
	* libxslt/xsltconfig.h.in: XSLT debugger support fix

Mon Apr 15 19:27:31 CEST 2002 Daniel Veillard <daniel@veillard.com>

	* configure.in: preparing 1.0.16
	* doc/*: updated and rebuilt the docs

Mon Apr 15 17:27:51 CEST 2002 Daniel Veillard <daniel@veillard.com>

	* libxslt/attributes.c: removed a warning
	* libxslt/transform.c libxslt/transform.h win32/libxslt.def.src:
	  added xsltRunStylesheetUser() API needed to fix #78546
	* xsltproc/xsltproc.c: second part of the fix #78546

Mon Apr 15 15:57:28 CEST 2002 Daniel Veillard <daniel@veillard.com>

	* python/Makefile.am: fixing the equivalent of #75779

Mon Apr 15 14:00:12 CEST 2002 Daniel Veillard <daniel@veillard.com>

	* libxslt/keys.c: fixed bug #78735
	* configure.in tests/Makefile.am tests/keys/*:
	  added the tests in a separate directory

Mon Apr 15 00:01:07 CEST 2002 Daniel Veillard <daniel@veillard.com>

	* tests/docs/Makefile.am tests/docs/bug-83.xml
	  tests/general/Makefile.am tests/general/bug-83.*: added a 
	  specific example for bug #78662 in the regression tests
	* tests/docbook/: this also changed a couple of DocBook results
	
Sun Apr 14 15:32:23 CEST 2002 Daniel Veillard <daniel@veillard.com>

	* configure.in: trying to kill #77827 IEEE conformance on alphas
	* libxslt/imports.c libxslt/transform.c libxslt/xslt.c: fixing
	  bug #78211
	* tests/docs/Makefile.am tests/docs/bug-82.xml
	  tests/general/Makefile.am tests/general/bug-82.*: added a 
	  specific example for bug #78211 in the regression tests

Wed Apr 10 20:35:54 CEST 2002 Daniel Veillard <daniel@veillard.com>

	* libxslt/pattern.c: applied patch from Mark Vakoc

Fri Mar 29 18:28:23 CET 2002 Daniel Veillard <daniel@veillard.com>

	* tests/docs/Makefile.am tests/docs/bug-81.xml
	  tests/general/Makefile.am tests/general/bug-81.*: added a 
	  specific example for bug #76927 in the regression tests
	
Wed Mar 27 10:03:11 CET 2002 Daniel Veillard <daniel@veillard.com>

	* AUTHORS HACKING: Added Igor Zlatkovic as official maintainer
	* python/Makefile.am python/tests/Makefile.am: Albert Chin pointed
	  that $(datadir) should be used for docs

Mon Mar 25 17:56:44 CET 2002 Daniel Veillard <daniel@veillard.com>

	* configure.in: preparing 1.0.15
	* doc/*: updated and rebuilt

Mon Mar 25 17:11:42 CET 2002 Daniel Veillard <daniel@veillard.com>

	* libxslt/attributes.c libxslt/attributes.h libxslt/pattern.c
	  libxslt/xslt.c: Fix bug #76043 about cascading attribute sets
	* tests/docs/Makefile.am tests/docs/bug-80.xml
	  tests/general/Makefile.am tests/general/bug-80.*: added a 
	  specific example for bug #76043 in the regression tests

Fri Mar 22 19:26:47 CET 2002 Daniel Veillard <daniel@veillard.com>

	* libxslt/pattern.c: Fixing bug #75902 error with @foo[..]
	  steps which were not compiled
	* tests/docs/Makefile.am tests/docs/bug-79.xml
	  tests/general/Makefile.am tests/general/bug-79.*: added a 
	  specific example for bug #75902 in the regression tests
	
Fri Mar 22 16:13:22 CET 2002 Daniel Veillard <daniel@veillard.com>

	* libxslt/pattern.c: Fixing bug #75777 error with namespaced
	  attribute match rules evaluation
	* tests/docs/Makefile.am tests/docs/bug-78.xml
	  tests/general/Makefile.am tests/general/bug-78.*: added a 
	  specific example for bug #75777 in the regression tests
	
Thu Mar 21 17:19:56 CET 2002 Daniel Veillard <daniel@veillard.com>

	* libxslt/transform.c: found another stupid bug by step by 
	  step processing of the code
	* libxslt/pattern.c: idem, except that once stupid mistake
	  ELEM vs NODE forced the templates to be stored in a list
	  instead of a hash table, fixing this stupidity should
	  again lead to a substantive improvement of processing speed.
	  Like divide by 2 processing time for DocBook stylesheets.

Thu Mar 21 00:25:12 CET 2002 Daniel Veillard <daniel@veillard.com>

	* libxslt/transform.c: fixing bug #75603
	* tests/docs/Makefile.am tests/docs/bug-77.xml
	  tests/general/Makefile.am tests/general/bug-77.*: added a 
	  specific example for bug #75603 in the regression tests

Wed Mar 20 17:49:43 CET 2002 Daniel Veillard <daniel@veillard.com>

	* python/Makefile.am: Art Haas pointed a stupid error

Tue Mar 19 19:42:01 CET 2002 Daniel Veillard <daniel@veillard.com>

	* Makefile.am tests/Makefile.am tests/*/Makefile.am
	  tests/*/*/Makefile.am : added "make valgrind" targets
	  to run the test suite under the debugger control
	* transform.c: valgrind spotted 2 bugs, one related to
	  the ordering of the deallocation of the data associated to
	  a transofrmation, the second in xsltCopyTree when the new
	  node may have been coalesced with an adjacent text node.
	  The regression tests now pass cleanly under testgrind.

Mon Mar 18 21:33:38 CET 2002 Daniel Veillard <daniel@veillard.com>

	* python/Makefile.am: fixed a stupid bug

Mon Mar 18 20:45:27 CET 2002 Daniel Veillard <daniel@veillard.com>

	* configure.in: preparing 1.0.14
	* doc/*: updated rebuilt
	* libxslt/*.c libexslt/*.c libxslt/libxslt.h libexslt/libexslt.h:
	  implemented the IN_LIBXSLT and IN_LIBEXSLT mechanism discussed
	  with the Windows maintainers

Mon Mar 18 16:22:46 CET 2002 Daniel Veillard <daniel@veillard.com>

	* python/Makefile.am python/generator.py python/libxslt.c
	  python/types.c python/tests/Makefile.am: applied the same kind of
	  fixes to the Python Makefiels than to libxml2 ones. Updates
	  and cleanups too.

Sat Mar 16 23:48:21 CET 2002 Daniel Veillard <daniel@veillard.com>

	* libexslt/common.c libxslt/pattern.c  libxslt/transform.c
	  libxslt/variables.c: chaing result tree values which may
	  be deallocated and must not be kept in the template 
	  pattern lookup cache. Thanks to Valgrin to allow finding
	  the real problem in bug #74857

Wed Mar 13 15:17:51 CET 2002 Daniel Veillard <daniel@veillard.com>

	* libxslt/*.h doc/* python/*: applied another cleanup comment
	  diff from Heiko W. Rupp, regenerated the API and python

Wed Mar 13 13:41:19 CET 2002 Daniel Veillard <daniel@veillard.com>

	* tests/docs/Makefile.am tests/docs/bug-76.xml
	  tests/general/Makefile.am tests/general/bug-76.*: added a 
	  home brewed test for path computation elmininating duplicate
	  in result sets.

Sat Mar  9 11:53:39 CET 2002 Daniel Veillard <daniel@veillard.com>

	* doc/Makefile.am: fixed a build problem in some environements

2002-03-08  jacob berkman  <jacob@ximian.com>

	* python/Makefile.am (libxsltmodule_la_SOURCES): remove $(srcdir)
	as make will automatically look there for these files

Fri Mar  8 17:44:31 CET 2002 Daniel Veillard <daniel@veillard.com>

	* configure.in libxslt/xsltwin32config.h: preparing release
	  1.0.13
	* doc/*: updated and rebuilt the docs
	* python/libxslt.c: fixed a possible reentrancy problem

Fri Mar  8 14:51:59 CET 2002 Daniel Veillard <daniel@veillard.com>

	* libxslt/pattern.c: Fixes the problems exposed by #73880
	  those ought to be computed at stylesheet compile time, not
	  at run-time, and the computation was wrong.
	* libxslt/transform.c: get rid of fake nodes coming from node-set
          transformations. At least if they are still produced they will
	  become easy to spot as resulting document won't be well-formed.

Thu Mar  7 17:01:21 CET 2002 Daniel Veillard <daniel@veillard.com>

	* libxslt/extensions.c: fixed bug #73791 related to extension
	  function declared in included stylesheets
	* tests/exslt/functions/function.7.*: added specific test

Thu Mar  7 15:20:32 CET 2002 Daniel Veillard <daniel@veillard.com>

	* tests/docs/Makefile.am tests/docs/bug-75.xml
	  tests/general/Makefile.am tests/general/bug-75.*: added a 
	  specific example for bug #72150 in the regression tests

Thu Mar  7 15:17:21 CET 2002 Daniel Veillard <daniel@veillard.com>

	* configure.in xsltproc/xsltproc.c: fixed bug #71488 in a
	  similar way as #71457

Thu Mar  7 09:41:59 CET 2002 Daniel Veillard <daniel@veillard.com>

	* tests/xmlspec/REC-xml-20001006*.html tests/XSLTMark/xslbench1.out:
	  some HTML meta encoding fixups resulting from fix in libxml2

Mon Mar  4 18:09:48 CET 2002 Daniel Veillard <daniel@veillard.com>

	* libxslt/namespaces.c tests/general/bug-63.out: small fixups
	  related to the XPath changes in fixing #61290
	  
Mon Mar  4 12:57:21 CET 2002 Daniel Veillard <daniel@veillard.com>

	* libxslt/pattern.c: fixed bug #73363, bad tokenization of
	  pattern

Mon Mar  4 12:01:34 CET 2002 Daniel Veillard <daniel@veillard.com>

	* libexslt/date.c: patch from Charles Bozeman for the exslt date
	  extension
	* configure.in tests/exslt/Makefile.am tests/exslt/date/*: added
	  the associated regression test provided by Charles

Fri Mar  1 10:17:26 CET 2002 Daniel Veillard <daniel@veillard.com>

	* libxslt/preproc.c: Fixed #73088 with the associated patch

Fri Mar  1 10:14:07 CET 2002 Daniel Veillard <daniel@veillard.com>

	* xsltproc/xsltproc.c: similar to #72663 and #72658, don't memdump
	  unless compiled explicitely with memory debugging switched on
	* TODO: refreshed a bit

Fri Feb 22 23:44:57 CET 2002 Daniel Veillard <daniel@veillard.com>

	* python/generator.py python/libxslt.c: changes for the 'usual'
	  setup.py to allow building a libxml2-python
	  module based on the same code. The initialization is however
	  different the 2 .so files fo libxml2 and libxslt are identical and
	  they entry point initialize both libraries. this is done to avoid
	  some possible nasty problem since the Python don't merge the maps
	  of all shared modules.
	* python/libxsl.py: attempt to cope with the shared library loading
	  problem when both modules are not merged.

Thu Feb 21 12:59:59 CET 2002 Daniel Veillard <daniel@veillard.com>

	* doc/site.xml doc/xslt.html doc/python.html doc/*.html: added
	  documentation for the wrappers and python modules.

Wed Feb 13 14:22:22 CET 2002 Daniel Veillard <daniel@veillard.com>

	* tests/docs/Makefile.am tests/docs/bug-74.xml
	  tests/general/Makefile.am tests/general/bug-74.*: added a 
	  specific example for bug #71342 in the regression tests
	* tests/docbook/result/xhtml/gdp-handbook.xhtml: fixing
	  #71342 changed one attribute serialization.

Tue Feb 12 15:08:38 CET 2002 Daniel Veillard <daniel@veillard.com>

	* python/Makefile.am: trying to fix #71270 

Mon Feb 11 19:40:34 CET 2002 Daniel Veillard <daniel@veillard.com>

	* python/*.py: removed tab used spaces
	* configure.in libxslt/xsltwin32config.h: preparing 1.0.12
	* doc/news.html doc/xslt.html: rebuild/updated

Mon Feb 11 16:34:37 CET 2002 Daniel Veillard <daniel@veillard.com>

	* tests/docs/Makefile.am tests/docs/bug-73.xml
	  tests/general/Makefile.am tests/general/bug-73.*: added a 
	  specific example for bug #71181 in the regression tests

Mon Feb 11 16:22:36 CET 2002 Daniel Veillard <daniel@veillard.com>

	* libxslt/pattern.c: fixed bug #71181 p/text() would not
	  work. A bit of cleanup.

Mon Feb 11 15:01:42 CET 2002 Daniel Veillard <daniel@veillard.com>

	* xslt-config: fixing Red Hat bug #59508

Mon Feb 11 14:27:25 CET 2002 Daniel Veillard <daniel@veillard.com>

	* tests/docs/Makefile.am tests/docs/bug-72.xml
	  tests/general/Makefile.am tests/general/bug-72.*: added a 
	  specific example for bug #58444 in the regression tests

Mon Feb 11 14:13:07 CET 2002 Daniel Veillard <daniel@veillard.com>

	* libxslt/transform.c: fixed bug #58444, was quite simpler
	  than expected.

Mon Feb 11 13:27:42 CET 2002 Daniel Veillard <daniel@veillard.com>

	* libxslt/xsltInternals.h libxslt/pattern.c: expected to have
	  closed bug #70131, still wondering about the position() when
	  the node is selected.

Mon Feb 11 10:45:27 CET 2002 Daniel Veillard <daniel@veillard.com>

	* tests/docs/Makefile.am tests/docs/bug-71.xml
	  tests/general/Makefile.am tests/general/bug-71.*: added a 
	  specific example for Norm's bug in the regression tests

Sun Feb 10 22:08:51 CET 2002 Daniel Veillard <daniel@veillard.com>

	* libxslt/attributes.c: fixed a bug reported by Norm

Sun Feb 10 20:25:28 CET 2002 Daniel Veillard <daniel@veillard.com>

	* python/libxml.c : fixed a small warning.
	* doc/libxslt-api.xml doc/libxslt-decl.txt doc/libxslt-refs.xml
	  python/libxsltclass.txt: rebuilt the APIs

Sun Feb 10 20:16:15 CET 2002 Daniel Veillard <daniel@veillard.com>

	* libxslt/imports.c libxslt/numbers.c libxslt/pattern.c
	  libxslt/pattern.h libxslt/transform.c libxslt/xslt.c
	  libxslt/xsltInternals.h: adding extra run-time informations
	  to make the stylesheet really read-only at run-time.

Sun Feb 10 16:21:09 CET 2002 Daniel Veillard <daniel@veillard.com>

	* libxslt/transform.c: fixing bug #70281

Sun Feb 10 15:10:56 CET 2002 Daniel Veillard <daniel@veillard.com>

	* libxslt/numbers.c: trying to fix #68759

Sat Feb  9 23:17:53 CET 2002 Daniel Veillard <daniel@veillard.com>

	* python/Makefile.am: seems some version of automake didn't
	  generate the dependancies right as Jacob found out. Add
	  an extra dependancy rule.

Sat Feb  9 19:04:01 CET 2002 Daniel Veillard <daniel@veillard.com>

	* configure.in libxslt.spec.in python/Makefile.am python/generator.py
	  python/libxsl.py python/libxslt.c python/tests/Makefile.am:
	  Fixed the python Makefiles, corrected a bug showing up on ia64,
	  changed the name of the python internal module too

Fri Feb  8 17:01:10 CET 2002 Daniel Veillard <daniel@veillard.com>

	* Copyright Makefile.am configure.in libxslt.spec.in: change the
	  Licence to MIT Licence and release of 1.0.11
	* doc/FAQ.html doc/intro.html doc/libxslt-decl.txt doc/news.html 
	  doc/xslt.html: updates of the docs accordingly
	* libxslt/xsltwin32config.h: numbering
	* python/generator.py python/libxml_wrap.h python/libxsltclass.txt
	  python/libxslt-python-api.xml: cleanup the dependancies with
	  libxml2
	* python/tests/extfunc.py: updated examples.

Thu Feb  7 23:21:18 CET 2002 Daniel Veillard <daniel@veillard.com>

	* doc/libxslt-api.xml doc/libxslt-decl.txt doc/libxslt-refs.xml
	  doc/parsedecl.py: fixup the script and rebuid the API
	* libxslt/extensions.h: cleanup
	* python/generator.py python/libxslt-python-api.xml python/libxslt.c
	  python/libxsltclass.txt: provided accessors for a lot of the
	  tructures involved in the transformation. Stylesheet and
	  transformation python object don't free automatically the
	  encapsulated object when deallocated.
	* python/tests/Makefile.am python/tests/basic.py
	  python/tests/extfunc.py python/tests/pyxsltproc.py:
	  updated the examples

Thu Feb  7 17:59:27 CET 2002 Daniel Veillard <daniel@veillard.com>

	* xsltproc/xsltproc.c: small fix
	* Makefile.am: cleanup
	* python/tests/Makefile.am: avoid a problem with $(TESTS)
	* python/generator.py python/libxml_wrap.h python/libxsl.py
	  python/libxslt.c python/libxsltclass.txt: augmented the
	  wrappers
	* python/tests/pyxsltproc.py: rewrote xsltproc on top of the
	  libxslt-python API to get an estimate of what is missing

Wed Feb  6 23:34:10 CET 2002 Daniel Veillard <daniel@veillard.com>

	* python/libxsl.py python/libxslt-python-api.xml python/libxslt.c
	  python/libxsltclass.txt: added libxslt_xsltCleanup() added parameters
	  to libxslt_xsltApplyStylesheet() removed the memleaks left and
	  fixed an import order.
	* python/tests/basic.py python/tests/extfunc.py: updated the tests

Wed Feb  6 19:46:09 CET 2002 Daniel Veillard <daniel@veillard.com>

	* python/libxlst.c python/libxslt-python-api.xml 
	  python/libxsltclass.txt: plugged the extension of the engine
	  with python defined functions
	* python/tests/Makefile.am python/tests/extfunc.py: added a
	  basic test, still a memleak, cleanup function needed.

Wed Feb  6 13:49:55 CET 2002 Daniel Veillard <daniel@veillard.com>

	* libxslt.spec.in python/Makefile.am python/libxsl.py: the
	  spec file will now build libxslt-python, fought with shared
	  and other crazyness, seems to work now :-)
	* doc/libxslt-api.xml: regenerated

Wed Feb  6 11:29:31 CET 2002 Daniel Veillard <daniel@veillard.com>

	* Makefile.am configure.in tests/Makefile.am tests/*/Makefile.am
	  tests/*/*/Makefile.am: refactored make tests, make all now don't
	  run the test suite
	* python/Makefile.am: added tests
	* python/tests/basic.py python/tests/Makefile.am: added the first
	  basic test, memory debug included

Wed Feb  6 00:20:57 CET 2002 Daniel Veillard <daniel@veillard.com>

	* configure.in python/Makefile.am: attempst to tweak to get
	  full memory debug...
	* python/generator.py python/libxsl.py python/libxslt-python-api.xml
	  python/libxslt.c python/libxslt_wrap.h python/libxsltclass.txt:
	  the basic API starts to work
	* python/tests/test.*: first basic test
	* libxslt/xsltutils.c: fixed a comment

Tue Feb  5 17:35:00 CET 2002 Daniel Veillard <daniel@veillard.com>

	* configure.in doc/Makefile.am: do not install outside of prefix,
	  make sure the API get shipped.

Mon Feb  4 19:47:32 CET 2002 Daniel Veillard <daniel@veillard.com>

	* libxslt/pattern.[ch] doc/libxslt-api.xml doc/libxslt-refs.xml:
	  reactivated xsltMatchPattern() since this is really something
	  one may want to have access to in an extension function.
	* Makefile.am configure.in python/Makefile.am python/generator.py
	  python/libxml_wrap.h python/libxsl.py python/libxslt-python-api.xml
	  python/libxslt.c python/libxslt_wrap.h python/libxsltclass.txt
	  python/types.c: started working on the python bindings, borrowed
	  most of the work done for libxml2, most of the generator code
	  is similar. Commit at the point where this compiles cleanly and
	  "import libxslt" doesn't yield any missing entry point.

Wed Jan 30 12:46:41 CET 2002 Daniel Veillard <daniel@veillard.com>

	* libxslt/pattern.c: patch from Charles Bozeman to support
	  child::* patterns.

Wed Jan 30 12:35:28 CET 2002 Daniel Veillard <daniel@veillard.com>

	* libxslt/keys.c: Bob Stayton pointed out a problem when
	  using unions in key match patterns.
	* tests/docs/Makefile.am tests/docs/bug-70.xml
	  tests/general/Makefile.am tests/general/bug-70.*: added a 
	  specific example in the regression tests
	
Sun Jan 27 13:54:10 CET 2002 Daniel Veillard <daniel@veillard.com>

	* libxslt/transform.c: avoid a problem with Sun's Workshop CC,
	  closes bug #69809 submitted by Michael Kroell

Fri Jan 25 15:31:23 CET 2002 Daniel Veillard <daniel@veillard.com>

	* xsltproc/xsltproc.c: added links to the Web site from usage()

Wed Jan 23 23:13:37 CET 2002 Daniel Veillard <daniel@veillard.com>

	* doc/API*.html doc/parsedecl.py doc/*.xsl parsedecl.py: generated
	  an index based on comments content similar to libxml2 one
	  The code need more specific comments.
	* doc/*: rebuilt the web site with the new references

Mon Jan 21 09:53:45 CET 2002 Daniel Veillard <daniel@veillard.com>

	* libxslt/functions.h: roll back the change after more analysis
	  proper fix is to restore the definition of xmlXPathFuncLookupFunc
	  int libxml2

Mon Jan 21 09:41:10 CET 2002 Daniel Veillard <daniel@veillard.com>

	* libxslt/functions.h: fixed a proble  after some cleanup of libxml2
	  includes.

Sun Jan 20 14:33:33 CET 2002 Daniel Veillard <daniel@veillard.com>

	* xsltproc/xsltproc.c: Fixed RH bug #58124 due to an off-by-one
	  error when parsing -o arguments.

Sun Jan 20 14:15:55 CET 2002 Daniel Veillard <daniel@veillard.com>

	* doc/xsltproc.xml libxslt/xsltutils.c xsltproc/xsltproc.c:
	  Fixed RH bug #57496, xsltproc was not returning error
	  code on internal runtime errors. Should return 9 now.

Fri Jan 18 09:43:16 CET 2002 Daniel Veillard <daniel@veillard.com>

	* libexslt/math.c: Charlie Bozeman provided the implementation
	  for the EXSLT math other functions

Thu Jan 17 23:41:53 CET 2002 Daniel Veillard <daniel@veillard.com>

	* libexslt/Makefile.am: jacob berkman pointed out that the
	  Cygwin patch forgot to add libexslt.h to the tarball

Thu Jan 17 23:39:00 CET 2002 Daniel Veillard <daniel@veillard.com>

	* libxslt/pattern.c: fixed I18N problemes in the template parser
	  pointed out by Xavier Cazin
	* tests/docs/Makefile.am tests/docs/bug-69.xml
	  tests/general/Makefile.am tests/general/bug-69.*: added a 
	  specific example in the regression tests

Thu Jan 17 10:40:03 CET 2002 Daniel Veillard <daniel@veillard.com>

	* Makefile.am libexslt/common.c libexslt/date.c libexslt/exslt.c
	  libexslt/exslt.h libexslt/exsltconfig.h.in libexslt/functions.c
	  libexslt/libexslt.h libexslt/math.c libexslt/saxon.c
	  libexslt/sets.c libexslt/strings.c libxslt/libxslt.h
	  libxslt/xslt.h libxslt/xsltconfig.h.in libxslt/xsltutils.c
	  xsltproc/xsltproc.c: applied Robert Collins patch for 
	  Cygwin support

Thu Jan 17 10:34:39 CET 2002 Daniel Veillard <daniel@veillard.com>

	* xsltproc/Makefile.am configure.in: ugly way to keep
	  the memory debugging active on my devel workstation
	  by bypassing libtool completely

Tue Jan 15 12:00:18 CET 2002 Daniel Veillard <daniel@veillard.com>

	* libxslt/templates.c: fixed bug #68751
	* tests/docs/Makefile.am tests/docs/bug-68.xml
	  tests/general/Makefile.am tests/general/bug-68.*: added a 
	  specific example in the regression tests
	
Tue Jan 15 10:40:41 CET 2002 Daniel Veillard <daniel@veillard.com>

	* libxslt/transform.c xsltproc/xsltproc.c: fixed a couple of
	  small problems raised by Justin Fletcher

Mon Jan 14 18:35:18 CET 2002 Daniel Veillard <daniel@veillard.com>

	* configure.in: releasing 1.0.10
	* doc/*: updating the docs for the release.
	* libxslt/namespaces.c libxslt/pattern.c libxslt/transform.c:
	  seems I inadvertantly commited previously stuff from a failed
	  attempt at fixing namespace nodes parents.

Mon Jan 14 12:20:33 CET 2002 Daniel Veillard <daniel@veillard.com>

	* libxslt/numbers.c: the xsl:number implementation incorrectly
	  cached the format string in some case. Fixes bug #65391

Mon Jan 14 10:35:27 CET 2002 Daniel Veillard <daniel@veillard.com>

	* configure.in: fixed a couple of cut and paste errors in the
	  math functions detection
	* libxslt.spec.in: added missing file entry for libxslt.pc

Tue Jan  8 21:04:17 MST 2002 John Fleck <jfleck@inkstain.net>

	* doc/xsltproc.xml, doc/xsltproc.1, doc/xsltproc.html
	update xsltproc man page to add --stringparam option

Tue Jan  8 17:21:02 CET 2002 Daniel Veillard <daniel@veillard.com>

	* xsltproc/xsltproc.c: added the --stringparam option
	* xsltproc/xsltproc.c: applied John Fleck's patch to correct
	  the --novalid behaviour.

Tue Jan  8 13:51:08 CET 2002 Daniel Veillard <daniel@veillard.com>

	* doc/site.xsl doc/*.html: added a DocBook section docbook.html

Tue Jan  8 12:51:15 CET 2002 Daniel Veillard <daniel@veillard.com>

	* doc/*.html: updated gdome2 homepage

Sat Jan  5 19:32:17 CET 2002 Daniel Veillard <daniel@veillard.com>

	* win32/dsp: Windows/MSVC project files update from Igor Zlatkovic

Fri Jan  4 22:13:40 MST 2002 John Fleck <jfleck@inkstain.net>

	* doc/xsltproc.xml, xsltproc.1 - updating man page to reflect
	increased number of parameteres, changed license, cleaned up some
	places where it looked junky because of stylesheet issues

Fri Jan  4 15:50:25 CET 2002 Daniel Veillard <daniel@veillard.com>

	* xsltproc/xsltproc.c: increased the max number of parameters

Thu Dec 20 14:54:27 CET 2001 Daniel Veillard <daniel@veillard.com>

	* libxslt.pc.in configure.in: added pkg-config file from Rodrigo Moya

Thu Dec 20 14:49:39 CET 2001 Daniel Veillard <daniel@veillard.com>

	* configure.in: applied albert portability patch
	* libxslt/libxslt.h libxslt/xslt.h libxslt/xsltconfig.h.in
	 libxslt/xsltutils.c libxslt/xsltwin32config.h.in win32/dsp/libxslt.def:
	 applied Igor patch for Windows

Tue Dec 11 15:27:15 CET 2001 Daniel Veillard <daniel@veillard.com>

	* libxslt/xsltutils.c: fixed a problem with the debuuger interface.

Fri Dec  7 15:48:48 CET 2001 Daniel Veillard <daniel@veillard.com>

	* configure.in: preparing 1.0.9
	* doc/*: updated and rebuild the doc

Thu Dec  6 14:57:56 CET 2001 Daniel Veillard <daniel@veillard.com>

	* configure.in libexslt/Makefile.am: trying to fix the problem
	  related to prelinking and libtools crazyness

Wed Dec  5 18:49:53 CET 2001 Daniel Veillard <daniel@veillard.com>

	* libxslt/transform.c libxslt/variables.c: applied Keith Isdale
	  patch for the debugger glue.

Wed Dec  5 18:43:45 CET 2001 Daniel Veillard <daniel@veillard.com>

	* breakpoint/Makefile.am breakpoint/deprecated.c: replaced
	  the whole module with just the entry points.

Fri Nov 30 18:59:50 CET 2001 Daniel Veillard <daniel@veillard.com>

	* libxslt/transform.c: Nik Clayton found a bug introduced in
	  1.0.8 when using doctypes for HTML output

Fri Nov 30 12:59:05 CET 2001 Daniel Veillard <daniel@veillard.com>

	* libxslt/attributes.c libxslt/transform.c libxslt/xsltutils.c
	  libxslt/xsltutils.h: revamped the mechanism to hook a debuger
	  to use a callback setup function, deprecating libxsltbreakpoint
	* xsltproc/Makefile.am configure.in breakpoint/Makefile.am: removing
	  dependancies on libxsltbreakpoint

Thu Nov 29 09:52:38 CET 2001 Daniel Veillard <daniel@veillard.com>

        Build patch from  Peter Williams  <peterw@ximian.com>
	* breakpoint/Makefile.am (INCLUDES): meed $(top_builddir)/libxslt.
	* doc/Makefile.am ($(PAGES)): xslt.html and site.xsl live in
	  $(srcdir), not the build directory.

Wed Nov 28 11:17:04 CET 2001 Daniel Veillard <daniel@veillard.com>

	* doc/FAQ.html doc/site.xsl doc/*.html doc/Makefile.am: added an FAQ

Tue Nov 27 21:15:43 MST 2001 John Fleck <jfleck@inkstain.net>

	* doc/xsltproc.xml, xsltproc.1, xsltproc.html - documenting new
	xsltproc return codes, per
	https://bugzilla.redhat.com/bugzilla/show_bug.cgi?id=56649 

Tue Nov 27 22:16:50 CET 2001 Daniel Veillard <daniel@veillard.com>

	* libxslt/pattern.c: Marc Tardif provided a patch to use as
	  much as 40 steps. A dynamic alloc would still be better

Mon Nov 26 21:45:07 CET 2001 Daniel Veillard <daniel@veillard.com>

	* xsltproc/xsltproc.c: return useful code signaling error conditions
	  closing #56649 (RH)

Mon Nov 26 13:14:14 CET 2001 Daniel Veillard <daniel@veillard.com>

	* configure.in libxslt/xsltwin32config.h: preparing release of 1.0.8

Mon Nov 26 11:21:27 CET 2001 Daniel Veillard <daniel@veillard.com>

	* libxslt/pattern.c: fixing bug #64044 reported by Gero Meißner,
	  template matches compilation was failing to skip blanks bewteen
	  consecutive predicates

Mon Nov 26 10:27:30 CET 2001 Daniel Veillard <daniel@veillard.com>

	* Makefile.am configure.in breakpoint/Makefile.am libexslt/Makefile.am:
	  updating Makefiles to fix the prelinking.

Sun Nov 25 15:52:38 CET 2001 Daniel Veillard <daniel@veillard.com>

* libxslt/transform.c: fixed a bug in the document extension
	  element where the doctype infos were not taken into account.

Thu Nov 22 19:08:23 CET 2001 Daniel Veillard <daniel@veillard.com>

	* libxslt/extra.c: fixed xsltDebug() to output with the normal
	  error routines
	* tests/namespaces/*: updated the tests to separate stdout and
	  stderr
	* libxslt/transform.c: increasing xsltMaxDepth to 5000

Thu Nov 22 12:09:56 CET 2001 Daniel Veillard <daniel@veillard.com>

	* configure.in libexslt/Makefile.am: more Makefile fixups

Wed Nov 21 16:29:04 CET 2001 Daniel Veillard <daniel@veillard.com>

	* configure.in libexslt/Makefile.am: trying to fix more Makefiles
	  crapola
	* libxslt/transform.c: small fix.

Tue Nov 13 16:16:41 CET 2001 Daniel Veillard <daniel@veillard.com>

	* vms/* Makefile.am: included OpenVMS port instructions from
	  John A Fotheringham, integrated in the tar file.

Mon Nov 12 22:46:26 CET 2001 Daniel Veillard <daniel@veillard.com>

	* win32/dsp/* xsltproc/xsltproc.c libxslt/transform.c: Patches
	  from Igor for Windows
	* libxslt/xslt.h: try to fix the  LIBXSLT_PUBLIC mess

Sun Nov 11 21:15:05 CET 2001 Daniel Veillard <daniel@veillard.com>

	* libxslt/transform.c: fixing bug #64298 reported by T. V. Raman

Sat Nov 10 14:01:44 CET 2001 Daniel Veillard <daniel@veillard.com>

	* configure.in: preparing 1.0.7
	* libxslt.spec.in: cleanup similar to libxml2 one
	* breakpoint/*.[hc]: finished cleaning up contributed code
	* doc/*: updated and rebuilt the documentation
	* xsltproc/xsltproc.c: cleanup of the timing code
	* xsltproc/Makefile.am: auto* sucks
	* libxslt/transform.c: added a missing include

Mon Nov  5 14:29:26 CET 2001 Daniel Veillard <daniel@veillard.com>

	* Makefile.am acconfig.h config.h.in configure.in 
	  xsltproc/Makefile.am breakpoint/* libxslt/transform.[ch]
	  libxslt/xsltconfig.h.in:  Applied Keith Isdale patch for
	  the debugger support, make it the default, added the
	  WITH_XSLT_DEBUGGER define to xsltconfig.h.in, small cleanups

Fri Nov  2 11:19:49 CET 2001 Daniel Veillard <daniel@veillard.com>

	* libxslt/libxslt.h: make sure LIBXSLT_PUBLIC is defined

Thu Nov  1 15:15:39 CET 2001 Daniel Veillard <daniel@veillard.com>

	* libxslt/xsltutils.c: handle indent=no when using an HTML
	  output
	* tests/docbook/result/* tests/xmlspec/REC-xml-*.html: this
	  modified the output of those test suites

Wed Oct 31 18:53:26 CET 2001 Daniel Veillard <daniel@veillard.com>

	* xsltproc/xsltproc.c: cleanup, moved xsllNoNetExternalEntityLoader()
	  to libxml and removed the --warnnet option

Tue Oct 30 19:32:08 CET 2001 Daniel Veillard <daniel@veillard.com>

	* configure.in: applied patches from David Härdeman closing
	  bug #62891

Tue Oct 30 15:25:19 CET 2001 Daniel Veillard <daniel@veillard.com>

	* configure.in libxslt/xsltwin32config.h: preparing 1.0.6
	* libexslt/date.c: applied patch from Bruce Miller
	* doc/*: updated and rebuilt the docs

Fri Oct 26 14:12:14 CEST 2001 Daniel Veillard <daniel@veillard.com>

	* win32/dsp/libexslt_a.dsp win32/dsp/libexslt_so.dsp
	  win32/dsp/libxslt.def: updated with latest ZIP from Igor,
	  made sure the .def is handled as binary

Fri Oct 26 11:37:01 CEST 2001 Daniel Veillard <daniel@veillard.com>

	* win32/dsp/libxslt.def libxslt/xslt.h: applied Igor patches
	  for Win32
	* doc/*.html doc/site.xsl: changed the site stylesheet a bit

Thu Oct 25 23:05:14 CEST 2001 Thomas Broyer <tbroyer@ltgt.net>

	* libxslt/numbers.c: take NaN and infinity attributes of
	  xsl:decimal-format into account. Closes #62577

Wed Oct 24 13:02:15 CEST 2001 Daniel Veillard <daniel@veillard.com>

	* doc/*.html doc/site.xsl doc/Makefile.am: the web site
	  is now extracted from the xslt.html flat file using
	  the site stylesheet ... eat your own dogfood !
	* libxslt/transform.c libxslt/xsltutils.c: fixed the 
	  HTML output to not generate a DOCTYPE if it should not
	  i.e. no identifier nor version specified in the xsl:output
	* tests/multiple/out/*.orig tests/general/bug-11-.out 
	  tests/general/bug-33-.out tests/general/bug-52.out
	  tests/docbook/result/xtchunk/html/*.orig
	  tests/docbook/result/html/gdp-handbook.html
	  tests/XSLTMark/*.out: fixing xsl:output with method=html
	  resulted in a number of small changes in the regression tests
	  output

Fri Oct 19 16:46:06 CEST 2001 Daniel Veillard <daniel@veillard.com>

	* libexslt/*.c libexslt/exsltconfig.h.in: moved the 
	  config.h include out of exsltconfig.h since this header is
	  exported and config.h is not.

Wed Oct 17 21:20:55 CEST 2001 Daniel Veillard <daniel@veillard.com>

	* libxslt/attributes.c libxslt/extensions.c libxslt/preproc.c
	  libxslt/transform.c libxslt/xsltutils.h: cleanup TODO into
	  XSLT_TODO

Wed Oct 17 02:46:55 CEST 2001 Thomas Broyer <tbroyer@ltgt.net>

	* libxslt/numbers.c: reworked internal representation of
	  tokenized number format and parsing/tokenization. This fixes
	  many bugs regarding separator and default tokens.
	* tests/REC/test-7.7-3.out: the fix changes the output of this
	  test. It now complies to the XSLT spec (wow! ;o)

Tue Oct 16 11:25:15 CEST 2001 Daniel Veillard <daniel@veillard.com>

	* xsltproc/Makefile.am configure.in config.h.in: trying to
	  bypass libtool crazyness when compiling in my debug environment
	* libxslt/templates.c: fix a compilation problem due to recent
	  libxml changes

Sun Oct 14 17:17:03 CEST 2001 Thomas Broyer <tbroyer@ltgt.net>

	* libxslt/numbers.c tests/REC/test-7.7-4.out: implement initial
	  non-alphanumeric token handling in number formatting.

Wed Oct 10 11:58:41 CEST 2001 Daniel Veillard <daniel@veillard.com>

	* configure.in: releasing 1.0.5
	* doc/xslt.html doc/html/*: updated and rebuilt the docs

Wed Oct 10 00:10:01 CEST 2001 Thomas Broyer <tbroyer@ltgt.net>

	* tests/REC/test-7.7-4.out: fixed a typo
	
Tue Oct  9 22:59:00 CEST 2001 Thomas Broyer <tbroyer@ltgt.net>

	* libexslt/saxon.c: fixed a typo and improved handling of
	  non-XPath-expression arguments.
	* libexslt/strings.c: fixed a bug in tokenize: function was using
	  tctxt->output instead of tctxt->document->doc.
	* libxslt/transform.c: fixed a bug in xsltDefaultProcessOneNode
	  which was using variable "node" instead of "cur"

Tue Oct  9 19:51:48 CEST 2001 Thomas Broyer <tbroyer@ltgt.net>

	* libxslt/extra.[ch]: removed older SAXON extensions
	  implementations from Darren Graves.
	* libexslt/date.c: applied patch from Charlie Bozeman to fix
	  a bug with time zone offset on Linux.

Tue Oct  9 13:02:46 CEST 2001 Daniel Veillard <daniel@veillard.com>

	* libxslt/documents.c libxslt/extra.c libxslt/transform.[ch]:
	  strip-space should also be applied to document imported
	  at run-time.

Tue Oct  9 12:36:53 CEST 2001 Daniel Veillard <daniel@veillard.com>

	* libxslt/imports.[ch] libxslt/transform.c libxslt/xslt.c:
	  rewrote the way strip-space gets applied. Closes bugs #61962
	* tests/docs/Makefile.am tests/docs/bug-66.xml
	  tests/general/Makefile.am tests/general/bug-66.*: added a 
	  specific example in the regression tests

Mon Oct  8 11:27:52 CEST 2001 Daniel Veillard <daniel@veillard.com>

	* libxslt/xslt.c: Fixing bug #61913
	* libxslt/transform.c: removing a small memleak when running with
	  the profiler.

Sun Oct  7 18:53:34 CEST 2001 Thomas Broyer <tbroyer@ltgt.net>

	* libexslt/saxon.c libexslt/Makefile.am libexslt/exslt.[ch]:
	  added implementation of SAXON expression(), eval() and
	  evaluate() functions.
	  See http://saxon.sourceforge.net/saxon6.4.4/extensions.html
	* tests/extension/evaluate.xsl tests/extension/list.{xsl,out}:
	  modified to use SAXON namespace (functions are not registered
	  in the LibXSLT namespace)
	* tests/exslt/common/object-type.1.out: modified to take account
	  of the new saxon:expression function

Sun Oct  7 13:15:33 CEST 2001 Daniel Veillard <daniel@veillard.com>

	* libxslt/numbers.c: fixed bug #61070, number ANY formatting 
	  should be faster too.
	* tests/docbook/result/xtchunk/html/* tests/xmlspec/REC-xml-20001006*.html:
	  updated the result of the tests. A subtle bug unnnoticed yet
	  in the XML Rec formatting got fixed.

Sat Oct  6 19:45:07 CEST 2001 Daniel Veillard <daniel@veillard.com>

	* libxslt/numbers.c: trying to fix bug #61070, seems there
	  is still a couple of problem left. And optimizations are
	  certainly needed.

Sat Oct  6 15:10:16 CEST 2001 Daniel Veillard <daniel@veillard.com>

	* libxslt/variables.c: fixing bug #61673 part II
	* tests/docs/Makefile.am tests/docs/bug-65.xml
	  tests/general/Makefile.am tests/general/bug-65.*: added a 
	  specific example in the regression tests

Sat Oct  6 12:41:37 CEST 2001 Daniel Veillard <daniel@veillard.com>

	* libxslt/pattern.c: fixed bug #61627
	* tests/docs/Makefile.am tests/docs/bug-64.xml
	  tests/general/Makefile.am tests/general/bug-64.*: added a 
	  specific example in the regression tests
	* tests/docs/Makefile.am tests/docs/bug-63.xml
	  tests/general/Makefile.am tests/general/bug-63.*: added a 
	  specific example in the regression tests for bug #61291
	  (fixed in libxml2 module)
	* tests/reports/Makefile.am tests/reports/undefvar.*: added
	  a test for handling undefined variables

Thu Oct  4 15:49:57 CEST 2001 Daniel Veillard <daniel@veillard.com>

	* configure.in xslt-config.in: trying to fix bug #60890

Thu Oct  4 15:28:25 CEST 2001 Daniel Veillard <daniel@veillard.com>

	* configure.in: applied patch to close bug #60724

Tue Oct  2 21:38:23 CEST 2001 Thomas Broyer <tbroyer@ltgt.net>

	* libexslt/date.c: applied patch from Charlie Bozeman that fixes
	  a bug in DAY_IN_WEEK and implements the date:week-in-month function

Tue Oct  2 17:11:15 CEST 2001 Daniel Veillard <daniel@veillard.com>

	* libxslt/extra.[ch] tests/extensions/list.*
	  tests/extensions/evaluate.*: applied patch from Darren Graves
	  adding support for Saxon's evaluate & expression extension functions
	  http://users.iclway.co.uk/mhkay/saxon/saxon6.3/extensions.html

Mon Oct  1 17:18:32 CEST 2001 Daniel Veillard <daniel@veillard.com>

	* libxslt/xsltwin32config.h.in win32/dsp/libexslt_*.dsp: applied
	  patches from Igor for Windows.

Tue Sep 18 11:48:20 CEST 2001 Daniel Veillard <daniel@veillard.com>

	* libxslt/xslt.c: fixed bug #60624
	* libxslt/xsltutils.c: improver the error context reporting
	* tests/reports/Makefile.am tests/reports/tst-2.*: added a
	  specific regression test
	* xsltproc/xsltproc: free the stylesheet if it contained an error.

Mon Sep 17 14:45:48 CEST 2001 Daniel Veillard <daniel@veillard.com>

	* libxslt/variables.c: fixed a problem with global var override
	  being reported as an error.
	* tests/docs/Makefile.am tests/docs/bug-61.xml
	  tests/general/Makefile.am tests/general/bug-61.*: added a 
	  specific example in the regression tests
	* configure.in tests/Makefile.am tests/reports/*: adding a test
	  to make sure redefinition of global variables in the same stylesheet
	  are still reported

Sat Sep 15 17:32:16 CEST 2001 Daniel Veillard <daniel@veillard.com>

	* libxslt/extra.c: okay the code from Norm is really non
	  portable and break everywhere except on Sun and Linux
	  platform. Compile it only on those targets.

Sat Sep 15 06:25:02 CEST 2001 Thomas Broyer <tbroyer@ltgt.net>

	* libexslt/date.c: fixed some bugs (reported by Charles Bozeman
	  and Justin Fletcher)

Fri Sep 14 15:22:30 CEST 2001 Daniel Veillard <daniel@veillard.com>

	* libxslt/numbers.c: Fixing bug #60415 
	* tests/docs/Makefile.am tests/docs/bug-61.xml
	  tests/general/Makefile.am tests/general/bug-61.*: added a 
	  specific example in the regression tests

Fri Sep 14 12:42:22 CEST 2001 Daniel Veillard <daniel@veillard.com>

	* tests/docbook/result/*: the change in libxml to output
	  decimal charrefs instead of hexadecimal changed a lot of
	  docbook results

Thu Sep 13 15:30:01 CEST 2001 Daniel Veillard <daniel@veillard.com>

	* libxslt.spec.in doc/Makefile.am: install xsltproc man page

Wed Sep 12 21:09:53 CEST 2001 Daniel Veillard <daniel@veillard.com>

	* configure.in: preparing for 1.0.4
	* doc/xslt.html doc/html/*: updated and regenerated docs

Wed Sep 12 18:10:33 CEST 2001 Thomas Broyer <tbroyer@ltgt.net>

	* libexslt/date.c: fixed some compile warnings and disabled
	  debugging by default.

Wed Sep 12 17:00:53 CEST 2001 Daniel Veillard <daniel@veillard.com>

	* win32/dsp/libxslt.def libxslt/variables.[ch]: trying to
	  incorporate comments from bug #59220

Wed Sep 12 05:51:32 CEST 2001 Thomas Broyer <tbroyer@ltgt.net>

	* configure.in libexslt/date.c libexslt/Makefile.am
	  libexslt/exslt.[ch] libexslt/.cvsignore: added implementation
	  of the EXSLT - Dates and Times core functions.
	  The exsltDateFormat* functions need to be reworked but it
	  works like this, even if it's quite messy.
	* tests/exslt/strings/.cvsignore: added

Tue Sep 11 14:48:43 CEST 2001 Daniel Veillard <daniel@veillard.com>

	* xsltproc/xsltproc.c: tell in usage that parameter strings
	  need to be quoted 

Tue Sep 11 13:42:49 CEST 2001 Daniel Veillard <daniel@veillard.com>

	* libxslt/Makefile.am libxslt/transform.c: trying to close
	  bug #60304 on xsl:fallback usage
	* tests/docs/Makefile.am tests/docs/bug-60.xml
	  tests/general/Makefile.am tests/general/bug-60.*: added a 
	  specific example in the regression tests

Tue Sep 11 13:02:34 CEST 2001 Daniel Veillard <daniel@veillard.com>

	* tests/documents/Makefile.am tests/documents/*: changed the
	  test to use doc%5Ffile instead of doc%20file, this is 
	  sufficient to preserve the test capacities while closing
	  bug #60090

Tue Sep 11 12:33:03 CEST 2001 Daniel Veillard <daniel@veillard.com>

	* libxslt/extra.c : close #59570 by simply not providing
	  Norm's extension on FreeBSD.
	* tests/general tests/docs: added a couple of new entries
	  in the testsuite
	* libexslt/strings.c: NULL initialized a local variable
	  which was tested later on.

Mon Sep 10 22:52:44 CEST 2001 Daniel Veillard <daniel@veillard.com>

	* libxslt/pattern.c tests/docbook/result/fo/*: applied fix from
	  #60143 and rebuilt the FO test outputs

Mon Sep 10 19:38:54 CEST 2001 Daniel Veillard <daniel@veillard.com>

	* libxslt/attributes.c libxslt/transform.c: fixed bug #59757
	  on inheritance of attributes from multiple attributes-sets

Mon Sep  3 02:14:58 CEST 2001 Thomas Broyer <tbroyer@ltgt.net>

	* libexslt/Makefile.am libexslt/exslt.[ch] libexslt/strings.c:
	  added implementation of EXSLT - Strings.
	  Currently implemented functins are str:tokenize, str:align
	  str:concat and str:padding.
	* configure.in tests/exslt/Makefile.am
	  tests/exslt/strings/Makefile.am
	  tests/exslt/strings/tokenize.1.*: added a test for the
	  str:tokenize function.

Fri Aug 31 13:51:53 CEST 2001 Daniel Veillard <daniel@veillard.com>

	* libxslt/libxslt.4 libexslt/libexslt.4 libxslt/Makefile.am
	  libexslt/Makefile.am: added man pages provided by Heiko Rupp

Wed Aug 29 21:23:54 MDT 2001 John Fleck <jfleck@inkstain.net>

	* doc/tutorial/libxslttutorial.xml, libxslttutorial.html - update
	tutorial text to add references to global variables cleanups

Wed Aug 29 21:05:43 MDT 2001 John Fleck <jfleck@inkstain.net>

	* doc/xsltproc.1 - added xsltproc man page (note: this has not
	been added into the build yet)

Wed Aug 29 22:58:58 CEST 2001 Daniel Veillard <daniel@veillard.com>

	* doc/tutorial/libxslt_tutorial.c doc/tutorial/libxslttutorial.html
	  doc/tutorial/libxslttutorial.xml: added global variables cleanups
	  to the example.
	* tests/documents/Makefile.am: mjcox pointed to some missing files

Wed Aug 29 15:32:52 CEST 2001 Thomas Broyer <tbroyer@ltgt.net>

	* libexslt/common.c: fixed a bug in exsltNodeSetFunction

Wed Aug 29 15:18:28 CEST 2001 Thomas Broyer <tbroyer@ltgt.net>

	* libexslt/common.c: implemented version 3 of the exslt:node-set()
	  function.
	* tests/exslt/common/Makefile.am
	  tests/exslt/common/node-set.3.{xml,xsl,out}: added a test

Mon Aug 27 08:27:21 MDT 2001 John Fleck <jfleck@inkstain.net>

	* adding doc/xsltproc.html - html generated from xsltproc.xml,
	update doc/xslt.html with link to xsltproc.html

Mon Aug 27 08:21:47 MDT 2001 John Fleck <jfleck@inkstain.net>

	* adding doc/xsltproc.xml - user manual for xsltproc
	
Sun Aug 26 20:52:02 CEST 2001 Daniel Veillard <daniel@veillard.com>

	* libxslt/numbers.c libxslt/xslt.c: removed a couple of
	  warning raised by the Windows compiler (Chris Poblete)

Fri Aug 24 01:15:24 CEST 2001 Daniel Veillard <daniel@veillard.com>

	* libxslt/functions.h libxslt/preproc.c libxslt/transform.c:
	  closed bugs #59212 and #59220

Thu Aug 23 23:18:44 CEST 2001 Daniel Veillard <daniel@veillard.com>

	* config.h.in configure.in xsltproc/xsltproc.c: complete test
	  of a DocBook XSLt transform with --nonet, need stat(), added
	  checking in configure.

Thu Aug 23 17:37:40 CEST 2001 Daniel Veillard <daniel@veillard.com>

	* xsltproc/xsltproc.c: catalog integration, cleanup with
	  the --nonet option closing #59427
	* libxslt/xslt.c: removed a small memleak when using a 
	  stylesheet PI

Tue Aug 21 13:17:19 CEST 2001 Daniel Veillard <daniel@veillard.com>

	* //Makefile.am : fixed an error I propagated to nearly all
	  Makefiles.am on Saturday

Tue Aug 21 13:10:03 CEST 2001 Daniel Veillard <daniel@veillard.com>

	* libexslt/math.c libxslt/numbers.c: use xmlXPathIsNaN() and
	  xmlXPathIsInf()
	* libxslt/pattern.c: tag a potential threading problem.

Tue Aug 21 11:18:45 CEST 2001 Bjorn Reese <breese@users.sourceforge.net>

	* libxslt/numbers.c libexslt/math.c: Re-worked NaN and Inf
	  support.

Sat Aug 18 15:57:46 CEST 2001 Daniel Veillard <daniel@veillard.com>

	* //Makefile.am : fixed a number of small problems with
	  Makefiles spotted by Albert Chin

Thu Aug 16 14:37:55 CEST 2001 Daniel Veillard <daniel@veillard.com>

	* win32/dsp/libxslt.def: minimal changes to compile 1.0.2 on
	  Windows/MSC

Thu Aug 16 12:58:11 CEST 2001 Daniel Veillard <daniel@veillard.com>

	* libxslt/extensions.c: fixed a permutation of args to
	  xsltPrintErrorContext()

Wed Aug 15 15:19:14 CEST 2001 Daniel Veillard <daniel@veillard.com>

	* Makefile.am config.h.in configure.in libxslt/xsltwin32config.h:
	  release of 1.0.2
	* tests/docs/Makefile.am libexslt/Makefile.am
	  tests/documents/Makefile.am tests/general/Makefile.am
	  xsltproc/Makefile.am: cleaning of Makefiles pointed out
	  by make distcheck

Wed Aug 15 13:54:41 CEST 2001 Daniel Veillard <daniel@veillard.com>

	* libxslt/functions.h libxslt/transform.c: a bit of cleanup

Wed Aug 15 12:06:43 CEST 2001 Daniel Veillard <daniel@veillard.com>

	* libexslt/common.c libexslt/math.c libxslt/Makefile.am
	  libxslt/libxslt.h libxslt/xsltconfig.h.in: cleanup of includes
	  export xsltconfig.h at make install stage

Tue Aug 14 20:51:09 MDT 2001 John Fleck <jfleck@inkstain.net>

	* doc/xslt.html updated xsltproc description with the many new
	  command line options Daniel has added, cleaned up some spelling

Tue Aug 14 18:41:02 CEST 2001 Daniel Veillard <daniel@veillard.com>

	* libxslt/extra.c libxslt/keys.c libxslt/templates.c 
	  libxslt/transform.c libxslt/variables.c libxslt/xsltutils.c:
	  serious changes on Result Value Trees and NodeSets
	  w.r.t. deallocation and collect operations. Probably not
	  100% clean (merge of allocated trees smells like a problem).
	  Seems sufficient to close #58943 . Also check if XPath evaluations
	  failed, and in this case stops the processing and avoid
	  going further, goal is to not segfault on broken XSLT.

Tue Aug 14 15:32:08 CEST 2001 Daniel Veillard <daniel@veillard.com>

	* libxslt/pattern.c libxslt/transform.c: trying to kill bug #58878,
	  some associated serious cleanup in the pattern code.
	* tests/docbook/result/*: regenerated all the results for the
	  docbook testsuite. Seems killing #58878 also changes the
	  fo results seriously.
	* tests/docs/Makefile.am tests/docs/bug-5[56].xml 
	  tests/general/Makefile.am tests/general/bug-5[56].*: added
	  2 more tests

Tue Aug 14 05:01:30 CEST 2001 Thomas Broyer <tbroyer@ltgt.net>

	* libxslt/xslt.c libxslt/xsltInternals.h libxslt/transform.c
	  libxslt/extra.[ch] libxslt/extensions.c libxslt/preproc.[ch]:
	  fixed compilation warnings due to recent changes to the extension
	  framework.
	* libxslt/preproc.[ch] libexslt/common.c
	  fixed the precomputation of *:document elements
	* libxslt/functions.h: fixed a compilation warning

Mon Aug 13 11:41:02 CEST 2001 Daniel Veillard <daniel@veillard.com>

	* libxslt/xsltutils.c: applied fix suggested by Tom Moog
	  for xsltTimeStamp() in bug report #58012

Sun Aug 12 21:53:13 CEST 2001 Daniel Veillard <daniel@veillard.com>

	* libxslt/functions.c libxslt/keys.c libxslt/transform.c 
	  libxslt/xsltutils.h: cleaned up the code w.r.t. handling
	  of 'non-standard' libxml element like namespace nodes.
	* tests/docs/Makefile.am tests/docs/bug-54.xml
	  tests/general/Makefile.am tests/general/bug-54.*: added a 
	  specific example in the regression tests

Wed Aug  8 22:57:05 CEST 2001 Daniel Veillard <daniel@veillard.com>

	* HACKING: added John Fleck right to commit in the doc subdir

Tue Aug  7 03:11:31 CEST 2001 Daniel Veillard <daniel@veillard.com>

	* xsltproc/xsltproc.c: for heriting defaulted atts from the DTD
	* tests/docs/Makefile.am tests/docs/bug-52.xml tests/docs/bug-53.xml
	  tests/general/Makefile.am tests/general/bug-52.*
	  tests/general/bug-53.*: Added a few new tests for recently fixed
	  stuff in libxml
	* tests/xmlspec/REC-xml-20001006-review.html
	  tests/xmlspec/REC-xml-20001006.html: inheriting default attrs from
	  DTD changed the result by adding extra attributes to the HTML output

2001-08-06  Peter Williams  <peterw@ximian.com>

	* libexslt/Makefile.am, xsltproc/Makefile.am: Fixes for compiling
	when srcdir != builddir.

Sun Aug  5 09:37:14 CEST 2001 Thomas Broyer <tbroyer@ltgt.net>

	* libxslt/extensions.[ch] libxslt/preproc.[ch] libxslt/transform.c
	  libxslt/xslt.c libxslt/xsltInternals.h: modified extension framework
	  to easify extension element precomputation.
	* libexslt/functions.c: uses the new framework and precomputes
	  func:result elements.

Sat Aug  4 20:42:32 CEST 2001 Daniel Veillard <daniel@veillard.com>

	* libxslt/transform.c: bug fix on output="text" from Nicolas Marsgui

Fri Aug  3 14:23:25 CEST 2001 Daniel Veillard <daniel@veillard.com>

	* tests/general/bug-21-.out tests/general/bug-31-.out:
	  this got fixed by libxml patches
	* win32/readme.msvc win32/dsp/* xsltproc/xsltproc.c
	  Makefile.am libexslt/exslt.[ch] libexslt/exsltconfig.h.in
	  libexslt/functions.c libexslt/math.c libxslt/win32config.h
	  libxslt/xsltconfig.h.in libxslt/xsltutils.h
	  libxslt/xsltwin32config.h libxslt/xsltwin32config.h.in:
	  Applied Igor  Zlatkovic Win32 Facelift No.2 patch, and fixed
	  a few things related to those changes.

Wed Aug  1 13:58:21 CEST 2001 Daniel Veillard <daniel@veillard.com>

	* libxslt/xsltutils.c: well one need one \n after DOCTYPE
	* test//*/*.out: the output of some tests changed, looks better
	  actually

Wed Aug  1 13:21:18 CEST 2001 Daniel Veillard <daniel@veillard.com>

	* libxslt/xsltutils.c: avoid extra \n when serializing top
	  text nodes.

Wed Aug  1 10:37:50 CEST 2001 Daniel Veillard <daniel@veillard.com>

	* libxslt/extra.c: one more revision on Norm's localTime() function

Wed Aug  1 01:37:41 CEST 2001 Thomas Broyer <tbroyer@ltgt.net>

	* libexslt/sets.c: fixed bugs in exsltTrailingFunction and
	  exsltLeadingFunction when passing an empty node-set as the
	  second argument
	* libxslt/functions.[ch]: gave priority to context-level functions
	  over extension module functions. This allows a function declared
	  with a func:function element to override an extension module
	  function for example. This is a bit hackish...
	* tests/exslt/sets/{lead,trail}ing.1.out: fixed errors. The result
	  values didn't conform to the expected values. This is a bug in
	  the EXSLT official use cases.

Tue Jul 31 23:53:55 CEST 2001 Daniel Veillard <daniel@veillard.com>

	* config.h.in configure.in libxslt/extra.c: tried to integrate
	  Norm's implemntation of localTime()

Tue Jul 31 03:47:10 EDT 2001 Daniel Veillard <daniel@veillard.com>

	* libxslt/extra.c: fixed a serious proble is node-set was called
	  on a nodeset
	* tests//*/Makefile.am: fixed the rule to rebuild xsltproc

Lun Jul 30 05:47:43 CEST 2001 Thomas Broyer <tbroyer@ltgt.net>

	* libexslt/functions.c: fixed memory leaks
	
Sun Jul 29 08:37:59 EDT 2001 Daniel Veillard <daniel@veillard.com>

	* libexslt/functions.c libxslt/extensions.[ch] libxslt/extensions.h
	  libxslt/xslt.[hc] libxslt/xsltInternals.h xsltproc/xsltproc.c:
	  more cleanup of the problems introduced with EXSLT, also closes
	  bug #58180

Sat Jul 28 08:25:05 MDT 2001 John Fleck <jfleck@inkstain.net>

	* doc/internals.html - general cleanup

Fri Jul 27 04:00:38 CEST 2001 Thomas Broyer <tbroyer@ltgt.net>

	* configure.in tests/Makefile.am tests/exslt/*: added some tests
	  to check EXSLT conformance
	* libexslt/sets.c: fixed a typo when registering has-same-node

Fri Jul 27 12:33:52 EDT 2001 Daniel Veillard <daniel@veillard.com>

	* libxslt/extensions.c xsltproc/xsltproc.c: quick cleanup
	  of memory allocations, raise a bug in the test suite, also
	  need to be centralized as a single cleanup function.

Fri Jul 27 10:50:39 EDT 2001 Daniel Veillard <daniel@veillard.com>

	* libxslt/transform.[ch]: applied changes from Tom Moog #58002
	* libexslt/functions.c libxslt/documents.c libxslt/extensions.c:
	  Some cleanup, there is still a memory leak left and some warnings
	  in libexslt.

Thu Jul 26 19:05:48 CEST 2001 Thomas Broyer <tbroyer@ltgt.net>

	* libxslt/extensions.[ch] libxslt/functions.[ch] libxslt/preproc.c
	  libxslt/transform.[ch] libxslt/variables.c libxslt/xslt.c 
	  libxslt/xsltInternals.h: new extension framework.
	  Added stylesheet module data, top-level and extension elements
	  precomputing, global registration of top-level elements and 
	  extension elements and functions.
	  Extensions are no longer initialized from extension-element-prefixes
	  declarations but when modules need the data.
	  init/shutdown functions registered with xsltRegisterExtModule{,Full}
	  only allocate and free module data, they shouldn't register the
	  elements and functions any more.
	* libxslt/xsltutils.c: fixed a bug in xsltPrintErrorContext when
	  @node wasn't NULL.
	* libxslt/xslt.c: fixed xsltPrecomputeStylesheetTop which allowed
	  non-XSLT top-level elements before any xsl:import element.
	* libexslt/common.c libexslt/functions.c libexslt/math.c
	  libexslt/sets.c: adapted to use the new extension framework.
	* libxslt/functions.c libxslt/extensions[ch] xsltproc/xsltproc.c:
	  moved the test module from functions.c to extensions.[ch],
	  modified it to use the new extension framework. Updated xsltproc
	  to register the test module.

Thu Jul 26 10:20:19 EDT 2001 Daniel Veillard <daniel@veillard.com>

	* libxslt/pattern.c: fixed an ugly problem with namespaces
	  in templates compilation
	* tests/namespaces/tst4.*: added a specific testcase
	* libxslt/transform.c: reenabled debug

Tue Jul 24 17:45:22 CEST 2001 Daniel Veillard <daniel@veillard.com>

	* configure.in libxslt.spec.in libxslt/xsltwin32config.h:
	  releasing 1.0.1
	* doc/html/*.html: updated the docs.
	* xsltproc/xsltproc.c: activate line numbering unfortunately
	  this works only with CVS, libxml2-2.4.1 is broken in this respect

Mon Jul 23 23:35:00 HKT 2001 William M. Brack <wbrack@mmm.com.hk>

	* libxslt/documents.c enhancement to xsltFindDocument to
	  cater for the Matt Sergeant patch

Mon Jul 23 09:32:27 MDT 2001 John Fleck <jfleck@inkstain.net>

	* updating libxslt tutorial to include param support

Mon Jul 23 20:12:38 CEST 2001 Daniel Veillard <daniel@veillard.com>

	* libexslt/math.c: small cleanup
	* libxslt/functions.c: patch to document('') from Matt Sergeant
	* libxslt/xsltInternals.h libxslt/xsltutils.[ch]: profiler on Windows
	  c.f. bug #57464 from Tom Moog

2001-07-19  Darin Adler  <darin@bentspoon.com>

	* configure.in: Add HTML_DIR definition.
	* xsltproc/.cvsignore: Ignore some generated files.

2001-07-18  Peter Williams  <peterw@ximian.com>

	* xsltproc/Makefile.am (INCLUDES): Fix compiling when
	srcdir != builddir.

2001-07-17  Thomas Broyer <tbroyer@ltgt.net>

	* libexslt/.cvsignore libexslt/Makefile.am libexslt/utils.[ch]
	  libexslt/common.c libexslt/functions.c libexslt/math.c
	  libexslt/sets.c: removed utils.[ch] as their content is
	  integrated in libxml
	* libexslt/sets.c: uses the new libxml functions
	* libxslt/extra.[ch]: removed exsl:document
	* AUTHORS: added /me

2001-07-16  Thomas Broyer <tbroyer@ltgt.net>

	* libexslt/.cvsignore: some more generated files to ignore
	* libexslt/Makefile.am: utils.h not installed anymore
	* libexslt/common.c libexslt/exslt.[ch] libexslt/functions.c
	  libexslt/math.c libexslt/sets.c:
	  changed function prefix from exsl* to exslt*
	  {common.c,exslt.c} moved exsltLib{rary,exslt,xslt,xml}Version
	  from common.c to exslt.c
	  {common.c} removed exslNodeSetFunction, uses xsltFunctionNodeSet
	  instead
	* libxslt/extra.c: fixed xsltFunctionNodeSet to accept
	  XPATH_NODESET arguments in addition to XPATH_XSLT_TREE
	* xsltproc/xsltproc.c: updated to use the new function prefix

2001-07-15  Darin Adler  <darin@bentspoon.com>

	* libxslt/.cvsignore:
	* tests/XSLTMark/.cvsignore:
	* tests/extensions/.cvsignore:
	* tests/xmlspec/.cvsignore:
	Some more generated files to ignore.

Mon Jul 16 14:26:48 CEST 2001 Daniel Veillard <Daniel.Veillard@imag.fr>

	* Makefile.am configure.in libexslt/Makefile.am:
	  Integration of libexslt in the build system
	* libxslt/Makefile.am libxslt/xsltproc.c libxslt/xsltutils.c
	  xsltproc/Makefile.am xsltproc/xsltproc.c:
	  Moved xsltproc to a separate directory, linked it to libexslt,
	  and added exslt version reports to -V
	* tests/*/Makefile.am: updated the path to xsltproc
	* libexslt/common.c libexslt/exslt.h libexslt/exsltconfig.h.in
	  libexslt/functions.c libexslt/math.c libexslt/sets.c: added
	  versionning informations, some cleanup, and added documentation
	  to a couple of exported functions

Sun Jul 15 15:27:47 CEST 2001 Thomas Broyer <tbroyer@ltgt.net>

	* libexslt/Makefile.am: account for new source files
	* libexslt/.cvsignore: added

Sun Jul 15 05:02:50 CEST 2001 Thomas Broyer <tbroyer@ltgt.net>

	* libexslt/exslt.[hc] libexslt/common.[hc] libexslt/functions.[hc]
	  libexslt/math.[hc] libexslt/sets.[hc] libexslt/utils.[hc]:
	  start implementing EXSLT

Sun Jul 15 16:01:55 CEST 2001 Daniel Veillard <Daniel.Veillard@imag.fr>

	* libxslt/numbers.c libxslt/numbersInternals.h libxslt/preproc.c:
	  trying to accept AVT for "format" in xsl:number

Fri Jul 13 16:57:08 CEST 2001 Daniel Veillard <Daniel.Veillard@imag.fr>

	* win32/libxslt/libxslt.defs: trying to close #57460 by adding
	  xsltProfileStylesheet

Thu Jul 12 21:31:06 CEST 2001 Daniel Veillard <Daniel.Veillard@imag.fr>

	* libxslt/documents.c libxslt/extensions.c libxslt/extra.c
	  libxslt/functions.c libxslt/imports.c libxslt/keys.c
	  libxslt/namespaces.c libxslt/numbers.c libxslt/pattern.c
	  libxslt/preproc.c libxslt/templates.c libxslt/transform.c
	  libxslt/variables.c libxslt/xslt.c: provide context for
	  error messages. Requires libxml head changes.
	* libxslt/xsltutils.c libxslt/xsltutils.h: fixed a --profile
	  problem

Wed Jul 11 00:32:21 CEST 2001 Daniel Veillard <Daniel.Veillard@imag.fr>

	* libexslt/Makefile.am: initial EXSLT framework

Tue Jul 10 18:03:36 CEST 2001 Daniel Veillard <Daniel.Veillard@imag.fr>

	* configure.in libxslt/xsltwin32config.h: releaseing 1.0.0
	* win32/libxslt/libxslt.def: added another entry point
	* libxslt/transform.c: fixed a comment block
	* doc/xslt.html doc/html/*: updated and regenerated the docs

Tue Jul 10 17:25:59 CEST 2001 Daniel Veillard <Daniel.Veillard@imag.fr>

	* win32/libxslt/libxslt.def: added missing functions

Tue Jul 10 16:48:43 CEST 2001 Daniel Veillard <Daniel.Veillard@imag.fr>

	* FEATURES libxslt/xsltproc.c libxslt/transform.c
	  libxslt/xsltInternals.h: added Embedding Stylesheets
	* tests/REC/Makefile.am tests/REC/stand-2.7-1.*: added the test
	  from the REC about it
	* libxslt/transform.c libxslt/extra.[ch] libxslt/preproc.c:
	  tried to accomodate the various (and changing) proprietary
	  ways of implementing chunking.
	* tests/docbook/result/xtchunk/html: now output is generated in
	  ISO-8859-1

Mon Jul  9 23:23:50 CEST 2001 Daniel Veillard <Daniel.Veillard@imag.fr>

	* libxslt/xsltproc.c: small cleanup
	* libxslt/transform.c libxslt/xslt.c : patch from Michal Sajdak
	  for cdata/text handling

Mon Jul  9 22:02:40 CEST 2001 Daniel Veillard <Daniel.Veillard@imag.fr>

	* libxslt/xsltutils.c: small fix for xsl:message by Stephane GUIBOU
	* tests/documents/Makefile.am tests/documents/message.*: added
	  a specific regression test
	* libxslt/transform.c: fixed an infinite loop
	* configure.in doc/Makefile.am: attempt to add --with-html-dir,
	  this may work

Mon Jul  9 15:55:14 CEST 2001 Daniel Veillard <Daniel.Veillard@imag.fr>

	* libxslt/transform.c libxslt/xslt.c libxslt/xsltInternals.h:
	  fixed exclude-result-prefixes handling and how namespaces
	  propagate from the stylesheet to the result in general, this
	  is a serious cleanup.
	* tests/general/bug-3[67]-inc.xsl tests/general/bug-6-.xsl
	  tests/general/itemschoose.out tests/namespaces/extra.xsl
	  tests/REC/test-10-1.xsl tests/REC/test-10-2.xsl
	  tests/REC/test-11.2-1.xsl tests/REC/test-11.2-2.xsl
	  tests/REC/test-11.2-6.xsl tests/REC/test-15-1.xsl
	  tests/REC/test-16.1-1.xsl tests/REC/test-16.1-2.xsl
	  tests/REC/test-5.4-1.out tests/REC/test-5.4-2.out
	  tests/REC/test-5.4-3.out tests/REC/test-5.4-4.out
	  tests/REC/test-7.1.1-2.out tests/REC/test-7.1.1-2.xsl
	  tests/REC/test-7.1.1-3.out tests/REC/test-7.1.1-3.xsl
	  tests/REC/test-7.1.1.out tests/REC/test-7.1.3.xsl
	  tests/REC/test-7.3.xsl tests/REC/test-7.4.xsl
	  tests/REC/test-7.6.1-1.xsl tests/REC/test-7.6.1-2.xsl
	  tests/REC/test-7.6.1-3.xsl tests/REC/test-7.6.2-1.xsl:
	  fixed and rechecked all the tests where the namespace
	  propagation was wrong either taht the rules were not applied
	  correctly or that superfluous namespaces were declared in the
	  stylesheets

Sun Jul  8 22:12:02 CEST 2001 Daniel Veillard <Daniel.Veillard@imag.fr>

	* libxslt/extra.c libxslt/functions.c libxslt/transform.[ch]
	  libxslt/variables.h: Norm pointed out that element-available()
	  didn't work, implemented it
	* tests/extensions/Makefile.am tests/extensions/list.*: added
	  a test for all registered xslt element, function and default
	  extensions.

Sun Jul  8 20:44:25 CEST 2001 Daniel Veillard <Daniel.Veillard@imag.fr>

	* tests/documents/Makefile.am 'tests/documents/doc file.xml'
	  tests/documents/docfile.xml tests/documents/test.result
	  tests/documents/test.xml tests/documents/test.xsl:
	  added a test for URI-escaping on document() input

Sun Jul  8 16:34:07 CEST 2001 Daniel Veillard <Daniel.Veillard@imag.fr>

	* tests/docs/Makefile.am tests/general/Makefile.am
	  tests/general/bug-49-* tests/docs/bug-49-*
	  tests/general/bug-50-* tests/docs/bug-50-*: added a
	  couple of regression tests for bugs posted on the list

Sun Jul  8 15:40:44 CEST 2001 Daniel Veillard <Daniel.Veillard@imag.fr>

	* libxslt/xsltproc.c: avoid generating CDATA node in document
	  tree when parsed, force generation of text nodes instead.

Sun Jul  8 14:39:27 CEST 2001 Daniel Veillard <Daniel.Veillard@imag.fr>

	* doc/extensions.html: fixed a number of typo found by Dan York
	* libxslt/xsltutils.c: improved the profiling ouput, added the
	  average value too.

Sun Jul  8 00:01:21 CEST 2001 Daniel Veillard <Daniel.Veillard@imag.fr>

	* libxslt/variables.c: tryingt to fix a problem raised by Norm

Sat Jul  7 23:19:09 CEST 2001 Daniel Veillard <Daniel.Veillard@imag.fr>

	* config.h.in configure.in: added gettimeofday() check
	* libxslt/transform.c libxslt/xsltInternals.h libxslt/xsltutils.[ch]:
	  profiling works option --profile (or --norman ;)

Sat Jul  7 18:58:56 CEST 2001 Daniel Veillard <Daniel.Veillard@imag.fr>

	* libxslt/templates.c libxslt/transform.c libxslt/transform.h
	  libxslt/variables.c: big cleanup on the way templates or 
	  template fragments are processed, cleanup of stack building
	* tests/docs/Makefile.am tests/general/Makefile.am
	  tests/general/bug-4[1-8]-* tests/docs/bug-4[1-8]-*: added a
	  series of regression test for the variable/params lookups
	* libxslt/transform.c libxslt/xsltutils.[ch] libxslt/xsltproc.c:
	  started working on profiling code, there is just invocation counting
	  yet but the framework is in place.

Sat Jul  7 11:20:59 CEST 2001 Daniel Veillard <Daniel.Veillard@imag.fr>

	* tests/docs/Makefile.am tests/general/Makefile.am
	  tests/general/bug-40-* tests/docs/bug-40-*: added a specific
	  regression test for the variable scope within templates problem

Sat Jul  7 17:05:00 HKT 2001 Wiliam Brack <wbrack@mmm.com.hk>

	* xsltInternals.h variables.c transform.c:
	  fixed problem with variable scope within templates

Fri Jul  6 17:42:06 CEST 2001 Daniel Veillard <Daniel.Veillard@imag.fr>

	* doc/extensions.html doc/internals.html doc/xslt.html:
	  added a documentation on writing libxslt extensions, and
	  added links to the main page
	* libxslt/functions.c libxslt/xsltInternals.h

Fri Jul  6 14:30:00 HKT 2001 William Brack <wbrack@mmm.com.hk>

	* cleaned up many comments and error messages

Fri Jul  6 01:43:51 CEST 2001 Daniel Veillard <Daniel.Veillard@imag.fr>

	* configure.in libxslt/xsltwin32config.h: released 0.14.0
	* doc/xslt.html: added 0.14.0 release

Fri Jul  6 01:00:55 CEST 2001 Daniel Veillard <Daniel.Veillard@imag.fr>

	* doc/html/*: rebuilt docs before release
	* libxslt/extensions.c: fixed a function doc header

Fri Jul  6 00:40:55 CEST 2001 Daniel Veillard <Daniel.Veillard@imag.fr>

	* FEATURES: updated
	* libxslt/xslt.c libxslt/xsltInternals.h: added exclude-result-prefix
	  support
	* tests/REC/Makefile.am tests/REC/test-7.1.1-[23]*: added a couple
	  of specific tests
	* tests/xmlspec/REC-xml-20001006-review.html: seems this changed
	  something there, not visually perceptible

Thu Jul  5 22:49:57 CEST 2001 Daniel Veillard <Daniel.Veillard@imag.fr>

	* tests/docbook/result/: the change in libxml affected the
	  output of the Docbook tests (of course it was detected on
	  a DocBook example)

Thu Jul  5 15:11:58 CEST 2001 Daniel Veillard <Daniel.Veillard@imag.fr>

	* FEATURES: updated
	* libxslt/transform.c: added cdata-section-elements
	* tests/REC/Makefile.am tests/REC/test-16.1-*: added 2 tests from
	  the REC

Thu Jul  5 10:44:47 CEST 2001 Daniel Veillard <Daniel.Veillard@imag.fr>

	* FEATURES: updated
	* libxslt/xsltutils.c: do not dump document for which there have
	  been no generated content
	* tests/multiple/result.xml tests/namespaces/extra2.out: fixed
	  test output accordingly
	* libxslt/transform.c libxslt/preproc.c: added xsl:fallback support
	* tests/REC/Makefile.am tests/REC/test-15-1.*: xsl:fallback test
	* tests/xmlspec/Makefile.am tests/docbook/Makefile.am: cleanups

Wed Jul  4 15:15:50 CEST 2001 Daniel Veillard <Daniel.Veillard@imag.fr>

	* libxslt/extension.[ch] libxslt/extra.[ch] libxslt/xsltInternals.h
	  libxslt/transform.c libxslt/functions.c: Added the extension API
	  suggested by Thomas Broyer, this should allow implementation of
	  EXSLT for example.
	* libxslt/extra.[ch]: added a fake xsltFunctionLocalTime() in Norm's
	  CVS extension namespace to avoid complaints, some cleanup
	* configure.in tests/Makefile.am tests/extensions/*: added a test
	  for new modules testing both elements and functions registration

Fri Jun 29 23:32:37 CEST 2001 Daniel Veillard <Daniel.Veillard@imag.fr>

	* libxslt/pattern.c libxslt/preproc.c libxslt/transform.c
	  libxslt/xslt.c libxslt/xsltutils.[ch]: added xsltGetQNameURI()
	  and cleaned up the way URI for QNames were computed through
	  the code, serious cleanup.
	* libxslt/xsltInternals.h libxslt/xslt.c: moved cdata-sections
	  in their own hash table, implementation not yet finished.

Thu Jun 28 23:01:14 CEST 2001 Daniel Veillard <Daniel.Veillard@imag.fr>

	* libxslt/keys.c libxslt/templates.c libxslt/transform.c
	  libxslt/variables.c libxslt/xsltutils.c: hum seems I forgot
	  to save/restore some XPath context, bug raised by
	  Steve Cheng

Thu Jun 28 15:48:06 CEST 2001 Daniel Veillard <Daniel.Veillard@imag.fr>

	* libxslt/xsltwin32config.h[.in]: added configuration/version
	  informations for Windows/MSC
	* libxslt/libxslt.h libxslt/*.c: internal header to centralize
	  includes switches
	* libxslt/Makefile.am: added libxslt.h and xsltwin32config.h[.in]
	* libxslt/*.[ch] libxslt/*.in: quite a bit of cleanup, especially
	  the email addresses
	* AUTHORS: added William

Tue Jun 26 18:45:38 CEST 2001 Daniel Veillard <Daniel.Veillard@imag.fr>

	* configure.in doc/xslt.html: releasing 0.13.0
	* doc/Makefile.am: don't index the win32 include
	* doc/html/*: rebuilt the docs

Mon Jun 25 15:30:30 CEST 2001 Daniel Veillard <Daniel.Veillard@imag.fr>

	* libxslt/xsltproc.c: John Fleck found a typo in usage()
	* libxslt/xslt.c: avoid warning if version="1.1" is used
	* libxslt/transform.c: forgot to initialize cur->outputFile
	* libxslt/functions.c: DOCBOOK_XSL_HACK some versions of DocBook XSL
	  use the vendor string to detect supporting chunking, this
	  is a workaround to be considered in the list of decent XSLT
	  processors <grin/>

Mon Jun 25 12:41:30 CEST 2001 Daniel Veillard <Daniel.Veillard@imag.fr>

	* libxslt/transform.[ch] libxslt/xslt.c libxslt/xsltInternals.h:
	  added a new interface xsltRunStylesheet() for a more flexible
	  handling of the output and trying to adhere to xsl:document
	  filename generation semantic if one knows the URL of the output,
	  also add IObuf capacity and SAX for output but is currently not
	  implemented.
	* libxslt/xsltproc.c: added a -o or --output filename argument
	  to test xsltRunStylesheet() or provide a base when generating
	  multiple outputs
	* tests/docbook/Makefile.am tests/docbook/result/xtchunk/html/*:
	  updated tests to add DocBook xt:document based chunking
	* tests/multiple/Makefile.am: cleaned up the makefile a bit
	* tests/multiple/out/*.html: the new xt:document now generate
	  the DOCTYPE if available as is the case for HTML

Mon Jun 25 08:45:00 HKT 2001 William Brack <wbrack@mmm.com.hk>

	* Removed some redundant code in xsltDefaultProcessOneNode
	  and revised the default processing of an attribute node

Sun Jun 24 14:40:00 HKT 2001 William Brack <wbrack@mmm.com.hk>

	* Enhanced ApplyTemplates and ForEach to allow multiple
	  documents within a nodelist.
	* Repaired small bug in xsltDocument function which caused
	  a crash if invalid second argument was provided.

Sat Jun 23 15:44:00 MDT 2001 John Fleck <jfleck@inkstain.net>

	* doc/tutorial/libxslttutorial.xml, libxslttutorial.html
	  updating tutorial with explanation of xsltSave vs. xmlSave
	  functions 

Sat Jun 23 19:04:27 CEST 2001 Daniel Veillard <Daniel.Veillard@imag.fr>

	* test/docbook: updated to docbook-xsl-1.4, regenerated results

Sat Jun 23 15:32:25 CEST 2001 Daniel Veillard <Daniel.Veillard@imag.fr>

	* Makefile.am libxslt/Makefile.am libxslt/numbers.c 
	  libxslt/win32config.h libxslt/xsltconfig.h.in libxslt/xsltproc.c:
	  Patches for Windows mostly contributed by Yon Derek
	* win32/libxslt/libxslt.def win32/libxslt/libxslt.dsw
	  win32/libxslt/libxslt_so.dsp win32/libxslt/xsltproc.dsp:
	  Project file for Mircrosoft C provided by Yon Derek

Sat Jun 23 14:20:01 CEST 2001 Daniel Veillard <Daniel.Veillard@imag.fr>

	* libxslt/pattern.c: closing bug #56517, fixed a number of
	  problems in the patterns compilations, priorities and debug
	* libxslt/transform.c: improved the template debug message
	* tests/docs/Makefile.am tests/general/Makefile.am
	  tests/general/bug-39-* tests/docs/bug-39-*: added a specific
	  regression test for #56517

Fri Jun 22 16:17:23 CEST 2001 Daniel Veillard <Daniel.Veillard@imag.fr>

	* libxslt/xslt.c: avoid a stupid bug when compiling with
	  libxml < 2.3.11 and without LIBXML_DEBUG_ENABLED

Fri Jun 22 00:11:18 CEST 2001 Daniel Veillard <Daniel.Veillard@imag.fr>

	* libxslt/numbers.c: fix of a small bug
	* libxslt/transform.c libxslt/variables.c libxslt/xslt.c: cleanups
	  while bug-hunting

Tue Jun 19 16:13:49 CEST 2001 Daniel Veillard <Daniel.Veillard@imag.fr>

	* tests/docbook/Makefile.am: added XHTML and XSL FO to the
	  regression tests
	* tests/docbook/xhtml/*: added XHTML stylesheets
	* tests/docbook/fo/*: added XSL FO stylesheets
	* tests/docbook/result/xhtml/*: added XHTML results
	* tests/docbook/result/fo/*: added XSL FO results

Tue Jun 19 00:20:32 CEST 2001 Daniel Veillard <Daniel.Veillard@imag.fr>

	* HACKING: fixed, added William

Mon Jun 18 18:36:36 CEST 2001 Daniel Veillard <Daniel.Veillard@imag.fr>

	* libxslt/xsltutils.c: forgot to flush in xsltSaveTo() in html and
	  xml cases, and fixed text output to be recursive in text nodes
	  lookups

Mon Jun 18 15:44:51 CEST 2001 Daniel Veillard <Daniel.Veillard@imag.fr>

	* configure.in: patch from Tony Graham to cleanup libxml2 detection

Sun Jun 17 17:42:33 CEST 2001 Daniel Veillard <Daniel.Veillard@imag.fr>

	* libxslt/xsltutils.[ch]: fixed xsltGetNsProp, i always forget
	  'namespace' is a reserved C++ identifier

Sun Jun 17 17:08:30 CEST 2001 Daniel Veillard <Daniel.Veillard@imag.fr>

	* doc/xslt.html: adding 0.12.0 release

Sun Jun 17 13:15:48 CEST 2001 Daniel Veillard <Daniel.Veillard@imag.fr>

	* configure.in: preparing 0.12.0 release
	* libxslt/transform.c: a bit of cleanup on the XInclude defaults
	* libxslt/xsltconfig.h.in: added doc inline comment
	* libxslt/xslt.[ch] libxslt/xsltproc.c: added more version informations
	  and enriched xsltproc --version to show them
	* doc/html/*.html: rebuilt the docs
	* doc/Makefile.am libxslt.spec.in: try to make sure John Fleck
	  tutorial ends up in the tars and RPMs

Sat Jun 16 23:58:57 CEST 2001 Daniel Veillard <Daniel.Veillard@imag.fr>

	* libxslt.spec.in: updated the descriptions

Sat Jun 16 23:26:46 CEST 2001 Daniel Veillard <Daniel.Veillard@imag.fr>

	* libxslt/namespaces.[ch]: added a single namespace def copy
	  operation xsltCopyNamespace(). cleaned up xsltCopyNamespaceList()
	* libxslt/transform.c: cleaned up xsltCopyNode to cope with
	  any kind of input nodes.
	* libxslt/variables.c: checked and closed the last TODO about
	  namespace propagation
	* tests/docs/Makefile.am tests/general/Makefile.am
	  tests/general/bug-38-* tests/docs/bug-38-*: added a specific
	  regression test for #56115 

Sat Jun 16 09:27:27 MDT 2001 John Fleck <jfleck@inkstain.net>

	* updating tutorial: adding discussion of freeing memory, image
	files for callouts, link to xsltproc.c code

Sat Jun 16 15:23:43 CEST 2001 Daniel Veillard <Daniel.Veillard@imag.fr>

	* libxslt/variables.c: bug #56267 was still not fixed, forgot
	  to remove the old code
	* tests/general/bug-37-.xsl: wrong reference to 36 fixed, this does
	  the test for good

Sat Jun 16 00:32:39 CEST 2001 Daniel Veillard <Daniel.Veillard@imag.fr>

	* libxslt/variables.c: fixed bug #56267, namespaces must
	  be propagated when evaluating local variables.
	* tests/docs/Makefile.am tests/general/Makefile.am
	  tests/general/bug-37-* tests/docs/bug-37-*: added a specific
	  regression test for #56267 

Fri Jun 15 18:29:29 CEST 2001 Daniel Veillard <Daniel.Veillard@imag.fr>

	* libxslt/keys.c: avoid a possibility of an uninitialized variable
	* libxslt/documents.c libxslt/transform.[ch] libxslt/transform.h
	  libxslt/xsltInternals.h libxslt/xsltproc.c: Implement Raphael Hertzog
	  request to have xinclude processing done on document() if requested

Thu Jun 14 20:52:13 CEST 2001 Daniel Veillard <Daniel.Veillard@imag.fr>

	* libxslt/Makefile.am: applied patch from Sander Vesik for -j2 

Thu Jun 14 10:07:59 CEST 2001 Daniel Veillard <Daniel.Veillard@imag.fr>

	* libxslt/preproc.c: removed a warning on xsl:transform
	* tests/docs/Makefile.am tests/docs/array.xml tests/general/Makefile.am
	  tests/general/array.out tests/general/array.xsl: added a new
	  test fround in xsl-dev

Wed Jun 13 23:12:57 CEST 2001 Daniel Veillard <Daniel.Veillard@imag.fr>

	* tests/docbook/result/html/*.html tests/XSLTMark/xslbench[12].out
	  tests/xmlspec/REC-xml-20001006*.html: the changes to the HTML
	  serializer of libxml impacted the result of some tests. Checked
	  that the XML REC renders identically.

Mon Jun 11 07:19:06 MDT 2001 John Fleck <jfleck@inkstain.net>

	* fixing embarassing typos in doc/tutorial/libxslttutorial.xml and 
	generated html

Tue Jun 12 07:42:35 CEST 2001 Daniel Veillard <Daniel.Veillard@imag.fr>

	* libxslt/variables.c: fixed bug #55670, namespaces must
	  be propagated when evaluating global variables.
	* tests/docs/Makefile.am tests/general/Makefile.am
	  tests/general/bug-36-* tests/docs/bug-36-*: added a specific
	  regression test for #55670 

Mon Jun 11 09:35:53 CEST 2001 Daniel Veillard <Daniel.Veillard@imag.fr>

	* doc/xslt.html: linked to the tutorial

Sun Jun 10 19:36:31 MDT 2001 John Fleck <jfleck@inkstain.net>

	* doc/tutorial/libxslt_tutorial.c,  libxslttutorial.html,
	libxslttutorial.xml 
	adding tutorial

Sun Jun 10 21:52:35 CEST 2001 Daniel Veillard <Daniel.Veillard@imag.fr>

	* libxslt/transform.c: closed bug #55723, problem was due to
	  a limitation of xsltGetNamespace() when the insertion point
	  is the document.
	* tests/docs/Makefile.am tests/general/Makefile.am
	  tests/general/bug-35-* tests/docs/bug-35-*: added a specific
	  regression test for #55723 

Sun Jun 10 13:37:33 HKT 2001 William Brack <wbrack@mmm.com.hk>

	* libxslt/transform.c: fixed problems with document() in
	  xsltApplyTemplates and xsltForEach.  Cleaned up several
	  error messages.
	* libxslt/keys.c: saved and restored ctxt->document within
	  xsltInitKey to fix problem with keys when doc changed
	* libxslt/documents.[ch]: added new procedure xsltFindDocument
	  needed when document() causes a change of doc within
	  xsltApplyTemplates and xsltForEach

Thu Jun  7 21:31:46 CEST 2001 Daniel Veillard <Daniel.Veillard@imag.fr>

	* libxslt/xsltutils.[ch]: closing bug #55683 required to add
	  xsltGetNsProp()
	* libxslt/attributes.c libxslt/imports.c libxslt/namespaces.c
	  libxslt/preproc.c libxslt/templates.c libxslt/xslt.c:
	  Updated to use the new function
	* tests/XSLTMark/prettyprint.out tests/docbook/result/html/*.html:
	  the fixes in the serialization of <pre> in HTML in libxml
	  led to a number of changes in the output

Thu Jun  7 04:23:38 CEST 2001 Daniel Veillard <Daniel.Veillard@imag.fr>

	* tests/docs/Makefile.am tests/general/Makefile.am
	  tests/general/bug-32-* tests/docs/bug-32-*: added a specific
	  regression test for #55722 

Wed Jun  6 09:48:53 CEST 2001 Daniel Veillard <Daniel.Veillard@imag.fr>

	* doc/xslt.html: updated to ask to not send mail directly
	* tests/docs/Makefile.am tests/general/Makefile.am
	  tests/general/bug-33-* tests/docs/bug-33-*: added a specific
	  regression test for #55722 

Wed Jun  6 11:07:50 CEST 2001 Daniel Veillard <Daniel.Veillard@imag.fr>

	* libxslt/pattern.c : trying to fix #55670
	* tests/XSLTMark/reverser.out : result of test changed when
	  William fixed XPath

Sat Jun  2 06:52:12 CEST 2001 Daniel Veillard <Daniel.Veillard@imag.fr>

	* doc/xslt.html: updated with 0.11.0

Fri Jun  1 11:30:49 CEST 2001 Daniel Veillard <Daniel.Veillard@imag.fr>

	* configure.in libxslt.spec.in: released 0.11.0

Mon May 28 12:54:45 CEST 2001 Daniel Veillard <Daniel.Veillard@imag.fr>

	* libxslt/transform.c: William M. Brack found a small bug
	  when call-template didn't find the template.

Sat May 26 17:08:19 CEST 2001 Daniel Veillard <Daniel.Veillard@imag.fr>

	* libxslt/transform.c: fixed handling of PI and comments
	  (bug raised by Brent M Hendricks).
	* tests/docs/Makefile.am tests/general/Makefile.am
	  tests/general/bug-31-* tests/docs/bug-31-*: added a specific
	  regression test

Wed May 23 13:25:37 CEST 2001 Daniel Veillard <Daniel.Veillard@imag.fr>

	* libxslt/xsltproc.c: added --xinclude in the option list,
	  patch from Raphael Hertzog
	* test/docbook/Makefile.am: force at least the gdp-handbook.xml
	  test in the normal testsuite

Wed May 23 00:05:19 CEST 2001 Daniel Veillard <Daniel.Veillard@imag.fr>

	* libxslt/variables.c: Mark Vakoc found a bug in variable eval
	  at the top template level 
	* tests/docs/Makefile.am tests/general/Makefile.am
	  tests/general/bug-30-* tests/docs/bug-30-*: added a specific
	  regression test

Tue May 22 18:52:30 CEST 2001 Daniel Veillard <Daniel.Veillard@imag.fr>

	* libxslt/functions.c: fixed the document() bug reported by
	  Stephane GUIBOUD-RIBAUD
	* tests/docs/Makefile.am tests/general/Makefile.am
	  tests/general/bug-29-* tests/docs/bug-29-*: added a specific
	  regression test

Tue May 22 15:09:02 CEST 2001 Daniel Veillard <Daniel.Veillard@imag.fr>

	* configure.in libxslt/Makefile.am: fixed bug #54953
	* libxslt/attributes.c: cleanup pointed by Joe Orton
	* libxslt/xsltproc.c: added --catalogs to load catalogs from
	  $SGML_CATALOG_FILES
	* libxslt/functions.c: cleanup unreached code
	* configure.in config.h.in libxslt/xsltproc.c: guarded the
	  include with preprocessor definitions

Sun May 20 20:55:00 CEST 2001 Daniel Veillard <Daniel.Veillard@imag.fr>

	* tests/documents/Makefile.am tests/general/Makefile.am
	  tests/multiple/Makefile.am tests/namespaces/Makefile.am
	  tests/numbers/Makefile.am tests/xmlspec/Makefile.am
	  tests/REC/Makefile.am tests/REC1/Makefile.am tests/REC2/Makefile.am
	  tests/XSLTMark/Makefile.am tests/docbook/Makefile.am
	  configure.in: Makefiles cleanup from Joe Orton

Sun May 20 15:20:49 CEST 2001 Daniel Veillard <Daniel.Veillard@imag.fr>

	* tests/docbook/result/html/external.html 
	  tests/docbook/result/html/graphics.html
	  tests/docbook/result/html/gtest.html
	  tests/docbook/test/external.xml tests/docbook/test/subdoc.ent:
	  Added a test from coolo for IDs in external parsed entities
	  and fixed 2 outputs

Sat May 19 22:28:05 CEST 2001 Daniel Veillard <Daniel.Veillard@imag.fr>

	* libxslt/xslt.[ch] libxslt/xsltconfig.h.in libxslt/xsltproc.c:
	  added --version info to xsltproc closing #54952

Sat May 19 17:41:23 CEST 2001 Daniel Veillard <Daniel.Veillard@imag.fr>

	* tests/documents/Makefile.am tests/general/Makefile.am 
	  tests/multiple/Makefile.am tests/namespaces/Makefile.am 
	  tests/numbers/Makefile.am tests/xmlspec/Makefile.am:
	  Seems some of the changes I made for 0.9.0 Makefiles were
	  not commited ...

Sat May 19 17:23:54 CEST 2001 Daniel Veillard <Daniel.Veillard@imag.fr>

	* configure.in: preparing 0.10.0 release
	* doc/xslt.html: updated
	* doc/html/* : rebuilt the docs

Fri May 18 16:48:13 CEST 2001 Daniel Veillard <Daniel.Veillard@imag.fr>

	* libxslt/xslt.c libxslt/variables.c libxslt/templates.c
	  libxslt/keys.[ch] libxslt/functions.c: cleanups for ctxt->inst
	  avoiding modifying stylesheet informations, and fixing
	  document() when called from a global variable init

Thu May 17 17:24:35 CEST 2001 Daniel Veillard <Daniel.Veillard@imag.fr>

	* libxslt/functions.c libxslt/transform.c libxslt/xsltInternals.h:
	  add ctxt->inst to allow stylesheet element lookup (needed
	  for document() fix)
	* libxslt/*.[ch]: generate docs for the structures and
	  macros, general cleanup for docs
	* doc/html/*.html: regenerated all docs

Wed May 16 23:00:53 CEST 2001 Daniel Veillard <Daniel.Veillard@imag.fr>

	* libxslt/extra.c libxslt/transform.c libxslt/variables.[ch]
	  libxslt/xsltInternals.h: optimizations, cleanup of global
	  variables handling

Wed May 16 12:29:17 CEST 2001 Daniel Veillard <Daniel.Veillard@imag.fr>

	* libxslt/extensions.c libxslt/preproc.c libxslt/transform.c
	  libxslt/variables.c: force the precompilation of XPath expressions
	  at stylesheet compilation time

Tue May 15 14:34:23 CEST 2001 Daniel Veillard <Daniel.Veillard@imag.fr>

	* libxslt/keys.c libxslt/transform.c: avoid some possibilities
	  of crashes on debug
	* tests/REC/Makefile.am: be less verbose if things really go wrong
	* tests/docs/Makefile.am tests/general/Makefile.am
	  tests/docs/bug-28-.xml tests/general/bug-28-.*: added bug-28 in
	  the regression tests

Sat May 12 12:39:54 CEST 2001 Daniel Veillard <Daniel.Veillard@imag.fr>

	* libxslt/transform.c libxslt/xsltutils.c: fixed the default
	  detection method to generate HTML documents 
	* tests/REC/test-2.5-1.out tests/REC/test-8-1.out
	  tests/REC/test-9.1-2.out tests/REC2/html.xml tests/XSLTMark/game.out
	  tests/XSLTMark/html.out tests/XSLTMark/products.out
	  tests/XSLTMark/xslbench1.out tests/XSLTMark/xslbench2.out
	  tests/XSLTMark/xslbench3.out tests/general/bug-15-.out
	  tests/general/bug-5-.out: updated a number of tests output
	  accordingly

Sat May 12 09:43:10 CEST 2001 Daniel Veillard <Daniel.Veillard@imag.fr>

	* libxslt/xsltproc.c: use LIBXML_DOCB_ENABLED, William M. Brack

Fri May 11 19:12:26 CEST 2001 Daniel Veillard <Daniel.Veillard@imag.fr>

	* libxslt/templates.c libxslt/transform.c: fixed bug #54446
	  about attribute being generated twice. Fixed a number of related
	  bugs on attributes handling.
	* tests/REC/test-7.1.4.out: this changed an attribute generation
	  order
	* tests/docs/bug-27-.xml tests/general/bug-27-.*: added test

Fri May 11 17:08:14 CEST 2001 Daniel Veillard <Daniel.Veillard@imag.fr>

	* libxslt/templates.c: fixed bug #54451 on escaped curly brackets
	* tests/docs/bug-26-.xml tests/general/bug-26-.*: added test

Fri May 11 16:20:40 CEST 2001 Daniel Veillard <Daniel.Veillard@imag.fr>

	* configure.in tests/XSLTMark/Makefile.am: try to handle gracefully
	  the cases where perl is not in the path (nor in /usr/bin)
	* tests/docbook/result/html/gdp-handbook.html
	  tests/docbook/result/html/kwrite.html
	  tests/docbook/test/gdp-handbook.xml
	  tests/docbook/test/kwrite.xml: commited a few more DocBook tests

Wed May  9 12:29:47 CEST 2001 Daniel Veillard <Daniel.Veillard@imag.fr>

	* libxslt/xsltproc.c: added --nonet and --warnnet to catch
	  cases where a network access is needed to load a DTD or entity
	* tests/docbook/Makefile.am: added --nonet
	* tests/docbook/test/classsynop.xml tests/docbook/test/docbook40.xml:
	  fixed 2 tests as a result

Wed May  9 10:43:53 CEST 2001 Daniel Veillard <Daniel.Veillard@imag.fr>

	* configure.in tests/docbook/Makefile.am tests/docbook/**/Makefile.am:
	  try to remove the unneeded docbook Makefile stuff 

Tue May  8 16:18:19 CEST 2001 Daniel Veillard <Daniel.Veillard@imag.fr>

	* doc/xslt.html: fixed a link error
	* libxslt/transform.c libxslt/xsltutils.c: fixed DOCTYPE generation
	* libxslt/xsltproc.c: cleaned up the --repeat loop
	* tests/documents/result.xhtml tests/xmlspec/REC-xml-20001006*.html:
	  fixed the DOCTYPE in tests output
	* tests/docs/bug-25-.xml tests/doc/Makefile.am 
	  tests/general/bug-25-.* tests/general/Makefile.am : added a new
	  test case and fixed the EXTRA_DIST

Mon May  7 22:27:03 CEST 2001 Daniel Veillard <Daniel.Veillard@imag.fr>

	* libxslt/extra.c: add more debug to xsltDebug
	* libxslt/transform.c: spent a few hours tracking down an ugly
	  race like bug in xsltCopyTreeList() arghhh
	* libxslt/xsltproc.c: call xmlInitMemory() explictely

Mon May  7 11:38:54 CEST 2001 Daniel Veillard <Daniel.Veillard@imag.fr>

	* doc/internals.html: more work done on the doc, mostly complete
	  except the section on the XSLT stack and the extensions API
	  since both still need more work.

Sun May  6 15:03:59 CEST 2001 Daniel Veillard <Daniel.Veillard@imag.fr>

	* doc/internals.html doc/contexts.* doc/object.*: more work done
	  on the doc

Sun May  6 00:18:39 CEST 2001 Daniel Veillard <Daniel.Veillard@imag.fr>

	* doc/internals.html: more work done on the doc

Sat May  5 18:58:13 CEST 2001 Bjorn Reese <breese@users.sourceforge.net>

	* libxslt/transform.c tests/XSLTMark/xslbench1.out: Another fix
	  for the CDATA output

Sat May  5 18:09:15 CEST 2001 Daniel Veillard <Daniel.Veillard@imag.fr>

	* libxslt/xslt.c: do not escape content of CDATA nodes on output

Sat May  5 17:52:52 CEST 2001 Daniel Veillard <Daniel.Veillard@imag.fr>

	* doc/internals.html doc/node.fig doc/node.gif doc/processing.fig
	  doc/processing.gif doc/stylesheet.fig doc/stylesheet.gif
	  doc/templates.fig doc/templates.gif: started writing tye doc
	  on how libxslt works.

Sat May  5 17:13:16 CEST 2001 Bjorn Reese <breese@users.sourceforge.net>

	* libxslt/numbersInternals.h libxslt/numbers.c
	  tests/numbers/format-number.out tests/XSLTMark/number.out:
	  Patch from William Brack to bring format-number() more in alignment
	  with the Java implementations.

	* libxslt/xslt.c tests/XSLTMark/xslbench1.out: Do not remove CDATA
	  from stylesheet

Fri May  4 20:10:45 CEST 2001 Daniel Veillard <Daniel.Veillard@imag.fr>

	* tests/docbook/result/html/* tests/general/bug-11-.out 
	  tests/multiple/result.xml tests/XSLTMark/*.out 
	  libxslt/transform.c: all the PUBLIC and SYSTEM IDs
	  were swapped

Fri May  4 19:09:45 CEST 2001 Daniel Veillard <Daniel.Veillard@imag.fr>

	* libxslt/xsltproc.c: add a --docbook option if your libxml2
	  has the SGML DocBook support compiled in.

Fri May  4 17:06:01 CEST 2001 Daniel Veillard <Daniel.Veillard@imag.fr>

	* tests/general/bug-2[0-4].* tests/docs/bug-2[0-4].*: added more
	  tests especially on sorting
	* test/xsltutils.c: oops multiple sorts was actually broken !!!
	  this should fix it

Thu May  3 19:02:21 CEST 2001 Daniel Veillard <Daniel.Veillard@imag.fr>

	* TODO configure.in libxslt.spec.in: getting ready for 0.9.0
	  release
	* doc/html/* doc/xslt.html: updated and regenerated the docs

Thu May  3 17:56:55 CEST 2001 Daniel Veillard <Daniel.Veillard@imag.fr>

	* xsltutils.[ch] transform.c: implemented multiple levels of
	  sorting
	* test/REC/test-10-2.*: added a really small test for it

Wed May  2 14:04:34 CEST 2001 Daniel Veillard <Daniel.Veillard@imag.fr>

	* libxslt/transform.c libxslt/xslt.c: fixed xsl:text processing
	  there can be multiple text and CDATA child

Wed May  2 10:55:56 CEST 2001 Daniel Veillard <Daniel.Veillard@imag.fr>

	* tests/multiple/makefile.am: fixing #54015
	* tests/XSLTMark/makefile.am tests/docbook/makefile.am: fixing #54014
	  and a similar problem for the docbook tests

Mon Apr 30 22:31:59 CEST 2001 Daniel Veillard <Daniel.Veillard@imag.fr>

	* tests/general/bug-8-.out: fixed in libxml xpath
	* libxslt/templates.[ch] libxslt/pattern.c: fixed an namespace
	  problem in predicates within a pattern. Spotted another
	  potential namespace problem

Mon Apr 30 19:29:34 CEST 2001 Daniel Veillard <Daniel.Veillard@imag.fr>

	* libxslt/preproc.c libxslt/xslt.c libxslt/xsltInternals.h
	  libxslt/xsltproc.c: counting errors and warnings at compilation
	  time. Stop processing in case of error.
	* tests/docs/bug-1[89]* tests/general/-1[89]* tests/general/inner.xsl:
	  added more namespace related bug checks

Mon Apr 30 13:47:11 CEST 2001 Daniel Veillard <Daniel.Veillard@imag.fr>

	* libxslt/preproc.c libxslt/variables.c: found the source of a
	  memory leak with DocBook introduced this w.e.. bit of cleanup.
	* tests/docbook/result/html/*.html : regenerated the DocBook tests
	  results.

Sun Apr 29 18:54:03 CEST 2001 Daniel Veillard <Daniel.Veillard@imag.fr>

	* libxslt/variables.c: fixing bug #53769
	* tests/general tests/docs: added new examples from the
	  bug reports to the regression tests, updated the Makefiles

Sun Apr 29 11:47:58 CEST 2001 Daniel Veillard <Daniel.Veillard@imag.fr>

	* preproc.[ch] templates.[ch] variables.[ch] xslt.c xsltInternals.h
	  attributes.c extensions.[ch]: moved all stylesheet precomputation
	  at stylesheet loading time (stylesheet transform should be thread
	  safe now), improved params and variables evaluations (but optim
	  is not complete yet).
	* TODO: updated

Sat Apr 28 16:28:45 CEST 2001 Daniel Veillard <Daniel.Veillard@imag.fr>

	* libxslt/xsltproc.c : changed the way --repeat works when
	  used twice

Sat Apr 28 16:19:06 CEST 2001 Bjorn Reese <breese@users.sourceforge.net>

	* libxslt/numbers.c libxslt/preproc.c tests/REC/test-7.7-3.out:
	  fixed default formatting

Sat Apr 28 14:20:29 CEST 2001 Daniel Veillard <Daniel.Veillard@imag.fr>

	* libxslt/preproc.c : fixed <xsl:sort/> bug reported by Ankh
	* libxslt/xsltproc.c : added an option to process HTML input

Thu Apr 26 21:13:59 CEST 2001 Daniel Veillard <Daniel.Veillard@imag.fr>

	* libxslt/transform.c: Tony Gorski found a bug pointed by
	  a compiler on Tandem
	* tests/documents/result.xhtml: this results in a small
	  change in the output of this test

Thu Apr 26 16:33:36 CEST 2001 Daniel Veillard <Daniel.Veillard@imag.fr>

	* test/general/bug-14*.* test/docs/bug-14*.xml: added testcase from
	  bug #53689

Wed Apr 25 16:58:11 CEST 2001 Daniel Veillard <Daniel.Veillard@imag.fr>

	* transform.c: fixed text and cdata handling in xsl:copy
	* xslt.c : avoid crashing on invalid xslt input
	* test/general/bug-*.* test/docs/bug-*.xml : added a number of
	  bugs submitted to the regression tests

Wed Apr 25 12:42:48 CEST 2001 Daniel Veillard <Daniel.Veillard@imag.fr>

	* libxslt/xsltproc.c : Renaud Chaillat provided a fix for #53535

Sun Apr 22 22:47:44 CEST 2001 Daniel Veillard <Daniel.Veillard@imag.fr>

	* configure.in: updated to 0.8.0

Sun Apr 22 22:46:03 CEST 2001 Daniel Veillard <Daniel.Veillard@imag.fr>

	* transform.c: fixed a bug introduced on handling #53401

Sun Apr 22 22:27:09 CEST 2001 Daniel Veillard <Daniel.Veillard@imag.fr>

	* transform.c: fixed #53401
	* configure.in libxslt/*.c: allowed to suppress debug reporting
	  functionalities but it brings not noticeable improvements
	* doc/xslt.html doc/html/*: updated and regenerated docs

Wed Apr 18 15:24:50 CEST 2001 Daniel Veillard <Daniel.Veillard@imag.fr>

	* tests/general/bug-5-.out tests/multiple/out/*.orig
	  tests/xmlspec/REC-xml-20001006*.html: fixed the test output
	  following the libxml changes

Wed Apr 18 12:05:04 CEST 2001 Daniel Veillard <Daniel.Veillard@imag.fr>

	* libxslt/functions.c: applied TOM's patch to key()
	* tests/XSLTMark/chart.out tests/XSLTMark/dbonerow.out
	  tests/XSLTMark/prettyprint.out tests/multiple/out/*.html:
	  small HTML output change 

Mon Apr 16 16:14:02 CEST 2001 Daniel Veillard <Daniel.Veillard@imag.fr>

	* libxslt/functions.c libxslt/transform.c libxslt/xsltInternals.h:
	  fixed current()

Tue Apr 17 10:10:56 CEST 2001 Daniel Veillard <Daniel.Veillard@imag.fr>

	* libxslt/keys.c libxslt/preproc.c libxslt/templates.c
	  libxslt/transform.c libxslt/variables.c libxslt/xsltInternals.h:
	  fixed for the most part the namespace handling problem in XPath
	  expression computations.
	* test/doc/ tests/general: added bug 5 and 6

Thu Apr 12 14:40:22 CEST 2001 Daniel Veillard <Daniel.Veillard@imag.fr>

	* libxslt/xslt.c: applied William M. Brack patch fixing the
	  template lack of support for priority
	* test/XSLTMark/*.out : this fixed anumber of problems in the
	  XSLTMark output

Thu Apr 12 14:29:48 CEST 2001 Daniel Veillard <Daniel.Veillard@imag.fr>

	* libxslt/functions.c: removed warning in unparsed-entity-uri()
	  fixed a bug in generate-id()
	* libxslt/transform.c: fixed null list result errors
	* libxslt/transform.c libxslt/xsltutils.c: applied William M. Brack
	  fixes for sorting semantic

Wed Apr 11 14:25:23 CEST 2001 Daniel Veillard <Daniel.Veillard@imag.fr>

	* config.h.in configure.in libxslt/xsltconfig.h.in: added
	  ansidecl.h test
	* libxslt/xsltproc.c : added --xinclude option
	* tests/XSLTMark/union.out : fixed the output

Tue Apr 10 20:05:00 CEST 2001 Fatih Demir <kabalak@gtranslator.org>

	* .cvsignore & doc/.cvsignore: Added CVS ignore files.

Tue Apr 10 12:10:25 CEST 2001 Daniel Veillard <Daniel.Veillard@imag.fr>

	* configure.in: released 0.7.0
	* tests/XSLTMark/Makefile.am: trying to solve some make distcheck
	  problems

Sun Apr  8 11:42:03 CEST 2001 Daniel Veillard <Daniel.Veillard@imag.fr>

	* libxslt/functions.c libxslt/keys.c libxslt/transform.c:
	  some checking against NULL pointers

Mon Apr  2 17:00:39 CEST 2001 Daniel Veillard <Daniel.Veillard@imag.fr>

	* configure.in tests/Makefile.am tests/XSLTMark/* tests/multiple:
	  added the XSLTMark in the regression tests as well as multiple
	  output test from Ankh
	* libxslt/functions.c libxslt/keys.c libxslt/transform.c
	  libxslt/variables.c libxslt/xsltutils.c: applied William M. Brack
	  patches and fixed a memory leak
	* tests/docbook/result/html/*.html : updated the results after
	  William's patch
	* tests/xmlspec/REC-xml-20001006-review.html 
	  tests/xmlspec/REC-xml-20001006.html: libxml now don't invent
	  an HTML doctype when serializing HTML result, but adds the
	  encoding in ALT

Thu Mar 29 10:24:42 CEST 2001 Daniel Veillard <Daniel.Veillard@imag.fr>

	* libxslt/transform.c: applied fix to xsltApplyTemplates from
	  William M. Brack
	* test/docbook/result/html/*.html: this change the output
	* tests/xmlspec/REC-xml-20001006-review.html 
	  tests/xmlspec/REC-xml-20001006.html: this also fixed some of
	  the reference anchors generated for the XML spec

Mon Mar 26 18:57:58 CEST 2001 Daniel Veillard <Daniel.Veillard@imag.fr>

	* libxslt/attributes.c libxslt/extra.c libxslt/keys.c libxslt/numbers.c
	  libxslt/templates.c libxslt/transform.c libxslt/xsltconfig.h.in
	  libxslt/xsltutils.c: of course the way I defined
	  UNUSED breaks on old gcc version. Try to be smart and
	  also define it directly in xsltconfig.h
	* tests/xmlspec/Makefile.am: fixed the timing arg test

Sun Mar 25 22:07:34 CEST 2001 Daniel Veillard <Daniel.Veillard@imag.fr>

	* libxslt/transform.[ch] libxslt/variables.[ch] libxslt/xsltproc.c:
	  implemented command line parameter passing
	* tests/xmlspec/Makefile.am tests/xmlspec/REC-xml-20001006-review.html:
	  tested it by passing show.diff.markup=1 to build the review version too

Sat Mar 24 19:35:42 CET 2001 Daniel Veillard <Daniel.Veillard@imag.fr>

        Huge cleanup, I switched to compile with
	-Wall -g -O -ansi -pedantic -W -Wunused -Wimplicit
	-Wreturn-type -Wswitch -Wcomment -Wtrigraphs -Wformat
	-Wchar-subscripts -Wuninitialized -Wparentheses -Wshadow
	-Wpointer-arith -Wcast-align -Wwrite-strings -Waggregate-return
	-Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Winline
	* libxslt/attributes.c libxslt/extensions.c libxslt/extra.c
	  libxslt/functions.c libxslt/keys.c libxslt/numbers.c
	  libxslt/pattern.c libxslt/preproc.c libxslt/templates.c
	  libxslt/transform.c libxslt/variables.c libxslt/xslt.c
	  libxslt/xsltutils.c: basically made static unexported functions
	  avoided name clashes and flagged unused parameters.

Thu Mar 22 22:52:48 CET 2001 Daniel Veillard <Daniel.Veillard@imag.fr>

	* configure.in: 0.6.0 yet another release
	* doc/xslt.html doc/html/*: updated the docs

Wed Mar 21 23:19:11 CET 2001 Daniel Veillard <Daniel.Veillard@imag.fr>

	* libxslt/xsltInternals.h libxslt/xslt.c libxslt/transform.c
	  libxslt/templates.[ch] libxslt/preproc.c libxslt/extensions.[ch]
	  extended xsltEvalStaticAttrValueTemplate and 
	  xsltEvalAttrValueTemplate to support foreign namespaces,
	  and fixed document()

Mon Mar 19 18:40:40 CET 2001 Daniel Veillard <Daniel.Veillard@imag.fr>

	* xsltutils.h: cleanup some garbage added last night
	* xsltInternals.h variables.c transform.c templates.[ch]
	  preproc.c pattern.c keys.c: switched the whole XSLt processing
	  to use XPath precompiled expressions and reusing them.
	* functions.c: some cleanup, seems people don't use 
	  unparsed-entity-uri() the way it's supposed to be used

Mon Mar 19 01:08:05 CET 2001 Daniel Veillard <Daniel.Veillard@imag.fr>

	* libxslt/keys.c libxslt/templates.c libxslt/transform.c
	  libxslt/variables.c libxslt/xsltutils.h: Changed to work
	  with the new way XPath is interpreted. This doesn't yet
	  take advantage of the separate parsing/evaluation phases

Wed Mar 14 15:51:36 CET 2001 Daniel Veillard <Daniel.Veillard@imag.fr>

	* libxslt/transform.c: robert@xsl.00008.org pointed out a
	  problem in xsl:copy-of in case of attributes
	* tests/docs/Makefile.am tests/docs/bug-3-.xml
	  tests/general/Makefile.am tests/general/bug-3-.*:
	  added the test to the general regression suite

Wed Mar 14 14:21:45 CET 2001 Daniel Veillard <Daniel.Veillard@imag.fr>

	* libxslt/functions.c: applied and fixed ptittom@free.fr patch
	  fixing some of the missing functionnalities in the XSLT
	  functions implementations.
	  
Tue Mar 13 14:38:48 CET 2001 Daniel Veillard <Daniel.Veillard@imag.fr>

	* libxslt/Makefile.am: nick@debian.org forwarded a fix

Tue Mar 13 10:29:45 CET 2001 Daniel Veillard <Daniel.Veillard@imag.fr>

	* README.cvs-commits: added, pointing to HACKING
	* HACKING: added defines commit rules.

Mon Mar 12 14:43:20 CET 2001 Daniel Veillard <Daniel.Veillard@imag.fr>

	* libxslt/extra.c libxslt/variables.c: fixing compilation
	  when libxml was compiled without debug support

Sat Mar 10 13:50:16 CET 2001 Daniel Veillard <Daniel.Veillard@imag.fr>

	* configure.in: time for 0.5.0
	* tests/docs/Makefile.am tests/general/Makefile.am: make sure the
	  new test files are included in the distribution
	* doc/xslt.html : updated
	* doc/html/*.html: regenerated the docs

Thu Mar  8 02:34:52 CET 2001 Daniel Veillard <Daniel.Veillard@imag.fr>

	* tests/docbook/result/html/*.html: regenerated the HTML
	  now that value-of an result tree don't include the fake root

Thu Mar  8 02:26:56 CET 2001 Daniel Veillard <Daniel.Veillard@imag.fr>

	* libxslt/transform.c libxslt/variables.c: removed a couple
	  of possibly uninitialized var probs
	* tests/xmlspec/Makefile.am: run the processing without verbose
	  avoid raising generated id differences.

Wed Mar  7 23:22:09 CET 2001 Daniel Veillard <Daniel.Veillard@imag.fr>

	* libxslt/preproc.c libxslt/xsltInternals.h: fixed a stylesheet
	  reuse problem.
	* libxslt/transform.c: fixed a bug which exaplined why no
	  optimization were resulting from preproc stuff

Wed Mar  7 21:51:52 CET 2001 Daniel Veillard <Daniel.Veillard@imag.fr>

	* libxslt/preproc.c libxslt/transform.c: a couple of nastyness
	  w.r.t. value of tree result (and attributes within it) fixed.
	* tests/xmlspec/Makefile.am tests/xmlspec/REC-xml-20001006.html:
	  Integrated the xmlspec to the test (i.e. diffed output for
	  changes).

Wed Mar  7 18:01:07 CET 2001 Daniel Veillard <Daniel.Veillard@imag.fr>

	* imports.c transform.c xslt.c xsltInternals.h: fixed a
	  strip-spaces problem
	* tests/docs/*.xml tests/general/*.[xsl,out]: added reported
	  bugs to testsuite

Wed Mar  7 13:34:13 CET 2001 Daniel Veillard <Daniel.Veillard@imag.fr>

	* libxslt/transform.[ch]: finished integrating the current
	  state of the preproc optimizations.
	* tests/xmlspec/diffspec.xsl: switched off diff printing

Wed Mar  7 12:46:09 CET 2001 Daniel Veillard <Daniel.Veillard@imag.fr>

	* libxslt/preproc.c libxslt/transform.c: started rolling in
	  some of the optimizations.

Tue Mar  6 19:39:25 CET 2001 Daniel Veillard <Daniel.Veillard@imag.fr>

	* attributes.[ch] extra.[ch] preproc.c xsltInternals.h
	  transform.[ch]: previous commit broke a lot of stuff, fixing
	  and preparing for next step

Tue Mar  6 19:03:21 CET 2001 Daniel Veillard <Daniel.Veillard@imag.fr>

	* libxslt/preproc.[ch] Makefile.am templates.[ch] transform.[ch]
	  xsltInternals.h: started working on optimizing stylesheet
	  element parsing. Just builds the extra informations so far.
	* xsltutils.h: added a missing XPath decl

Tue Mar  6 09:52:13 CET 2001 Daniel Veillard <Daniel.Veillard@imag.fr>

	* libxslt/variables.c: William M. Brack found a serious bug
	  with imports and global variables ...

Mon Mar  5 21:51:54 CET 2001 Daniel Veillard <Daniel.Veillard@imag.fr>

	* libxslt/pattern.[ch] libxslt/transform.c: added 
	  xsltCleanupTemplates() to clean up state left after processing.

Sun Mar  4 19:03:27 CET 2001 Daniel Veillard <Daniel.Veillard@imag.fr>

	* libxslt/transform.c: applied patch from William M. Brack
	  to support with-param in xsltApplyTemplates().

Sun Mar  4 17:53:13 CET 2001 Bjorn Reese <breese@users.sourceforge.net>

	* libxslt/pattern.c: fixed the compilation of patterns which
	  contains XPath NodeTypes. Handling of nested predicates.

Sat Mar  3 20:56:47 CET 2001 Daniel Veillard <Daniel.Veillard@imag.fr>

	* libxslt/transform.c: save ctxt->node after for-each

Thu Mar  1 18:16:58 CET 2001 Daniel Veillard <Daniel.Veillard@imag.fr>

	* configure.in libxslt.spec.in: updated to 0.4.0 and 2.3.3
	* doc/xslt.html: updated

Wed Feb 28 19:24:51 CET 2001 Daniel Veillard <Daniel.Veillard@imag.fr>

	* libxslt/extra.[ch] libxslt/transform.[ch] libxslt/xsltInternals.h:
	  added xsltDocumentElem implementing multiple file output,
	  including 1.1 xsl:document but yet untested.

Wed Feb 28 00:03:44 CET 2001 Daniel Veillard <Daniel.Veillard@imag.fr>

	* libxslt/extensions.c: fixed stoopid bug
	* libxslt/Makefile.am libxslt/extra.[ch]: added a new module
	  carrying extensions to the specification. Added node-set()
	  for existing saxon and xt namespaces and debug() in libxslt
	  namespace (http://xmlsoft.org/XSLT/namespace)
	* libxslt/xsltutils.[ch] transform.c: moved xsltDebug to extra.c
	  plus cleanup.
	* configure.in tests/Makefile.am tests/namespaces: added some
	  namespaces tests, including a test calling the extra debugging
	  function in libxslt namespace, worked first time !!!

Tue Feb 27 16:15:47 CET 2001 Daniel Veillard <Daniel.Veillard@imag.fr>

	* libxslt/xslt.c: extension prefix support for the full stylesheet
	* libxslt/transform.c libxslt/extensions.[ch]: more work should
	  start working

Mon Feb 26 22:59:44 CET 2001 Daniel Veillard <Daniel.Veillard@imag.fr>

	* doc/xslt.html : cleaned up, added a bit more description on
	  the API section.

Mon Feb 26 09:41:04 CET 2001 Daniel Veillard <Daniel.Veillard@imag.fr>

	* libxslt/Makefile.am libxslt/extensions.[ch]: started working
	  on functions and element extensions. First on list will be
	  a document element.

Sun Feb 25 06:52:14 CET 2001 Daniel Veillard <Daniel.Veillard@imag.fr>

	* configure.in libxslt.spec.in: releasing 0.3.0
	* doc/xslt.html: updated
	
Sun Feb 25 05:28:30 CET 2001 Daniel Veillard <Daniel.Veillard@imag.fr>

	* configure.in tests/docbook/html : oops forgot to add
	  the stylesheets themselves :-\

Sun Feb 25 04:51:33 CET 2001 Daniel Veillard <Daniel.Veillard@imag.fr>

	* configure.in tests/Makefile.am tests/docbook tree:
	  added docbook XSL based test suite

Sat Feb 24 14:02:05 CET 2001 Daniel Veillard <Daniel.Veillard@imag.fr>

	* libxslt/xsltutils.c: reformat of messages
	* libxslt/xsltproc.c: removed memleak on --noout
	* libxslt/xsltInternals.h libxslt/variables.[ch] libxslt/transform.c:
	  changed again the way parameter are evaluated before a
	  call-template, seems to fix a few nasty bugs, memory alloc debug too
	
Wed Feb 21 09:10:13 CET 2001 Daniel Veillard <Daniel.Veillard@imag.fr>

	* libxslt/transform.c libxslt/variables.c libxslt/xsltInternals.h:
	  fixed the param evaluation problem in apply-template
	* libxslt/pattern.c: speed up seriously some context computation
	* libxslt/xsltInternals.h: preparing for extension support
	  
Mon Feb 19 19:34:59 CET 2001 Daniel Veillard <Daniel.Veillard@imag.fr>

	* libxslt/Makefile.am: small cleanup
	* libxslt/functions.c libxslt/transform.c libxslt/xsltInternals.h:
	  fixed current() I hope

Mon Feb 19 18:05:47 CET 2001 Daniel Veillard <Daniel.Veillard@imag.fr>

	* libxslt/numbers.c libxslt/numbersInternals.h libxslt/xslt.c
	  libxslt/pattern.[ch] libxslt/xsltInternals.h:  more work on
	  support of namespaces, both in templates and in XPath subexpressions

Sun Feb 18 19:11:26 CET 2001 Bjorn Reese <breese@users.sourceforge.net>

	* libxslt/xsltutils.c: xsltSortFunction uses Shell's sort

Sun Feb 18 17:13:00 CET 2001 Daniel Veillard <Daniel.Veillard@imag.fr>

	* libxslt/pattern.c: when precompiled pattern is ALL, predicate
	  contextual info must be recomputed

Sun Feb 18 16:39:17 CET 2001 Daniel Veillard <Daniel.Veillard@imag.fr>

	* libxslt/xslt.h libxslt/transform.c: defined and exported xsltMaxDepth
	* libxslt/xsltproc.c : added --maxdepth

Sun Feb 18 15:44:33 CET 2001 Daniel Veillard <Daniel.Veillard@imag.fr>


	* libxslt/xsltproc.c: added --novalid and --noout as well
	  as options printing when no args
	* libxslt/variables.c libxslt/transform.c: trying to get rid
	  if some variable/params addressing errors.

Sat Feb 17 14:27:47 CET 2001 Daniel Veillard <Daniel.Veillard@imag.fr>

	* FEATURES libxslt/attributes.c: fixed use-attribute-sets
	* libxslt/xsltutils.c: add carriage return to xsl:message when
	  needed

Sat Feb 17 02:25:45 CET 2001 Daniel Veillard <Daniel.Veillard@imag.fr>

	* libxslt/functions.c: fixed a bug with generate-id()

Sat Feb 17 00:51:53 CET 2001 Daniel Veillard <Daniel.Veillard@imag.fr>

	* libxslt/xsltutils.c: started doing more useful stuff in
	  xsltDebug
	* libxslt/transform.[ch] libxslt/variables.[ch] libxslt/templates.c
	  libxslt/xsltInternals.h: changed the way variables/params
	  are stored
	* libxslt/xsltproc.c: removed a pedantic warning
	* libxslt/variables.[ch]: found an ugly evaluation bug

Thu Feb 15 18:14:48 CET 2001 Daniel Veillard <Daniel.Veillard@imag.fr>

	* tests/REC/Makefile.am: updated

Thu Feb 15 17:40:28 CET 2001 Daniel Veillard <Daniel.Veillard@imag.fr>

	* libxlst/functions.c: fixed ID generation
	* doc/xslt.html doc/html/*.html: updated/regenerated the doc

Thu Feb 15 13:34:42 CET 2001 Daniel Veillard <Daniel.Veillard@imag.fr>

	* libxslt/numbers.c: removed a couple of memleaks

Thu Feb 15 12:41:44 CET 2001 Daniel Veillard <Daniel.Veillard@imag.fr>

	* libxslt/pattern.[ch]: exported pattern matching interfaces
	  for numbers.c and future debug module
	* libxslt/numbers.c: updated to new interface, should avoid
	  unnecessary recompilation of patterns.
	* libxslt/xsltutils.[ch]: cleanup
	* tests/REC/gmon.out: removed :-)

Wed Feb 14 19:13:33 CET 2001 Bjorn Reese <breese@users.sourceforge.net>

	* libxslt/numbers.c: implemented level=any
	* libxslt/transform.c: corrected some default values
	* tests/REC/test-7.7-*.*: added

Wed Feb 14 18:07:25 CET 2001 Daniel Veillard <Daniel.Veillard@imag.fr>

	* libxslt/pattern.c: priorities were horribly broken, hope it's
	  fixed

Wed Feb 14 15:39:06 CET 2001 Daniel Veillard <Daniel.Veillard@imag.fr>

	* FEATURES libxslt/imports.h libxslt/pattern.[ch]
	  libxslt/xsltInternals.h libxslt/transform.[ch]
	  libxslt/templates.c libxslt/xslt.c:
	  Added apply-imports, keep a stack of running templates
	* libxslt/xsltutils.c: bugfixes, gather the output informations
	  down the cascade
	* tests/xmlspec/Makefile.am tests/xmlspec/REC-xml-2e.xsl
	  tests/xmlspec/diffspec.xsl tests/xmlspec/xmlspec.xsl: running
	  the real set of transformation on XML-1.0 2e generages a near
	  perfect HTML. Needs just more number fixes and implementation
	  and an obscure problem in 3.3.3

Tue Feb 13 20:31:03 CET 2001 Bjorn Reese <breese@users.sourceforge.net>

	* libxslt/pattern.c: added xsltMatchPattern()
	* libxslt/numbers.c: implemented "level=multiple" for xsl:number

Tue Feb 13 18:07:12 CET 2001 Daniel Veillard <Daniel.Veillard@imag.fr>

	* libxslt/transform.c libxslt/xsltproc.c: cleanup and debug
	* libxslt/xsltutils.[ch] : added a small debugging hook

Mon Feb 12 18:30:26 CET 2001 Daniel Veillard <Daniel.Veillard@imag.fr>

	* libxslt/FEATURES libxslt/transform.c: added support for
	  disable-output-escaping in xsl:copy-of
	* xmlspec/Makefile.am libxslt/variables.c libxslt/transform.c:
	  give more debugging info

Sun Feb 11 21:08:35 CET 2001 Daniel Veillard <Daniel.Veillard@imag.fr>

	* libxslt/documents.[ch] libxslt/functions.c libxslt/imports.c
	  libxslt/xslt.c libxslt/xsltInternals.h: changed teh way to store
	  Includes, more document changes
	* libxslt/xsltutils.c: fix the output of doctype and what is or
	  is not HTML
	* tests/REC/*.out tests/REC2/html.xml : changed output accordingly
	* tests/Makefile.am tests/documents/* : added a new test from Stric
	  exercising document() among other things

Sun Feb 11 17:24:03 CET 2001 Bjorn Reese <breese@users.sourceforge.net>

	* FEATURES libxslt/transform.c libxslt/numbers.c: partial support
	  for the level attribute for xsl:number
	* libxslt/numbers.c: internal restructuring

Fri Feb  9 15:49:19 CET 2001 Daniel Veillard <Daniel.Veillard@imag.fr>

	* libxslt/Makefile.am libxslt/documents.[ch]: added a new module
	  to deal with documents
	* libxslt/functions.c: fixed document() to return the same set
	  for teh same URL
	* libxslt/keys.[ch] libxslt/templates.c libxslt/transform.c
	  libxslt/variables.c libxslt/xsltInternals.h: keys are really
	  associated to loaded documents, not to the transformation
	  context, made the change, this impacted a number of modules

Thu Feb  8 12:51:00 CET 2001 Daniel Veillard <Daniel.Veillard@imag.fr>

	* doc/libxslt.sgml doc/html/*.html: updated and rebuilt the doc list

Thu Feb  8 12:36:23 CET 2001 Daniel Veillard <Daniel.Veillard@imag.fr>

	* README configure.in libxslt.spec.in: bumped to 0.1.0, getting
	  ready for the release
	* libxslt/keys.c libxslt/xslt.c: cleanup of uninitialized vars
	* tests/REC1/Makefile.am tests/REC/Makefile.am: the EXTRA list
	  was not up to date

Thu Feb  8 12:09:58 CET 2001 Daniel Veillard <Daniel.Veillard@imag.fr>

	* FEATURES libxslt/xsltInternals.h libxslt/pattern.c libxslt/keys.c:
	  added support for keys in patterns
	* tests/REC/test-12.2-2.*: added a specific testcase

Wed Feb  7 21:16:47 CET 2001 Daniel Veillard <Daniel.Veillard@imag.fr>

	* libxslt/functions.c FEATURES: started adding support for key()
	* tests/REC/test-12.2-1.*: first key test

Wed Feb  7 19:46:07 CET 2001 Daniel Veillard <Daniel.Veillard@imag.fr>

	* FEATURES: updated
	* libxslt/Makefile.am libxslt/keys.[ch] libxslt/xslt.c
	  libxslt/transform.c libxslt/xsltInternals.h: started adding key
	  support
	* libxslt/xsltutils.c: warning cleanup
	* libxslt/pattern.h: fixed soopid cut'n paste prob

Tue Feb  6 10:56:38 CET 2001 Daniel Veillard <Daniel.Veillard@imag.fr>

	* libxslt/transform.c libxslt/xslt.c: chased some reported
	  unitinitialized variables.

Tue Feb  6 10:55:26 CET 2001 Daniel Veillard <Daniel.Veillard@imag.fr>

	* tests/numbers/Makefile.am: fixed the EXTRA stuff

Mon Feb  5 22:02:24 CET 2001 Daniel Veillard <Daniel.Veillard@imag.fr>

	* Copyright IPR Makefile.am: added some wording and a rewrite
	  of the W3C IPR but without giving Copyright rights to W3C,
	  should suit everybody

Mon Feb  5 18:58:17 CET 2001 Daniel Veillard <Daniel.Veillard@imag.fr>

	* FEATURES: updated, added mode support for templates
	* pattern.[ch] transform.c xslt.c xsltInternals.h: added mode
	  support for templates
	* templates.c variables.c: simple fixes
	* xslt.c: added a separate DEBUG_BLANKS debug class disabled
	* xsltproc.c: added option -timing
	* xsltutils.c: seem I forgot to add encoding support in output...
	* configure.in tests/Makefile.am tests/xmlspec/*: added a test
	  consisting of reformatting the XML REC with the xmlspec XSLT,
	  heavy !

Mon Feb  5 18:43:37 CET 2001 Bjorn Reese <breese@users.sourceforge.net>

	* FEATURES: updated
	* numbers.c: handles actual number formatting for both xsl:number
	  and the format-number extension function.
	* function.c: formatting moved to numbers.c
	* transform.c: added xsl:number
	* xslt.c: minor memory leak removed
	* Makefile.am: added numbers.c and numbersInternals.h

Sat Feb  3 21:49:36 CET 2001 Daniel Veillard <Daniel.Veillard@imag.fr>

	* TODO: updated
	* doc/html/*.html updated
	* doc/libxslt.sgml: added new modules
	* libxslt/pattern.c: fix loop on hash clashes.

Sat Feb  3 16:13:35 CET 2001 Daniel Veillard <Daniel.Veillard@imag.fr>

	* FEATURES: updated
	* imports.c: bugfix
	* pattern.c: lots of changes to make most patterns work
	* templates.[ch]: added xsltEvalXPathPredicate() for predicate testing
	* transform.c: cleanup and attribute patterns testing
	* xslt.c: added xsltFreeStylesheetList() and now cleanup
	  the imports
	* tests/REC/test-2.3* tests/REC/test-2.6.2*: more tests
	* tests/REC/test-5.2-*: 18 pattern tests from the spec, all should
	  work now.

Fri Feb  2 11:15:24 CET 2001 Daniel Veillard <Daniel.Veillard@imag.fr>

	* FEATURES: updated
	* transform.c: added xsl:element support
	* namespaces.[ch]: added xsltGetSpecialNamespace()
	* attributes.c: added xsl:attribute namespace support.

Thu Feb  1 20:58:54 CET 2001 Daniel Veillard <Daniel.Veillard@imag.fr>

	* libxslt/Makefile.am libxslt/imports.[ch]: new module to
	  implement import cascade lookups and traversal
	* libxslt/attributes.c libxslt/namespaces.c libxslt/pattern.[ch]
	  libxslt/transform.c libxslt/xslt.c libxslt/xsltInternals.h:
	  started coding the import cascade lookup in the places needed,
	  probably incomplete.

Thu Feb  1 18:04:39 CET 2001 Daniel Veillard <Daniel.Veillard@imag.fr>

	* libxslt/xsltInternals.h libxslt/xslt.h: started implementing
	  xsl:include and xsl:import, untested

Thu Feb  1 14:54:39 CET 2001 Daniel Veillard <Daniel.Veillard@imag.fr>

	* FEATURES: updated choose/when/otherwise added
	* libxslt/transform.c: plugged choose in
	* configure.in tests/Makefile.am tests/REC/Makefile.am
	  tests/docs/Makefile.am tests/docs/items.xml tests/general/Makefile.am
	  tests/general/itemschoose.*: started adding a more generic
	  infrastructure for testing.

Thu Feb  1 05:36:28 CET 2001 Daniel Veillard <Daniel.Veillard@imag.fr>

	* tests/REC/test-11*: added more tests
	* libxslt/transform.c libxslt/variables.c: fixing bugs raised by
	  said tests

Wed Jan 31 21:42:43 CET 2001 Daniel Veillard <Daniel.Veillard@imag.fr>

	* tests/REC/test-[9-10]*: added more tests
	* tests/REC2/html.xml libxslt/xsltutils.c libxslt/transform.c:
	  fixed sorting

Wed Jan 31 19:25:38 CET 2001 Daniel Veillard <Daniel.Veillard@imag.fr>

	* tests/REC/test-[7-9]*: added more tests
	* libxslt/templates.c libxslt/transform.c libxslt/variables.c:
	  fixing bugs raised by said tests, cleaned up the way ctxt->xpathctxt
	  is allocated, overall cleanup.

Wed Jan 31 14:25:25 CET 2001 Daniel Veillard <Daniel.Veillard@imag.fr>

	* tests/REC/test-7.*: added more tests
	* libxslt/pattern.c libxslt/templates.c libxslt/transform.c:
	  fixing bugs raised by said tests

Tue Jan 30 18:55:49 CET 2001 Daniel Veillard <Daniel.Veillard@imag.fr>

	* tests/REC/test-7.*: added more tests
	* libxslt/namespaces.[ch] libxslt/pattern.c libxslt/attributes.c
	  libxslt/templates.c libxslt/transform.c libxslt/xslt.c: fixing bugs
	  raised by said tests

Tue Jan 30 15:16:56 CET 2001 Daniel Veillard <Daniel.Veillard@imag.fr>

	* TODO: updated
	* configure.in tests/Makefile.am tests/REC/*: started adding
	  some regression tests based from fragments of spec examples
	* libxslt/transform.c: fixed a problem on namespace generation

Mon Jan 29 18:40:23 CET 2001 Daniel Veillard <Daniel.Veillard@imag.fr>

	* FEATURES: updated
	* tests/numbers/Makefile.am tests/numbers/format-number.*
	  tests/Makefile.am configure.in: added number formattting
	  test from Bjorn
	* libxslt/attributes.[ch]: separated attribute support, started
	  add support for attribute-sets
	* libxslt/functions.[ch]: update for number and formatting
	  from Bjorn
	* libxslt/transform.c libxslt/xslt.c libxslt/xsltInternals.h:
	  cleanups updates, etc ...

Mon Jan 29 00:53:25 CET 2001 Daniel Veillard <Daniel.Veillard@imag.fr>

	* FEATURES: updated
	* libxslt/transform.c: added copy-of support
	* libxslt/xsltutils.[ch]: added xsltDocumentSortFunction()

Sun Jan 28 21:45:23 CET 2001 Daniel Veillard <Daniel.Veillard@imag.fr>

	* FEATURES TODO: updates
	* libxslt/xsltutils.[ch] libxslt/xsltInternals.h libxslt/xsltutils.h:
	  added xsl:message

Sun Jan 28 17:25:35 CET 2001 Daniel Veillard <Daniel.Veillard@imag.fr>

	* FEATURES TODO: updates
	* libxslt/namespaces.[ch] libxslt/templates.c libxslt/transform.c
	  libxslt/xslt.c libxslt/xsltInternals.h: added support for
	  namespace aliases and cleaned up the overall namespace related
	  code. This materialize as a new module.

Sun Jan 28 08:41:10 CET 2001 Daniel Veillard <Daniel.Veillard@imag.fr>

	* configure.in libxslt.spec.in: changes needed for libxml2-devel
	  changes

Sat Jan 27 11:00:20 CET 2001 Daniel Veillard <Daniel.Veillard@imag.fr>

	* libxslt.spec.in doc/xslt.html: updating doc and trying to add
	  it to the RPM.

Fri Jan 26 22:29:34 CET 2001 Daniel Veillard <Daniel.Veillard@imag.fr>

	* Makefile.am configure.in doc/Makefile.am: added a doc subdir
	  and the rules to generates the makefiles.
	* doc/libxslt.sgml doc/xslt.html: very first version of the manual
	* doc/html/*.html : autogenerated documentation
	* libxslt/xsltInternals.h: fixed a typedef wich was breaking gtk-doc

Fri Jan 26 21:48:25 CET 2001 Daniel Veillard <Daniel.Veillard@imag.fr>

	* libxslt/functions.c: xsltGenerateIdFunction() small patch

Thu Jan 25 19:36:45 CET 2001 Daniel Veillard <Daniel.Veillard@imag.fr>

	* FEATURES TODO README INSTALL: updated
	* libxslt/xslt.h: added URL and version/vendor :-)
	* libxslt/transform.c: fixed a problem in xsl:attribute, removed
	  attempt to support older libxml2 version.
	* libxslt/variables.h libxslt/xsltInternals.h: update to structures
	  and macros to add/register new document created by document()
	* libxslt/functions.c: implemented current(), unparsed-entity-uri()
	  system-property(), element-available() and function-available().
	  A crippled version of document() has been added too.

Thu Jan 25 12:13:04 CET 2001 Daniel Veillard <Daniel.Veillard@imag.fr>

	* functions.[ch]: Bjorn Reese <breese@mail1.stofanet.dk> provided
	  number formatting !!!
	* acconfig.h config.h.in configure.in libxslt/Makefile.am
	  tests/Makefile.am; added testing for mathematical functions,
	  fixed make test(s)
	* FEATURES: updated

Wed Jan 24 16:59:05 CET 2001 Daniel Veillard <Daniel.Veillard@imag.fr>

	* libxslt/xsltInternals.h libxslt/pattern.c: fixed problems
	  with non-named rules (*, ...) added accelerators
	* libxslt/templates.[ch]: added xsltEvalTemplateString()
	  and xsltEvalAttrValueTemplate() high level functions
	* libxslt/transform.c: fixed the part where attributes
	  had to be looked at as templates, added comment and
	  PI generation
	* TODO FEATURES: updated to reflect the new state

Wed Jan 24 05:33:54 CET 2001 Daniel Veillard <Daniel.Veillard@imag.fr>

	* libxslt/functions.[ch] Makefile.am: added new module functions
	  with templates for the XSLT functions.
	* libxslt/variables.h templates.c: added registrations of new
	  functions when an XPath context is created

Tue Jan 23 17:24:26 CET 2001 Daniel Veillard <Daniel.Veillard@imag.fr>

	* tests/Makefile.am: cleanup
	* libxslt/pattern.c: should support most of the patterns now
	  except ID/Key and maybe some namespace checks when having
	  a default namespace
	* TODO: updated

Tue Jan 23 14:58:32 CET 2001 Daniel Veillard <Daniel.Veillard@imag.fr>

	* Makefile.am libxslt.spec.in tests/REC1/Makefile.am
	  tests/REC2/Makefile.am: updated the makefiles and spec files to
	  add tests, and the FEATURES file to the RPM

Mon Jan 22 23:35:57 CET 2001 Daniel Veillard <Daniel.Veillard@imag.fr>

	* Makefile.am libxslt.spec.in libxslt/Makefile.am tests/Makefile.am:
	  prepared the Makefiles and spec files for a first release.
	* COPYING.LIB: added LGPL Licence

Mon Jan 22 22:36:43 CET 2001 Daniel Veillard <Daniel.Veillard@imag.fr>

	* libxslt/transform.c: applied cleanup patch from Bjorn Reese
	  <breese@mail1.stofanet.dk>

Mon Jan 22 20:24:36 CET 2001 Daniel Veillard <Daniel.Veillard@imag.fr>

	* configure.in libxslt.spec.in: first try to get a spec file

Mon Jan 22 19:37:00 CET 2001 Daniel Veillard <Daniel.Veillard@imag.fr>

	* libxslt/xsltproc.c: avoid segfault when stylesheet is inproper
	* libxslt/transform.c: add support for "*" to strip and preserve
	  space.

Mon Jan 22 15:30:19 CET 2001 Daniel Veillard <Daniel.Veillard@imag.fr>

	* TODO: updated
	* FEATURES: added with alist of what's in and what's not
	* libxslt/xslt.c: fixed top level Param and Variable stuff

Mon Jan 22 11:46:44 CET 2001 Daniel Veillard <Daniel.Veillard@imag.fr>

	* xsltproc.c: removed bug
	* tests/REC2/html.xml: added newline after doctype
	* libxslt/variables.[ch] libxslt/xsltInternals.h: added param
	  support, result tree fragment support (requires just commited
	  extensions to libxml2 XPath !!!)
	* transform.c: added call-template, with-param support
	* libxslt/pattern.[ch]: xsltFindTemplate() needed for call-template
	* TODO: updated, added a DONE section and started migrating stuff :-)

Sun Jan 21 12:03:16 CET 2001 Daniel Veillard <Daniel.Veillard@imag.fr>

	* Makefile.am tests/Makefile.am tests/REC1/Makefile.am
	  tests/REC2/Makefile.am tests/REC2/html.xml: added tests target
	  too, added the HTML output test
	* libxmls/xsltutils.c: added HTML output
	* libxslt/xslt.c: check version on literal result used as templates
	* libxslt/transform.c: fixed an error in VERSION number
	* libxslt/templates.c: make sure generated nodes have doc and
	  parent properly set

Sat Jan 20 23:35:07 CET 2001 Daniel Veillard <Daniel.Veillard@imag.fr>

	* libxslt/Makefile.am libxslt/template.[ch]: added a template
	  specific module. Added attribute value template, at least in
	  one spot.
	* tests/REC2/Makefile.am tests/REC2/svg.xml: the SVG test from
	  the spec now works too.
	* libxslt/variables.c: fixed the debug
	* libxslt/xslt.c: fixed an ugly uninitialized variable
	* libxslt/transform.c: now using attr template processing

Sat Jan 20 17:59:20 CET 2001 Daniel Veillard <Daniel.Veillard@imag.fr>

	* libxslt/transform.c libxslt/variables.[ch] libxslt/xslt.c
	  libxslt/xsltInternals.h libxslt/xsltutils.h: changed a few
	  structure to add an execution stack with variables. Tree
	  valued variables still missing.
	* TODO: updated

Fri Jan 19 13:16:57 CET 2001 Daniel Veillard <Daniel.Veillard@imag.fr>

	* libxslt/xslt.c: check version on stylesheets
	* libxslt/xslt.c libxslt/xsltInternals.h libxslt/variables[.ch]:
	  started adding variables interfaces and modules.

Thu Jan 18 16:08:38 CET 2001 Daniel Veillard <Daniel.Veillard@imag.fr>

	* libxslt/xslt.c: added support for disable-output-escaping
	  will need libxml version > 20211
	* libxslt/transform.c: cleanup
	* libxslt/xsltutils.[ch]: added output functions
	* libxslt/xsltproc.c: reuse the output function
	* tests/REC2/Makefile.am tests/REC2/vrml.xml: added VRML output
	  test

Wed Jan 17 21:03:01 CET 2001 Daniel Veillard <Daniel.Veillard@imag.fr>

	* libxslt/transform.c libxslt/xslt.c: avoiding some problems
	  with blank node stripping when not allowed.

Wed Jan 17 20:15:40 CET 2001 Daniel Veillard <Daniel.Veillard@imag.fr>

	* libxslt/transform.c: modified apply-templates processing
	  added select and sort support support.

Wed Jan 17 17:45:20 CET 2001 Daniel Veillard <Daniel.Veillard@imag.fr>

	* TODO: guess what, it's growing :-(
	* configure.in: setup hacking values when compiling in my
	  own environment.
	* libxslt/transform.c libxslt/xsltutils.[hc]: added a first
	  very rudimentary version of xsl:sort

Wed Jan 17 14:25:25 CET 2001 Daniel Veillard <Daniel.Veillard@imag.fr>

	* TODO: more stuff
	* libxslt/transform.c: context position and size in for-each
	* libxslt/xsltutils[ch] libxslt/makefile.am: added the util module
	  and put Error and Debug routines
	* libxslt/xslt.c libxslt/transform.c libxslt/pattern.c: switched
	  to use the Debug calls, cleanup
	* libxslt/xsltproc.c: added -v to enable debug printing

Tue Jan 16 17:17:17 CET 2001 Daniel Veillard <Daniel.Veillard@imag.fr>

	* TODO: started filling it :-(
	* libxslt/pattern.c: should now at least compile the full
	  set of patterns authorized. Default priorities added.
	* libxslt/transform.c: a bit more work and cleanup.

Mon Jan 15 15:34:17 CET 2001 Daniel Veillard <Daniel.Veillard@imag.fr>

	* TODO: started adding in there :-(

Mon Jan 15 15:31:41 CET 2001 Daniel Veillard <Daniel.Veillard@imag.fr>

	* transform.c, xslt.c, xsltproc.c: lots of fixes, added
	  support of xslt:if and xslt:attribute, need libxml2 interfaces
	  present only in CVS.

Sat Jan 13 23:26:21 CET 2001 Daniel Veillard <Daniel.Veillard@imag.fr>

	* test/Makefile.am test/REC*/Makefile.am: added first test
	* libxslt/pattern.c libxslt/transform.c libxslt/xslt.c:
	  cleanup of nodes at reading of stylesheet, added support
	  for xsl:for-each and fixed a few recursion bugs

Fri Jan 12 22:33:07 CET 2001 Daniel Veillard <Daniel.Veillard@imag.fr>

	* pattern.c, xslt.c: removed debug
	* transform.c: added value-of, seems to handle the first
	  REC example correctly

Fri Jan 12 18:34:01 CET 2001 Daniel Veillard <Daniel.Veillard@imag.fr>

	* transform.c, xsltproc.c: small fight with spaces and formatting
	  may need a revisit later but looks pretty good right now.

Fri Jan 12 13:43:30 CET 2001 Daniel Veillard <Daniel.Veillard@imag.fr>

	* transform.c: basic processing in place
	* xsltInternals.h: exported one xslt.c function

Thu Jan 11 21:10:59 CET 2001 Daniel Veillard <Daniel.Veillard@imag.fr>

	* libxslt/transform.[ch] Makefile.am: started adding the
	  transformation module
	* pattern.[ch] xslt.c: more work...

Thu Jan 11 14:02:03 CET 2001 Daniel Veillard <Daniel.Veillard@imag.fr>

	* libxslt/pattern.c: started adding xsltTestCompMatch()

Wed Jan 10 20:44:30 CET 2001 Daniel Veillard <Daniel.Veillard@imag.fr>

	* libxslt/pattern.c: more work on parsing selectors

Wed Jan 10 16:29:41 CET 2001 Daniel Veillard <Daniel.Veillard@imag.fr>

	* libxslt/xslt*: completeted the structures
	* libxslt/pattern.[ch]: started adding code to precompile patterns
	  and do the lookup
	* libxslt/makefile.am: added the new files

Mon Jan  8 19:55:18 CET 2001 Daniel Veillard <Daniel.Veillard@imag.fr>

	* libxslt/xslt.c : small cleanup
	* configure.in libxslt/xsltconfig.h.in: add memory debug and
	  mechanism for compile-time options

Sun Jan  7 22:53:12 CET 2001 Daniel Veillard <Daniel.Veillard@imag.fr>

	* libxslt/xslt.[ch]: started parsing templates

Sun Jan  7 19:50:02 CET 2001 Daniel Veillard <Daniel.Veillard@imag.fr>

	* libxslt/xslt.[ch]: started parsing stylesheet xsl:stylesheet

Sun Jan  7 16:11:42 CET 2001 Daniel Veillard <Daniel.Veillard@imag.fr>

	* libxslt/xslt.[ch] libxslt/xsltInternals.h libxslt/xsltproc.c:
	  very early coding

Sun Jan  7 15:10:54 CET 2001 Daniel Veillard <Daniel.Veillard@imag.fr>

	* configure.in Makefile.am AUTHORS NEWS autogen.sh config.h.in
	  libxslt/Makefile.am tests/Makefile.am:
	  Created the library framework, imported it into the GNOME CVS base
	* INSTALL: added a small instruction file.

Sun Jan  7 13:51:30 CET 2001 Daniel Veillard <Daniel.Veillard@imag.fr>

	* libxslt/xslt.[ch] libxslt/xsltInternals.h libxslt/xsltproc.c:
	  first steps toward building the framework

Sun Jan  7 12:22:13 CET 2001 Daniel Veillard <Daniel.Veillard@imag.fr>

	* NOTES: added notes taken while reading the spec.

Fri Jan  5 11:34:12 CET 2001 Daniel Veillard <Daniel.Veillard@imag.fr>

	* test/REC1 test/REC2: added examples from the XSLT REC

Fri Jan  5 11:14:29 CET 2001 Daniel Veillard <Daniel.Veillard@imag.fr>

	* README: basic informations
	* Changelog: created
