preparing release of 1.1.17 Daniel
authorDaniel Veillard <veillard@src.gnome.org>
Tue, 6 Jun 2006 15:17:10 +0000 (15:17 +0000)
committerDaniel Veillard <veillard@src.gnome.org>
Tue, 6 Jun 2006 15:17:10 +0000 (15:17 +0000)
* configure.in libxslt.spec.in doc//*: preparing release of 1.1.17
Daniel

21 files changed:
ChangeLog
configure.in
doc/API.html
doc/FAQ.html
doc/bugs.html
doc/contribs.html
doc/docbook.html
doc/docs.html
doc/downloads.html
doc/extensions.html
doc/help.html
doc/index.html
doc/internals.html
doc/intro.html
doc/libxslt.xsa
doc/news.html
doc/python.html
doc/xslt.html
doc/xsltproc2.html
libxslt.spec.in
libxslt/xsltwin32config.h

index 9b6f9e2..399871d 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,7 @@
+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
index dcf5a73..3a74e34 100644 (file)
@@ -10,12 +10,12 @@ dnl libexslt is an extension
 dnl
 LIBXSLT_MAJOR_VERSION=1
 LIBXSLT_MINOR_VERSION=1
-LIBXSLT_MICRO_VERSION=16
+LIBXSLT_MICRO_VERSION=17
 PACKAGE=libxslt
 LIBEXSLT_MAJOR_VERSION=0
 LIBEXSLT_MINOR_VERSION=8
 LIBEXSLT_MICRO_VERSION=13
-LIBXML_REQUIRED_VERSION=2.6.17 # if you need module support.
+LIBXML_REQUIRED_VERSION=2.6.25
 
 
 LIBXSLT_VERSION=$LIBXSLT_MAJOR_VERSION.$LIBXSLT_MINOR_VERSION.$LIBXSLT_MICRO_VERSION
index 782b66c..c9b903d 100644 (file)
@@ -8,19 +8,19 @@ H2 {font-family: Verdana,Arial,Helvetica}
 H3 {font-family: Verdana,Arial,Helvetica}
 A:link, A:visited, A:active { text-decoration: underline }
     </style><title>The programming API</title></head><body bgcolor="#8b7765" text="#000000" link="#a06060" vlink="#000000"><table border="0" width="100%" cellpadding="5" cellspacing="0" align="center"><tr><td width="120"><a href="http://swpat.ffii.org/"><img src="epatents.png" alt="Action against software patents" /></a></td><td width="180"><a href="http://www.gnome.org/"><img src="gnome2.png" alt="Gnome2 Logo" /></a><a href="http://www.w3.org/Status"><img src="w3c.png" alt="W3C logo" /></a><a href="http://www.redhat.com"><img src="redhat.gif" alt="Red Hat Logo" /></a><div align="left"><a href="http://xmlsoft.org/XSLT/"><img src="Libxslt-Logo-180x168.gif" alt="Made with Libxslt Logo" /></a></div></td><td><table border="0" width="90%" cellpadding="2" cellspacing="0" align="center" bgcolor="#000000"><tr><td><table width="100%" border="0" cellspacing="1" cellpadding="3" bgcolor="#fffacd"><tr><td align="center"><h1>The XSLT C library for Gnome</h1><h2>The programming API</h2></td></tr></table></td></tr></table></td></tr></table><table border="0" cellpadding="4" cellspacing="0" width="100%" align="center"><tr><td bgcolor="#8b7765"><table border="0" cellspacing="0" cellpadding="2" width="100%"><tr><td valign="top" width="200" bgcolor="#8b7765"><table border="0" cellspacing="0" cellpadding="1" width="100%" bgcolor="#000000"><tr><td><table width="100%" border="0" cellspacing="1" cellpadding="3"><tr><td colspan="1" bgcolor="#eecfa1" align="center"><center><b>Main Menu</b></center></td></tr><tr><td bgcolor="#fffacd"><form action="search.php" enctype="application/x-www-form-urlencoded" method="get"><input name="query" type="text" size="20" value="" /><input name="submit" type="submit" value="Search ..." /></form><ul><li><a href="index.html">Home</a></li><li><a href="http://xmlsoft.org/wiki">Wiki</a></li><li><a href="intro.html">Introduction</a></li><li><a href="docs.html">Documentation</a></li><li><a href="bugs.html">Reporting bugs and getting help</a></li><li><a href="help.html">How to help</a></li><li><a href="downloads.html">Downloads</a></li><li><a href="FAQ.html">FAQ</a></li><li><a href="news.html">News</a></li><li><a href="xsltproc2.html">The xsltproc tool</a></li><li><a href="docbook.html">DocBook</a></li><li><a href="API.html">The programming API</a></li><li><a href="python.html">Python and bindings</a></li><li><a href="internals.html">Library internals</a></li><li><a href="extensions.html">Writing extensions</a></li><li><a href="contribs.html">Contributions</a></li><li><a href="EXSLT/index.html" style="font-weight:bold">libexslt</a></li><li><a href="xslt.html">flat page</a>, <a href="site.xsl">stylesheet</a></li><li><a href="html/index.html" style="font-weight:bold">API Menu</a></li><li><a href="ChangeLog.html">ChangeLog</a></li></ul></td></tr></table><table width="100%" border="0" cellspacing="1" cellpadding="3"><tr><td colspan="1" bgcolor="#eecfa1" align="center"><center><b>Related links</b></center></td></tr><tr><td bgcolor="#fffacd"><ul><li><a href="tutorial/libxslttutorial.html">Tutorial</a>,
-          <a href="tutorial2/libxslt_pipes.html">Tutorial2</a></li><li><a href="xsltproc.html">Man page for xsltproc</a></li><li><a href="http://mail.gnome.org/archives/xslt/">Mail archive</a></li><li><a href="http://xmlsoft.org/">XML libxml2</a></li><li><a href="ftp://xmlsoft.org/">FTP</a></li><li><a href="http://www.zlatkovic.com/projects/libxml/">Windows binaries</a></li><li><a href="http://garypennington.net/libxml2/">Solaris binaries</a></li><li><a href="http://www.explain.com.au/oss/libxml2xslt.html">MacOsX binaries</a></li><li><a href="http://bugzilla.gnome.org/buglist.cgi?product=libxslt">Bug Tracker</a></li><li><a href="http://www.zend.com/php5/articles/php5-xmlphp.php#Heading17">XSLT with PHP</a></li><li><a href="http://www.mod-xslt2.com/">Apache module</a></li><li><a href="http://sourceforge.net/projects/libxml2-pas/">Pascal bindings</a></li><li><a href="http://xsldbg.sourceforge.net/">Xsldbg Debugger</a></li></ul></td></tr></table><table width="100%" border="0" cellspacing="1" cellpadding="3"><tr><td colspan="1" bgcolor="#eecfa1" align="center"><center><b>API Indexes</b></center></td></tr><tr><td bgcolor="#fffacd"><ul><li><a href="APIchunk0.html">Alphabetic</a></li><li><a href="APIconstructors.html">Constructors</a></li><li><a href="APIfunctions.html">Functions/Types</a></li><li><a href="APIfiles.html">Modules</a></li><li><a href="APIsymbols.html">Symbols</a></li></ul></td></tr></table></td></tr></table></td><td valign="top" bgcolor="#8b7765"><table border="0" cellspacing="0" cellpadding="1" width="100%"><tr><td><table border="0" cellspacing="0" cellpadding="1" width="100%" bgcolor="#000000"><tr><td><table border="0" cellpadding="3" cellspacing="1" width="100%"><tr><td bgcolor="#fffacd"><p>Okay this section is clearly incomplete. But integrating libxslt into your
-application should be relatively easy. First check the few steps described
-below, then for more detailed informations, look at the<a href="html/libxslt-lib.html"> generated pages</a> for the API and the source
-of libxslt/xsltproc.c  and the  <a href="tutorial/libxslttutorial.html">tutorial</a>.</p><p>Basically doing an XSLT transformation can be done in a few steps:</p><ol><li>configure the parser for XSLT:
+          <a href="tutorial2/libxslt_pipes.html">Tutorial2</a></li><li><a href="xsltproc.html">Man page for xsltproc</a></li><li><a href="http://mail.gnome.org/archives/xslt/">Mail archive</a></li><li><a href="http://xmlsoft.org/">XML libxml2</a></li><li><a href="ftp://xmlsoft.org/">FTP</a></li><li><a href="http://www.zlatkovic.com/projects/libxml/">Windows binaries</a></li><li><a href="http://garypennington.net/libxml2/">Solaris binaries</a></li><li><a href="http://www.explain.com.au/oss/libxml2xslt.html">MacOsX binaries</a></li><li><a href="http://bugzilla.gnome.org/buglist.cgi?product=libxslt">Bug Tracker</a></li><li><a href="http://www.zend.com/php5/articles/php5-xmlphp.php#Heading17">XSLT with PHP</a></li><li><a href="http://www.mod-xslt2.com/">Apache module</a></li><li><a href="http://sourceforge.net/projects/libxml2-pas/">Pascal bindings</a></li><li><a href="http://xsldbg.sourceforge.net/">Xsldbg Debugger</a></li></ul></td></tr></table><table width="100%" border="0" cellspacing="1" cellpadding="3"><tr><td colspan="1" bgcolor="#eecfa1" align="center"><center><b>API Indexes</b></center></td></tr><tr><td bgcolor="#fffacd"><ul><li><a href="APIchunk0.html">Alphabetic</a></li><li><a href="APIconstructors.html">Constructors</a></li><li><a href="APIfunctions.html">Functions/Types</a></li><li><a href="APIfiles.html">Modules</a></li><li><a href="APIsymbols.html">Symbols</a></li></ul></td></tr></table></td></tr></table></td><td valign="top" bgcolor="#8b7765"><table border="0" cellspacing="0" cellpadding="1" width="100%"><tr><td><table border="0" cellspacing="0" cellpadding="1" width="100%" bgcolor="#000000"><tr><td><table border="0" cellpadding="3" cellspacing="1" width="100%"><tr><td bgcolor="#fffacd"><p>Okay this section is clearly incomplete. But integrating libxslt into
+yourapplication should be relatively easy. First check the few steps
+describedbelow, then for more detailed informations, look at the<a href="html/libxslt-lib.html">generated pages</a>for the API and the sourceof
+libxslt/xsltproc.c  and the  <a href="tutorial/libxslttutorial.html">tutorial</a>.</p><p>Basically doing an XSLT transformation can be done in a few steps:</p><ol><li>configure the parser for XSLT:
     <p>xmlSubstituteEntitiesDefault(1);</p>
     <p>xmlLoadExtDtdDefaultValue = 1;</p>
   </li>
   <li>parse the stylesheet with xsltParseStylesheetFile()</li>
   <li>parse the document with xmlParseFile()</li>
   <li>apply the stylesheet using xsltApplyStylesheet()</li>
-  <li>save the result using xsltSaveResultToFile() if needed set
-    xmlIndentTreeOutput to 1</li>
-</ol><p>Steps 2,3, and 5 will probably need to be changed depending on you
-processing needs and environment for example if reading/saving from/to
-memory, or if you want to apply XInclude processing to the stylesheet or
-input documents.</p><p><a href="bugs.html">Daniel Veillard</a></p></td></tr></table></td></tr></table></td></tr></table></td></tr></table></td></tr></table></body></html>
+  <li>save the result using xsltSaveResultToFile() if needed
+    setxmlIndentTreeOutput to 1</li>
+</ol><p>Steps 2,3, and 5 will probably need to be changed depending on
+youprocessing needs and environment for example if reading/saving
+from/tomemory, or if you want to apply XInclude processing to the stylesheet
+orinput documents.</p><p><a href="bugs.html">Daniel Veillard</a></p></td></tr></table></td></tr></table></td></tr></table></td></tr></table></td></tr></table></body></html>
index e050293..a3c9bf2 100644 (file)
@@ -9,35 +9,35 @@ H3 {font-family: Verdana,Arial,Helvetica}
 A:link, A:visited, A:active { text-decoration: underline }
     </style><title>FAQ</title></head><body bgcolor="#8b7765" text="#000000" link="#a06060" vlink="#000000"><table border="0" width="100%" cellpadding="5" cellspacing="0" align="center"><tr><td width="120"><a href="http://swpat.ffii.org/"><img src="epatents.png" alt="Action against software patents" /></a></td><td width="180"><a href="http://www.gnome.org/"><img src="gnome2.png" alt="Gnome2 Logo" /></a><a href="http://www.w3.org/Status"><img src="w3c.png" alt="W3C logo" /></a><a href="http://www.redhat.com"><img src="redhat.gif" alt="Red Hat Logo" /></a><div align="left"><a href="http://xmlsoft.org/XSLT/"><img src="Libxslt-Logo-180x168.gif" alt="Made with Libxslt Logo" /></a></div></td><td><table border="0" width="90%" cellpadding="2" cellspacing="0" align="center" bgcolor="#000000"><tr><td><table width="100%" border="0" cellspacing="1" cellpadding="3" bgcolor="#fffacd"><tr><td align="center"><h1>The XSLT C library for Gnome</h1><h2>FAQ</h2></td></tr></table></td></tr></table></td></tr></table><table border="0" cellpadding="4" cellspacing="0" width="100%" align="center"><tr><td bgcolor="#8b7765"><table border="0" cellspacing="0" cellpadding="2" width="100%"><tr><td valign="top" width="200" bgcolor="#8b7765"><table border="0" cellspacing="0" cellpadding="1" width="100%" bgcolor="#000000"><tr><td><table width="100%" border="0" cellspacing="1" cellpadding="3"><tr><td colspan="1" bgcolor="#eecfa1" align="center"><center><b>Main Menu</b></center></td></tr><tr><td bgcolor="#fffacd"><form action="search.php" enctype="application/x-www-form-urlencoded" method="get"><input name="query" type="text" size="20" value="" /><input name="submit" type="submit" value="Search ..." /></form><ul><li><a href="index.html">Home</a></li><li><a href="http://xmlsoft.org/wiki">Wiki</a></li><li><a href="intro.html">Introduction</a></li><li><a href="docs.html">Documentation</a></li><li><a href="bugs.html">Reporting bugs and getting help</a></li><li><a href="help.html">How to help</a></li><li><a href="downloads.html">Downloads</a></li><li><a href="FAQ.html">FAQ</a></li><li><a href="news.html">News</a></li><li><a href="xsltproc2.html">The xsltproc tool</a></li><li><a href="docbook.html">DocBook</a></li><li><a href="API.html">The programming API</a></li><li><a href="python.html">Python and bindings</a></li><li><a href="internals.html">Library internals</a></li><li><a href="extensions.html">Writing extensions</a></li><li><a href="contribs.html">Contributions</a></li><li><a href="EXSLT/index.html" style="font-weight:bold">libexslt</a></li><li><a href="xslt.html">flat page</a>, <a href="site.xsl">stylesheet</a></li><li><a href="html/index.html" style="font-weight:bold">API Menu</a></li><li><a href="ChangeLog.html">ChangeLog</a></li></ul></td></tr></table><table width="100%" border="0" cellspacing="1" cellpadding="3"><tr><td colspan="1" bgcolor="#eecfa1" align="center"><center><b>Related links</b></center></td></tr><tr><td bgcolor="#fffacd"><ul><li><a href="tutorial/libxslttutorial.html">Tutorial</a>,
           <a href="tutorial2/libxslt_pipes.html">Tutorial2</a></li><li><a href="xsltproc.html">Man page for xsltproc</a></li><li><a href="http://mail.gnome.org/archives/xslt/">Mail archive</a></li><li><a href="http://xmlsoft.org/">XML libxml2</a></li><li><a href="ftp://xmlsoft.org/">FTP</a></li><li><a href="http://www.zlatkovic.com/projects/libxml/">Windows binaries</a></li><li><a href="http://garypennington.net/libxml2/">Solaris binaries</a></li><li><a href="http://www.explain.com.au/oss/libxml2xslt.html">MacOsX binaries</a></li><li><a href="http://bugzilla.gnome.org/buglist.cgi?product=libxslt">Bug Tracker</a></li><li><a href="http://www.zend.com/php5/articles/php5-xmlphp.php#Heading17">XSLT with PHP</a></li><li><a href="http://www.mod-xslt2.com/">Apache module</a></li><li><a href="http://sourceforge.net/projects/libxml2-pas/">Pascal bindings</a></li><li><a href="http://xsldbg.sourceforge.net/">Xsldbg Debugger</a></li></ul></td></tr></table><table width="100%" border="0" cellspacing="1" cellpadding="3"><tr><td colspan="1" bgcolor="#eecfa1" align="center"><center><b>API Indexes</b></center></td></tr><tr><td bgcolor="#fffacd"><ul><li><a href="APIchunk0.html">Alphabetic</a></li><li><a href="APIconstructors.html">Constructors</a></li><li><a href="APIfunctions.html">Functions/Types</a></li><li><a href="APIfiles.html">Modules</a></li><li><a href="APIsymbols.html">Symbols</a></li></ul></td></tr></table></td></tr></table></td><td valign="top" bgcolor="#8b7765"><table border="0" cellspacing="0" cellpadding="1" width="100%"><tr><td><table border="0" cellspacing="0" cellpadding="1" width="100%" bgcolor="#000000"><tr><td><table border="0" cellpadding="3" cellspacing="1" width="100%"><tr><td bgcolor="#fffacd"><ol><li><em>Troubles compiling or linking programs using libxslt</em>
-    <p>Usually the problem comes from the fact that the compiler doesn't get
-    the right compilation or linking flags. There is a small shell script
-    <code>xslt-config</code> which is installed as part of libxslt usual
-    install process which provides those flags. Use</p>
+    <p>Usually the problem comes from the fact that the compiler doesn't
+    getthe right compilation or linking flags. There is a small shell
+    script<code>xslt-config</code>which is installed as part of libxslt
+    usualinstall process which provides those flags. Use</p>
     <p><code>xslt-config --cflags</code></p>
     <p>to get the compilation flags and</p>
     <p><code>xslt-config --libs</code></p>
-    <p>to get the linker flags. Usually this is done directly from the
-    Makefile as:</p>
+    <p>to get the linker flags. Usually this is done directly from
+    theMakefile as:</p>
     <p><code>CFLAGS=`xslt-config --cflags`</code></p>
     <p><code>LIBS=`xslt-config --libs`</code></p>
-    <p>Note also that if you use the EXSLT extensions from the program then
-    you should prepend <code>-lexslt</code> to the LIBS options</p>
+    <p>Note also that if you use the EXSLT extensions from the program
+    thenyou should prepend <code>-lexslt</code>to the LIBS options</p>
   </li>
   <li><em>passing parameters on the xsltproc command line doesn't work</em>
     <p><em>xsltproc --param test alpha foo.xsl foo.xml</em></p>
     <p><em>the param does not get passed and ends up as ""</em></p>
     <p>In a nutshell do a double escaping at the shell prompt:</p>
     <p>xsltproc --param test "'alpha'" foo.xsl foo.xml</p>
-    <p>i.e. the string value is surrounded by " and ' then terminated by '
-    and ". Libxslt interpret the parameter values as XPath expressions, so
-    the string -&gt;<code>alpha</code>&lt;- is intepreted as the node set
-    matching this string. You really want -&gt;<code>'alpha'</code>&lt;- to
-    be passed to the processor. And to allow this you need to escape the
-    quotes at the shell level using -&gt;<code>"'alpha'"</code>&lt;- .</p>
+    <p>i.e. the string value is surrounded by " and ' then terminated by 'and
+    ". Libxslt interpret the parameter values as XPath expressions, sothe
+    string -&gt;<code>alpha</code>&lt;- is intepreted as the node setmatching
+    this string. You really want -&gt;<code>'alpha'</code>&lt;- tobe passed
+    to the processor. And to allow this you need to escape thequotes at the
+    shell level using -&gt;<code>"'alpha'"</code>&lt;- .</p>
     <p>or use</p>
     <p>xsltproc --stringparam test alpha foo.xsl foo.xml</p>
   </li>
   <li><em>Is there C++ bindings ?</em>
-    <p>Yes for example <a href="http://pmade.org/pjones/software/xmlwrapp/">xmlwrapp</a> , see <a href="python.html">the related pages about bindings</a></p>
+    <p>Yes for example <a href="http://pmade.org/pjones/software/xmlwrapp/">xmlwrapp</a>, see <a href="python.html">the related pages about bindings</a></p>
   </li>
 </ol><p><a href="bugs.html">Daniel Veillard</a></p></td></tr></table></td></tr></table></td></tr></table></td></tr></table></td></tr></table></body></html>
index 0521406..cf377b5 100644 (file)
@@ -8,86 +8,84 @@ H2 {font-family: Verdana,Arial,Helvetica}
 H3 {font-family: Verdana,Arial,Helvetica}
 A:link, A:visited, A:active { text-decoration: underline }
     </style><title>Reporting bugs and getting help</title></head><body bgcolor="#8b7765" text="#000000" link="#a06060" vlink="#000000"><table border="0" width="100%" cellpadding="5" cellspacing="0" align="center"><tr><td width="120"><a href="http://swpat.ffii.org/"><img src="epatents.png" alt="Action against software patents" /></a></td><td width="180"><a href="http://www.gnome.org/"><img src="gnome2.png" alt="Gnome2 Logo" /></a><a href="http://www.w3.org/Status"><img src="w3c.png" alt="W3C logo" /></a><a href="http://www.redhat.com"><img src="redhat.gif" alt="Red Hat Logo" /></a><div align="left"><a href="http://xmlsoft.org/XSLT/"><img src="Libxslt-Logo-180x168.gif" alt="Made with Libxslt Logo" /></a></div></td><td><table border="0" width="90%" cellpadding="2" cellspacing="0" align="center" bgcolor="#000000"><tr><td><table width="100%" border="0" cellspacing="1" cellpadding="3" bgcolor="#fffacd"><tr><td align="center"><h1>The XSLT C library for Gnome</h1><h2>Reporting bugs and getting help</h2></td></tr></table></td></tr></table></td></tr></table><table border="0" cellpadding="4" cellspacing="0" width="100%" align="center"><tr><td bgcolor="#8b7765"><table border="0" cellspacing="0" cellpadding="2" width="100%"><tr><td valign="top" width="200" bgcolor="#8b7765"><table border="0" cellspacing="0" cellpadding="1" width="100%" bgcolor="#000000"><tr><td><table width="100%" border="0" cellspacing="1" cellpadding="3"><tr><td colspan="1" bgcolor="#eecfa1" align="center"><center><b>Main Menu</b></center></td></tr><tr><td bgcolor="#fffacd"><form action="search.php" enctype="application/x-www-form-urlencoded" method="get"><input name="query" type="text" size="20" value="" /><input name="submit" type="submit" value="Search ..." /></form><ul><li><a href="index.html">Home</a></li><li><a href="http://xmlsoft.org/wiki">Wiki</a></li><li><a href="intro.html">Introduction</a></li><li><a href="docs.html">Documentation</a></li><li><a href="bugs.html">Reporting bugs and getting help</a></li><li><a href="help.html">How to help</a></li><li><a href="downloads.html">Downloads</a></li><li><a href="FAQ.html">FAQ</a></li><li><a href="news.html">News</a></li><li><a href="xsltproc2.html">The xsltproc tool</a></li><li><a href="docbook.html">DocBook</a></li><li><a href="API.html">The programming API</a></li><li><a href="python.html">Python and bindings</a></li><li><a href="internals.html">Library internals</a></li><li><a href="extensions.html">Writing extensions</a></li><li><a href="contribs.html">Contributions</a></li><li><a href="EXSLT/index.html" style="font-weight:bold">libexslt</a></li><li><a href="xslt.html">flat page</a>, <a href="site.xsl">stylesheet</a></li><li><a href="html/index.html" style="font-weight:bold">API Menu</a></li><li><a href="ChangeLog.html">ChangeLog</a></li></ul></td></tr></table><table width="100%" border="0" cellspacing="1" cellpadding="3"><tr><td colspan="1" bgcolor="#eecfa1" align="center"><center><b>Related links</b></center></td></tr><tr><td bgcolor="#fffacd"><ul><li><a href="tutorial/libxslttutorial.html">Tutorial</a>,
-          <a href="tutorial2/libxslt_pipes.html">Tutorial2</a></li><li><a href="xsltproc.html">Man page for xsltproc</a></li><li><a href="http://mail.gnome.org/archives/xslt/">Mail archive</a></li><li><a href="http://xmlsoft.org/">XML libxml2</a></li><li><a href="ftp://xmlsoft.org/">FTP</a></li><li><a href="http://www.zlatkovic.com/projects/libxml/">Windows binaries</a></li><li><a href="http://garypennington.net/libxml2/">Solaris binaries</a></li><li><a href="http://www.explain.com.au/oss/libxml2xslt.html">MacOsX binaries</a></li><li><a href="http://bugzilla.gnome.org/buglist.cgi?product=libxslt">Bug Tracker</a></li><li><a href="http://www.zend.com/php5/articles/php5-xmlphp.php#Heading17">XSLT with PHP</a></li><li><a href="http://www.mod-xslt2.com/">Apache module</a></li><li><a href="http://sourceforge.net/projects/libxml2-pas/">Pascal bindings</a></li><li><a href="http://xsldbg.sourceforge.net/">Xsldbg Debugger</a></li></ul></td></tr></table><table width="100%" border="0" cellspacing="1" cellpadding="3"><tr><td colspan="1" bgcolor="#eecfa1" align="center"><center><b>API Indexes</b></center></td></tr><tr><td bgcolor="#fffacd"><ul><li><a href="APIchunk0.html">Alphabetic</a></li><li><a href="APIconstructors.html">Constructors</a></li><li><a href="APIfunctions.html">Functions/Types</a></li><li><a href="APIfiles.html">Modules</a></li><li><a href="APIsymbols.html">Symbols</a></li></ul></td></tr></table></td></tr></table></td><td valign="top" bgcolor="#8b7765"><table border="0" cellspacing="0" cellpadding="1" width="100%"><tr><td><table border="0" cellspacing="0" cellpadding="1" width="100%" bgcolor="#000000"><tr><td><table border="0" cellpadding="3" cellspacing="1" width="100%"><tr><td bgcolor="#fffacd"><p>If you need help with the XSLT language itself, here are a number of
-useful resources:</p><ul><li>I strongly suggest to subscribe to <a href="http://www.mulberrytech.com/xsl/xsl-list">XSL-list</a>, check <a href="http://www.biglist.com/lists/xsl-list/archives/">the XSL-list
-    archives</a></li>
+          <a href="tutorial2/libxslt_pipes.html">Tutorial2</a></li><li><a href="xsltproc.html">Man page for xsltproc</a></li><li><a href="http://mail.gnome.org/archives/xslt/">Mail archive</a></li><li><a href="http://xmlsoft.org/">XML libxml2</a></li><li><a href="ftp://xmlsoft.org/">FTP</a></li><li><a href="http://www.zlatkovic.com/projects/libxml/">Windows binaries</a></li><li><a href="http://garypennington.net/libxml2/">Solaris binaries</a></li><li><a href="http://www.explain.com.au/oss/libxml2xslt.html">MacOsX binaries</a></li><li><a href="http://bugzilla.gnome.org/buglist.cgi?product=libxslt">Bug Tracker</a></li><li><a href="http://www.zend.com/php5/articles/php5-xmlphp.php#Heading17">XSLT with PHP</a></li><li><a href="http://www.mod-xslt2.com/">Apache module</a></li><li><a href="http://sourceforge.net/projects/libxml2-pas/">Pascal bindings</a></li><li><a href="http://xsldbg.sourceforge.net/">Xsldbg Debugger</a></li></ul></td></tr></table><table width="100%" border="0" cellspacing="1" cellpadding="3"><tr><td colspan="1" bgcolor="#eecfa1" align="center"><center><b>API Indexes</b></center></td></tr><tr><td bgcolor="#fffacd"><ul><li><a href="APIchunk0.html">Alphabetic</a></li><li><a href="APIconstructors.html">Constructors</a></li><li><a href="APIfunctions.html">Functions/Types</a></li><li><a href="APIfiles.html">Modules</a></li><li><a href="APIsymbols.html">Symbols</a></li></ul></td></tr></table></td></tr></table></td><td valign="top" bgcolor="#8b7765"><table border="0" cellspacing="0" cellpadding="1" width="100%"><tr><td><table border="0" cellspacing="0" cellpadding="1" width="100%" bgcolor="#000000"><tr><td><table border="0" cellpadding="3" cellspacing="1" width="100%"><tr><td bgcolor="#fffacd"><p>If you need help with the XSLT language itself, here are a number ofuseful
+resources:</p><ul><li>I strongly suggest to subscribe to <a href="http://www.mulberrytech.com/xsl/xsl-list">XSL-list</a>, check <a href="http://www.biglist.com/lists/xsl-list/archives/">the
+    XSL-listarchives</a></li>
   <li>The <a href="http://www.dpawson.co.uk/xsl/xslfaq.html">XSL FAQ</a>.</li>
-  <li>The <a href="http://www.nwalsh.com/docs/tutorials/xsl/xsl/slides.html">tutorial</a>
-    written by Paul Grosso and Norman Walsh is a very good on-line
-    introdution to the language.</li>
-  <li>The <a href="http://www.zvon.org/xxl/XSLTutorial/Books/Book1/index.html">only
-    Zvon XSLT tutorial</a> details a lot of constructs with examples.</li>
-  <li><a href="http://www.jenitennison.com/xslt/index.html">Jeni Tennison's
-    XSLT</a> pages provide links to a lot of answers</li>
-  <li>the <a href="http://incrementaldevelopment.com/xsltrick/">Gallery of
-    XSLT Tricks</a> provides non-standard use case of XSLT</li>
-  <li>And I suggest to buy Michael Kay "XSLT Programmer's Reference" book
-    published by <a href="http://www.wrox.com/">Wrox</a> if you plan to work
-    seriously with XSLT in the future.</li>
-</ul><p>Well, bugs or missing features are always possible, and I will make a
-point of fixing them in a timely fashion. The best way to report a bug is to
-use the <a href="http://bugzilla.gnome.org/enter_bug.cgi?product=libxslt">Gnome bug
-tracking database</a> (make sure to use the "libxslt" module name). Before
-filing a bug, check the <a href="http://bugzilla.gnome.org/buglist.cgi?product=libxslt">list of existing
-libxslt bugs</a> to make sure it hasn't already been filed. I look at reports
-there regularly and it's good to have a reminder when a bug is still open. Be
-sure to specify that the bug is for the package libxslt.</p><p>For small problems you can try to get help on IRC, the #xml channel on
-irc.gnome.org (port 6667) usually have a few person subscribed which may help
-(but there is no garantee and if a real issue is raised it should go on the
-mailing-list for archival).</p><p>There is also a mailing-list <a href="mailto:xslt@gnome.org">xslt@gnome.org</a> for libxslt, with an <a href="http://mail.gnome.org/archives/xslt/">on-line archive</a>. To subscribe
-to this list, please visit the <a href="http://mail.gnome.org/mailman/listinfo/xslt">associated Web</a> page
-and follow the instructions.</p><p>Alternatively, you can just send the bug to the <a href="mailto:xslt@gnome.org">xslt@gnome.org</a> list, if it's really libxslt
-related I will approve it.. Please do not send me mail directly especially
-for portability problem, it makes things really harder to track and in some
-cases I'm not the best person to answer a given question, ask the list
-instead. <strong>Do not send code, I won't debug it</strong> (but patches are
-really appreciated!).</p><p>Please note that with the current amount of virus and SPAM, sending mail
-to the list without being subscribed won't work. There is *far too many
-bounces* (in the order of a thousand a day !) I cannot approve them manually
-anymore. If your mail to the list bounced waiting for administrator approval,
-it is LOST ! Repost it and fix the problem triggering the error. Also please
-note that <span style="color: #FF0000; background-color: #FFFFFF">emails with
-a legal warning asking to not copy or redistribute freely the informations
-they contain</span> are <strong>NOT</strong> acceptable for the mailing-list,
-such mail will as much as possible be discarded automatically, and are less
-likely to be answered if they made it to the list, <strong>DO NOT</strong>
-post to the list from an email address where such legal requirements are
-automatically added, get private paying support if you can't share
-informations.</p><p>Check the following too <span style="color: #E50000">before
-posting</span>:</p><ul><li><a href="search.php">use the search engine</a> to get informations
-    related to your problem.</li>
-  <li>make sure you are <a href="ftp://xmlsoft.org/libxslt/">using a recent
-    version</a>, and that the problem still shows up in those</li>
-  <li>check the <a href="http://mail.gnome.org/archives/xslt/">list
-    archives</a> to see if the problem was reported already, in this case
-    there is probably a fix available, similarly check the <a href="http://bugzilla.gnome.org/buglist.cgi?product=libxslt">registered
-    open bugs</a></li>
-  <li>make sure you can reproduce the bug with xsltproc, a very useful thing
-    to do is run the transformation with -v argument and redirect the
-    standard error to a file, then search in this file for the transformation
-    logs just preceding the possible problem</li>
-  <li>Please send the command showing the error as well as the input and
-    stylesheet (as an attachment)</li>
-</ul><p>Then send the bug with associated informations to reproduce it to the <a href="mailto:xslt@gnome.org">xslt@gnome.org</a> list; if it's really libxslt
-related I will approve it. Please do not send mail to me directly, it makes
-things really hard to track and in some cases I am not the best person to
-answer a given question, ask on the list.</p><p>To <span style="color: #E50000">be really clear about support</span>:</p><ul><li>Support or help <span style="color: #E50000">request MUST be sent to
-    the list or on bugzilla</span> in case of problems, so that the Question
-    and Answers can be shared publicly. Failing to do so carries the implicit
-    message "I want free support but I don't want to share the benefits with
-    others" and is not welcome. I will automatically Carbon-Copy the
-    xslt@gnome.org mailing list for any technical reply made about libxml2 or
-    libxslt.</li>
-  <li>There is <span style="color: #E50000">no garantee for support</span>,
-    if your question remains unanswered after a week, repost it, making sure
-    you gave all the detail needed and the informations requested.</li>
-  <li>Failing to provide informations as requested or double checking first
-    for prior feedback also carries the implicit message "the time of the
-    library maintainers is less valuable than my time" and might not be
-    welcome.</li>
-</ul><p>Of course, bugs reports with a suggested patch for fixing them will
-probably be processed faster.</p><p>If you're looking for help, a quick look at <a href="http://mail.gnome.org/archives/xslt/">the list archive</a> may actually
-provide the answer, I usually send source samples when answering libxslt
-usage questions. The <a href="html/libxslt-lib.html#LIBXSLT-LIB">auto-generated documentation</a> is
-not as polished as I would like (I need to learn more about Docbook), but
-it's a good starting point.</p><p><a href="bugs.html">Daniel Veillard</a></p></td></tr></table></td></tr></table></td></tr></table></td></tr></table></td></tr></table></body></html>
+  <li>The <a href="http://www.nwalsh.com/docs/tutorials/xsl/xsl/slides.html">tutorial</a>written
+    by Paul Grosso and Norman Walsh is a very good on-lineintrodution to the
+    language.</li>
+  <li>The <a href="http://www.zvon.org/xxl/XSLTutorial/Books/Book1/index.html">onlyZvon
+    XSLT tutorial</a>details a lot of constructs with examples.</li>
+  <li><a href="http://www.jenitennison.com/xslt/index.html">Jeni
+    Tennison'sXSLT</a>pages provide links to a lot of answers</li>
+  <li>the <a href="http://incrementaldevelopment.com/xsltrick/">Gallery
+    ofXSLT Tricks</a>provides non-standard use case of XSLT</li>
+  <li>And I suggest to buy Michael Kay "XSLT Programmer's Reference"
+    bookpublished by <a href="http://www.wrox.com/">Wrox</a>if you plan to
+    workseriously with XSLT in the future.</li>
+</ul><p>Well, bugs or missing features are always possible, and I will make apoint
+of fixing them in a timely fashion. The best way to report a bug is touse the
+<a href="http://bugzilla.gnome.org/enter_bug.cgi?product=libxslt">Gnome
+bugtracking database</a>(make sure to use the "libxslt" module name).
+Beforefiling a bug, check the <a href="http://bugzilla.gnome.org/buglist.cgi?product=libxslt">list of
+existinglibxslt bugs</a>to make sure it hasn't already been filed. I look at
+reportsthere regularly and it's good to have a reminder when a bug is still
+open. Besure to specify that the bug is for the package libxslt.</p><p>For small problems you can try to get help on IRC, the #xml channel
+onirc.gnome.org (port 6667) usually have a few person subscribed which may
+help(but there is no garantee and if a real issue is raised it should go on
+themailing-list for archival).</p><p>There is also a mailing-list <a href="mailto:xslt@gnome.org">xslt@gnome.org</a>for libxslt, with an <a href="http://mail.gnome.org/archives/xslt/">on-line archive</a>. To
+subscribeto this list, please visit the <a href="http://mail.gnome.org/mailman/listinfo/xslt">associated Web</a>pageand
+follow the instructions.</p><p>Alternatively, you can just send the bug to the <a href="mailto:xslt@gnome.org">xslt@gnome.org</a>list, if it's really
+libxsltrelated I will approve it.. Please do not send me mail directly
+especiallyfor portability problem, it makes things really harder to track and
+in somecases I'm not the best person to answer a given question, ask the
+listinstead. <strong>Do not send code, I won't debug it</strong>(but patches
+arereally appreciated!).</p><p>Please note that with the current amount of virus and SPAM, sending mailto
+the list without being subscribed won't work. There is *far too manybounces*
+(in the order of a thousand a day !) I cannot approve them manuallyanymore.
+If your mail to the list bounced waiting for administrator approval,it is
+LOST ! Repost it and fix the problem triggering the error. Also pleasenote
+that <span style="color: #FF0000; background-color: #FFFFFF">emails witha
+legal warning asking to not copy or redistribute freely the informationsthey
+contain</span>are <strong>NOT</strong>acceptable for the mailing-list,such
+mail will as much as possible be discarded automatically, and are lesslikely
+to be answered if they made it to the list, <strong>DO NOT</strong>post to
+the list from an email address where such legal requirements areautomatically
+added, get private paying support if you can't shareinformations.</p><p>Check the following too <span style="color: #E50000">beforeposting</span>:</p><ul><li><a href="search.php">use the search engine</a>to get
+    informationsrelated to your problem.</li>
+  <li>make sure you are <a href="ftp://xmlsoft.org/libxslt/">using a
+    recentversion</a>, and that the problem still shows up in those</li>
+  <li>check the <a href="http://mail.gnome.org/archives/xslt/">listarchives</a>to see if the
+    problem was reported already, in this casethere is probably a fix
+    available, similarly check the <a href="http://bugzilla.gnome.org/buglist.cgi?product=libxslt">registeredopen
+    bugs</a></li>
+  <li>make sure you can reproduce the bug with xsltproc, a very useful
+    thingto do is run the transformation with -v argument and redirect
+    thestandard error to a file, then search in this file for the
+    transformationlogs just preceding the possible problem</li>
+  <li>Please send the command showing the error as well as the input
+    andstylesheet (as an attachment)</li>
+</ul><p>Then send the bug with associated informations to reproduce it to the <a href="mailto:xslt@gnome.org">xslt@gnome.org</a>list; if it's really
+libxsltrelated I will approve it. Please do not send mail to me directly, it
+makesthings really hard to track and in some cases I am not the best person
+toanswer a given question, ask on the list.</p><p>To <span style="color: #E50000">be really clear about support</span>:</p><ul><li>Support or help <span style="color: #E50000">request MUST be sent tothe
+    list or on bugzilla</span>in case of problems, so that the Questionand
+    Answers can be shared publicly. Failing to do so carries the
+    implicitmessage "I want free support but I don't want to share the
+    benefits withothers" and is not welcome. I will automatically Carbon-Copy
+    thexslt@gnome.org mailing list for any technical reply made about libxml2
+    orlibxslt.</li>
+  <li>There is <span style="color: #E50000">no garantee for support</span>,if
+    your question remains unanswered after a week, repost it, making sureyou
+    gave all the detail needed and the informations requested.</li>
+  <li>Failing to provide informations as requested or double checking
+    firstfor prior feedback also carries the implicit message "the time of
+    thelibrary maintainers is less valuable than my time" and might not
+    bewelcome.</li>
+</ul><p>Of course, bugs reports with a suggested patch for fixing them
+willprobably be processed faster.</p><p>If you're looking for help, a quick look at <a href="http://mail.gnome.org/archives/xslt/">the list archive</a>may
+actuallyprovide the answer, I usually send source samples when answering
+libxsltusage questions. The <a href="html/libxslt-lib.html#LIBXSLT-LIB">auto-generated
+documentation</a>isnot as polished as I would like (I need to learn more
+about Docbook), butit's a good starting point.</p><p><a href="bugs.html">Daniel Veillard</a></p></td></tr></table></td></tr></table></td></tr></table></td></tr></table></td></tr></table></body></html>
index c6f5bca..e27da52 100644 (file)
@@ -8,34 +8,33 @@ H2 {font-family: Verdana,Arial,Helvetica}
 H3 {font-family: Verdana,Arial,Helvetica}
 A:link, A:visited, A:active { text-decoration: underline }
     </style><title>Contributions</title></head><body bgcolor="#8b7765" text="#000000" link="#a06060" vlink="#000000"><table border="0" width="100%" cellpadding="5" cellspacing="0" align="center"><tr><td width="120"><a href="http://swpat.ffii.org/"><img src="epatents.png" alt="Action against software patents" /></a></td><td width="180"><a href="http://www.gnome.org/"><img src="gnome2.png" alt="Gnome2 Logo" /></a><a href="http://www.w3.org/Status"><img src="w3c.png" alt="W3C logo" /></a><a href="http://www.redhat.com"><img src="redhat.gif" alt="Red Hat Logo" /></a><div align="left"><a href="http://xmlsoft.org/XSLT/"><img src="Libxslt-Logo-180x168.gif" alt="Made with Libxslt Logo" /></a></div></td><td><table border="0" width="90%" cellpadding="2" cellspacing="0" align="center" bgcolor="#000000"><tr><td><table width="100%" border="0" cellspacing="1" cellpadding="3" bgcolor="#fffacd"><tr><td align="center"><h1>The XSLT C library for Gnome</h1><h2>Contributions</h2></td></tr></table></td></tr></table></td></tr></table><table border="0" cellpadding="4" cellspacing="0" width="100%" align="center"><tr><td bgcolor="#8b7765"><table border="0" cellspacing="0" cellpadding="2" width="100%"><tr><td valign="top" width="200" bgcolor="#8b7765"><table border="0" cellspacing="0" cellpadding="1" width="100%" bgcolor="#000000"><tr><td><table width="100%" border="0" cellspacing="1" cellpadding="3"><tr><td colspan="1" bgcolor="#eecfa1" align="center"><center><b>Main Menu</b></center></td></tr><tr><td bgcolor="#fffacd"><form action="search.php" enctype="application/x-www-form-urlencoded" method="get"><input name="query" type="text" size="20" value="" /><input name="submit" type="submit" value="Search ..." /></form><ul><li><a href="index.html">Home</a></li><li><a href="http://xmlsoft.org/wiki">Wiki</a></li><li><a href="intro.html">Introduction</a></li><li><a href="docs.html">Documentation</a></li><li><a href="bugs.html">Reporting bugs and getting help</a></li><li><a href="help.html">How to help</a></li><li><a href="downloads.html">Downloads</a></li><li><a href="FAQ.html">FAQ</a></li><li><a href="news.html">News</a></li><li><a href="xsltproc2.html">The xsltproc tool</a></li><li><a href="docbook.html">DocBook</a></li><li><a href="API.html">The programming API</a></li><li><a href="python.html">Python and bindings</a></li><li><a href="internals.html">Library internals</a></li><li><a href="extensions.html">Writing extensions</a></li><li><a href="contribs.html">Contributions</a></li><li><a href="EXSLT/index.html" style="font-weight:bold">libexslt</a></li><li><a href="xslt.html">flat page</a>, <a href="site.xsl">stylesheet</a></li><li><a href="html/index.html" style="font-weight:bold">API Menu</a></li><li><a href="ChangeLog.html">ChangeLog</a></li></ul></td></tr></table><table width="100%" border="0" cellspacing="1" cellpadding="3"><tr><td colspan="1" bgcolor="#eecfa1" align="center"><center><b>Related links</b></center></td></tr><tr><td bgcolor="#fffacd"><ul><li><a href="tutorial/libxslttutorial.html">Tutorial</a>,
-          <a href="tutorial2/libxslt_pipes.html">Tutorial2</a></li><li><a href="xsltproc.html">Man page for xsltproc</a></li><li><a href="http://mail.gnome.org/archives/xslt/">Mail archive</a></li><li><a href="http://xmlsoft.org/">XML libxml2</a></li><li><a href="ftp://xmlsoft.org/">FTP</a></li><li><a href="http://www.zlatkovic.com/projects/libxml/">Windows binaries</a></li><li><a href="http://garypennington.net/libxml2/">Solaris binaries</a></li><li><a href="http://www.explain.com.au/oss/libxml2xslt.html">MacOsX binaries</a></li><li><a href="http://bugzilla.gnome.org/buglist.cgi?product=libxslt">Bug Tracker</a></li><li><a href="http://www.zend.com/php5/articles/php5-xmlphp.php#Heading17">XSLT with PHP</a></li><li><a href="http://www.mod-xslt2.com/">Apache module</a></li><li><a href="http://sourceforge.net/projects/libxml2-pas/">Pascal bindings</a></li><li><a href="http://xsldbg.sourceforge.net/">Xsldbg Debugger</a></li></ul></td></tr></table><table width="100%" border="0" cellspacing="1" cellpadding="3"><tr><td colspan="1" bgcolor="#eecfa1" align="center"><center><b>API Indexes</b></center></td></tr><tr><td bgcolor="#fffacd"><ul><li><a href="APIchunk0.html">Alphabetic</a></li><li><a href="APIconstructors.html">Constructors</a></li><li><a href="APIfunctions.html">Functions/Types</a></li><li><a href="APIfiles.html">Modules</a></li><li><a href="APIsymbols.html">Symbols</a></li></ul></td></tr></table></td></tr></table></td><td valign="top" bgcolor="#8b7765"><table border="0" cellspacing="0" cellpadding="1" width="100%"><tr><td><table border="0" cellspacing="0" cellpadding="1" width="100%" bgcolor="#000000"><tr><td><table border="0" cellpadding="3" cellspacing="1" width="100%"><tr><td bgcolor="#fffacd"><ul><li>Bjorn Reese is the author of the number support and worked on the
-    XSLTMark support</li>
-  <li>William Brack was an early adopted, contributed a number of patches and
-    spent quite some time debugging non-trivial problems in early versions of
-    libxslt</li>
-  <li><a href="mailto:igor@zlatkovic.com">Igor  Zlatkovic</a> is now the
-    maintainer of the Windows port, <a href="http://www.zlatkovic.com/projects/libxml/index.html">he provides
-    binaries</a></li>
-  <li>Thomas Broyer provided a lot of suggestions, and drafted most of the
-    extension API</li>
-  <li>John Fleck maintains <a href="tutorial/libxslttutorial.html">a tutorial
-    for libxslt</a></li>
-  <li><a href="http://mail.gnome.org/archives/xml/2001-March/msg00014.html">Matt
-    Sergeant</a> developed <a href="http://axkit.org/download/">XML::LibXSLT</a>, a perl wrapper for
-    libxml2/libxslt as part of the <a href="http://axkit.com/">AxKit XML
-    application server</a></li>
-  <li>there is a module for <a href="http://acs-misc.sourceforge.net/nsxml.html">libxml/libxslt support
-    in OpenNSD/AOLServer</a></li>
-  <li><a href="mailto:dkuhlman@cutter.rexx.com">Dave Kuhlman</a> provides
-    libxml/libxslt <a href="http://www.rexx.com/~dkuhlman">wrappers for
-    Python</a></li>
-  <li><a href="mailto:Steve.Ball@explain.com.au">Steve Ball</a>, and
-    contributors maintain <a href="http://tclxml.sourceforge.net/">tcl
-    bindings for libxml2 and libxslt</a>, as well as <a href="http://tclxml.sf.net/tkxmllint.html">tkxmllint</a> a GUI for
-    xmllint and <a href="http://tclxml.sf.net/tkxsltproc.html">tkxsltproc</a>
-    a GUI for xsltproc.</li>
-  <li>If you want to use libxslt in a Mac OS X/Cocoa or Objective-C
-    framework, Marc Liyanage provides <a href="http://www.entropy.ch/software/macosx/#testxslt">an application
-    TestXSLT for XSLT and XML editing</a> including wrapper classes for the
-    XML parser and XSLT processor.</li>
+          <a href="tutorial2/libxslt_pipes.html">Tutorial2</a></li><li><a href="xsltproc.html">Man page for xsltproc</a></li><li><a href="http://mail.gnome.org/archives/xslt/">Mail archive</a></li><li><a href="http://xmlsoft.org/">XML libxml2</a></li><li><a href="ftp://xmlsoft.org/">FTP</a></li><li><a href="http://www.zlatkovic.com/projects/libxml/">Windows binaries</a></li><li><a href="http://garypennington.net/libxml2/">Solaris binaries</a></li><li><a href="http://www.explain.com.au/oss/libxml2xslt.html">MacOsX binaries</a></li><li><a href="http://bugzilla.gnome.org/buglist.cgi?product=libxslt">Bug Tracker</a></li><li><a href="http://www.zend.com/php5/articles/php5-xmlphp.php#Heading17">XSLT with PHP</a></li><li><a href="http://www.mod-xslt2.com/">Apache module</a></li><li><a href="http://sourceforge.net/projects/libxml2-pas/">Pascal bindings</a></li><li><a href="http://xsldbg.sourceforge.net/">Xsldbg Debugger</a></li></ul></td></tr></table><table width="100%" border="0" cellspacing="1" cellpadding="3"><tr><td colspan="1" bgcolor="#eecfa1" align="center"><center><b>API Indexes</b></center></td></tr><tr><td bgcolor="#fffacd"><ul><li><a href="APIchunk0.html">Alphabetic</a></li><li><a href="APIconstructors.html">Constructors</a></li><li><a href="APIfunctions.html">Functions/Types</a></li><li><a href="APIfiles.html">Modules</a></li><li><a href="APIsymbols.html">Symbols</a></li></ul></td></tr></table></td></tr></table></td><td valign="top" bgcolor="#8b7765"><table border="0" cellspacing="0" cellpadding="1" width="100%"><tr><td><table border="0" cellspacing="0" cellpadding="1" width="100%" bgcolor="#000000"><tr><td><table border="0" cellpadding="3" cellspacing="1" width="100%"><tr><td bgcolor="#fffacd"><ul><li>Bjorn Reese is the author of the number support and worked on
+    theXSLTMark support</li>
+  <li>William Brack was an early adopted, contributed a number of patches
+    andspent quite some time debugging non-trivial problems in early versions
+    oflibxslt</li>
+  <li><a href="mailto:igor@zlatkovic.com">Igor  Zlatkovic</a>is now
+    themaintainer of the Windows port, <a href="http://www.zlatkovic.com/projects/libxml/index.html">he
+    providesbinaries</a></li>
+  <li>Thomas Broyer provided a lot of suggestions, and drafted most of
+    theextension API</li>
+  <li>John Fleck maintains <a href="tutorial/libxslttutorial.html">a
+    tutorialfor libxslt</a></li>
+  <li><a href="http://mail.gnome.org/archives/xml/2001-March/msg00014.html">MattSergeant</a>developed
+    <a href="http://axkit.org/download/">XML::LibXSLT</a>, a perl wrapper
+    forlibxml2/libxslt as part of the <a href="http://axkit.com/">AxKit
+    XMLapplication server</a></li>
+  <li>there is a module for <a href="http://acs-misc.sourceforge.net/nsxml.html">libxml/libxslt
+    supportin OpenNSD/AOLServer</a></li>
+  <li><a href="mailto:dkuhlman@cutter.rexx.com">Dave
+    Kuhlman</a>provideslibxml/libxslt <a href="http://www.rexx.com/~dkuhlman">wrappers forPython</a></li>
+  <li><a href="mailto:Steve.Ball@explain.com.au">Steve Ball</a>,
+    andcontributors maintain <a href="http://tclxml.sourceforge.net/">tclbindings for libxml2 and
+    libxslt</a>, as well as <a href="http://tclxml.sf.net/tkxmllint.html">tkxmllint</a>a GUI forxmllint
+    and <a href="http://tclxml.sf.net/tkxsltproc.html">tkxsltproc</a>a GUI
+    for xsltproc.</li>
+  <li>If you want to use libxslt in a Mac OS X/Cocoa or Objective-Cframework,
+    Marc Liyanage provides <a href="http://www.entropy.ch/software/macosx/#testxslt">an
+    applicationTestXSLT for XSLT and XML editing</a>including wrapper classes
+    for theXML parser and XSLT processor.</li>
 </ul><p></p><p><a href="bugs.html">Daniel Veillard</a></p></td></tr></table></td></tr></table></td></tr></table></td></tr></table></td></tr></table></body></html>
index e881be6..27169b5 100644 (file)
@@ -8,56 +8,53 @@ H2 {font-family: Verdana,Arial,Helvetica}
 H3 {font-family: Verdana,Arial,Helvetica}
 A:link, A:visited, A:active { text-decoration: underline }
     </style><title>DocBook</title></head><body bgcolor="#8b7765" text="#000000" link="#a06060" vlink="#000000"><table border="0" width="100%" cellpadding="5" cellspacing="0" align="center"><tr><td width="120"><a href="http://swpat.ffii.org/"><img src="epatents.png" alt="Action against software patents" /></a></td><td width="180"><a href="http://www.gnome.org/"><img src="gnome2.png" alt="Gnome2 Logo" /></a><a href="http://www.w3.org/Status"><img src="w3c.png" alt="W3C logo" /></a><a href="http://www.redhat.com"><img src="redhat.gif" alt="Red Hat Logo" /></a><div align="left"><a href="http://xmlsoft.org/XSLT/"><img src="Libxslt-Logo-180x168.gif" alt="Made with Libxslt Logo" /></a></div></td><td><table border="0" width="90%" cellpadding="2" cellspacing="0" align="center" bgcolor="#000000"><tr><td><table width="100%" border="0" cellspacing="1" cellpadding="3" bgcolor="#fffacd"><tr><td align="center"><h1>The XSLT C library for Gnome</h1><h2>DocBook</h2></td></tr></table></td></tr></table></td></tr></table><table border="0" cellpadding="4" cellspacing="0" width="100%" align="center"><tr><td bgcolor="#8b7765"><table border="0" cellspacing="0" cellpadding="2" width="100%"><tr><td valign="top" width="200" bgcolor="#8b7765"><table border="0" cellspacing="0" cellpadding="1" width="100%" bgcolor="#000000"><tr><td><table width="100%" border="0" cellspacing="1" cellpadding="3"><tr><td colspan="1" bgcolor="#eecfa1" align="center"><center><b>Main Menu</b></center></td></tr><tr><td bgcolor="#fffacd"><form action="search.php" enctype="application/x-www-form-urlencoded" method="get"><input name="query" type="text" size="20" value="" /><input name="submit" type="submit" value="Search ..." /></form><ul><li><a href="index.html">Home</a></li><li><a href="http://xmlsoft.org/wiki">Wiki</a></li><li><a href="intro.html">Introduction</a></li><li><a href="docs.html">Documentation</a></li><li><a href="bugs.html">Reporting bugs and getting help</a></li><li><a href="help.html">How to help</a></li><li><a href="downloads.html">Downloads</a></li><li><a href="FAQ.html">FAQ</a></li><li><a href="news.html">News</a></li><li><a href="xsltproc2.html">The xsltproc tool</a></li><li><a href="docbook.html">DocBook</a></li><li><a href="API.html">The programming API</a></li><li><a href="python.html">Python and bindings</a></li><li><a href="internals.html">Library internals</a></li><li><a href="extensions.html">Writing extensions</a></li><li><a href="contribs.html">Contributions</a></li><li><a href="EXSLT/index.html" style="font-weight:bold">libexslt</a></li><li><a href="xslt.html">flat page</a>, <a href="site.xsl">stylesheet</a></li><li><a href="html/index.html" style="font-weight:bold">API Menu</a></li><li><a href="ChangeLog.html">ChangeLog</a></li></ul></td></tr></table><table width="100%" border="0" cellspacing="1" cellpadding="3"><tr><td colspan="1" bgcolor="#eecfa1" align="center"><center><b>Related links</b></center></td></tr><tr><td bgcolor="#fffacd"><ul><li><a href="tutorial/libxslttutorial.html">Tutorial</a>,
-          <a href="tutorial2/libxslt_pipes.html">Tutorial2</a></li><li><a href="xsltproc.html">Man page for xsltproc</a></li><li><a href="http://mail.gnome.org/archives/xslt/">Mail archive</a></li><li><a href="http://xmlsoft.org/">XML libxml2</a></li><li><a href="ftp://xmlsoft.org/">FTP</a></li><li><a href="http://www.zlatkovic.com/projects/libxml/">Windows binaries</a></li><li><a href="http://garypennington.net/libxml2/">Solaris binaries</a></li><li><a href="http://www.explain.com.au/oss/libxml2xslt.html">MacOsX binaries</a></li><li><a href="http://bugzilla.gnome.org/buglist.cgi?product=libxslt">Bug Tracker</a></li><li><a href="http://www.zend.com/php5/articles/php5-xmlphp.php#Heading17">XSLT with PHP</a></li><li><a href="http://www.mod-xslt2.com/">Apache module</a></li><li><a href="http://sourceforge.net/projects/libxml2-pas/">Pascal bindings</a></li><li><a href="http://xsldbg.sourceforge.net/">Xsldbg Debugger</a></li></ul></td></tr></table><table width="100%" border="0" cellspacing="1" cellpadding="3"><tr><td colspan="1" bgcolor="#eecfa1" align="center"><center><b>API Indexes</b></center></td></tr><tr><td bgcolor="#fffacd"><ul><li><a href="APIchunk0.html">Alphabetic</a></li><li><a href="APIconstructors.html">Constructors</a></li><li><a href="APIfunctions.html">Functions/Types</a></li><li><a href="APIfiles.html">Modules</a></li><li><a href="APIsymbols.html">Symbols</a></li></ul></td></tr></table></td></tr></table></td><td valign="top" bgcolor="#8b7765"><table border="0" cellspacing="0" cellpadding="1" width="100%"><tr><td><table border="0" cellspacing="0" cellpadding="1" width="100%" bgcolor="#000000"><tr><td><table border="0" cellpadding="3" cellspacing="1" width="100%"><tr><td bgcolor="#fffacd"><p><img src="duck.png" align="right" alt="The duck picture" /></p><p><a href="http://www.oasis-open.org/committees/docbook/">DocBook</a> is an
-XML/SGML vocabulary particularly well suited to books and papers about
-computer hardware and software.</p><p>xsltproc and libxslt are not specifically dependant on DocBook, but since
-a lot of people use xsltproc and libxml2 for DocBook formatting, here are a
-few pointers and informations which may be helpful:</p><ul><li>The <a href="http://www.oasis-open.org/committees/docbook/">DocBook
-    homepage at Oasis</a> you should find pointers there on all the lastest
-    versions of the DTDs and XSLT stylesheets</li>
-  <li><a href="http://www.docbook.org/">DocBook: The Definitive Guide</a> is
-    the official reference documentation for DocBook.</li>
-  <li><a href="https://sourceforge.net/docman/index.php?group_id=21935">DocBook
-    Open Repository</a> contains a lot of informations about DocBook</li>
-  <li>Bob Stayton provides a <a href="http://www.sagehill.net/">lot of
-    resources</a> and consulting services around DocBook.</li>
-  <li>Here is a <a href="/buildDocBookCatalog">shell script</a> to generate
-    XML Catalogs for DocBook 4.1.2 . If it can write to the /etc/xml/
-    directory, it will set-up /etc/xml/catalog and /etc/xml/docbook based on
-    the resources found on the system. Otherwise it will just create
-    ~/xmlcatalog and ~/dbkxmlcatalog and doing:
+          <a href="tutorial2/libxslt_pipes.html">Tutorial2</a></li><li><a href="xsltproc.html">Man page for xsltproc</a></li><li><a href="http://mail.gnome.org/archives/xslt/">Mail archive</a></li><li><a href="http://xmlsoft.org/">XML libxml2</a></li><li><a href="ftp://xmlsoft.org/">FTP</a></li><li><a href="http://www.zlatkovic.com/projects/libxml/">Windows binaries</a></li><li><a href="http://garypennington.net/libxml2/">Solaris binaries</a></li><li><a href="http://www.explain.com.au/oss/libxml2xslt.html">MacOsX binaries</a></li><li><a href="http://bugzilla.gnome.org/buglist.cgi?product=libxslt">Bug Tracker</a></li><li><a href="http://www.zend.com/php5/articles/php5-xmlphp.php#Heading17">XSLT with PHP</a></li><li><a href="http://www.mod-xslt2.com/">Apache module</a></li><li><a href="http://sourceforge.net/projects/libxml2-pas/">Pascal bindings</a></li><li><a href="http://xsldbg.sourceforge.net/">Xsldbg Debugger</a></li></ul></td></tr></table><table width="100%" border="0" cellspacing="1" cellpadding="3"><tr><td colspan="1" bgcolor="#eecfa1" align="center"><center><b>API Indexes</b></center></td></tr><tr><td bgcolor="#fffacd"><ul><li><a href="APIchunk0.html">Alphabetic</a></li><li><a href="APIconstructors.html">Constructors</a></li><li><a href="APIfunctions.html">Functions/Types</a></li><li><a href="APIfiles.html">Modules</a></li><li><a href="APIsymbols.html">Symbols</a></li></ul></td></tr></table></td></tr></table></td><td valign="top" bgcolor="#8b7765"><table border="0" cellspacing="0" cellpadding="1" width="100%"><tr><td><table border="0" cellspacing="0" cellpadding="1" width="100%" bgcolor="#000000"><tr><td><table border="0" cellpadding="3" cellspacing="1" width="100%"><tr><td bgcolor="#fffacd"><p><img src="duck.png" align="right" alt="The duck picture" /></p><p><a href="http://www.oasis-open.org/committees/docbook/">DocBook</a>is
+anXML/SGML vocabulary particularly well suited to books and papers
+aboutcomputer hardware and software.</p><p>xsltproc and libxslt are not specifically dependant on DocBook, but sincea
+lot of people use xsltproc and libxml2 for DocBook formatting, here are afew
+pointers and informations which may be helpful:</p><ul><li>The <a href="http://www.oasis-open.org/committees/docbook/">DocBookhomepage at
+    Oasis</a>you should find pointers there on all the lastestversions of the
+    DTDs and XSLT stylesheets</li>
+  <li><a href="http://www.docbook.org/">DocBook: The Definitive
+    Guide</a>isthe official reference documentation for DocBook.</li>
+  <li><a href="https://sourceforge.net/docman/index.php?group_id=21935">DocBookOpen
+    Repository</a>contains a lot of informations about DocBook</li>
+  <li>Bob Stayton provides a <a href="http://www.sagehill.net/">lot
+    ofresources</a>and consulting services around DocBook.</li>
+  <li>Here is a <a href="/buildDocBookCatalog">shell script</a>to generateXML
+    Catalogs for DocBook 4.1.2 . If it can write to the /etc/xml/directory,
+    it will set-up /etc/xml/catalog and /etc/xml/docbook based onthe
+    resources found on the system. Otherwise it will just create~/xmlcatalog
+    and ~/dbkxmlcatalog and doing:
     <p><code>export XMLCATALOG=$HOME/xmlcatalog</code></p>
-    <p>should allow to process DocBook documentations without requiring
-    network accesses for the DTd or stylesheets</p>
+    <p>should allow to process DocBook documentations without
+    requiringnetwork accesses for the DTd or stylesheets</p>
   </li>
-  <li>I have uploaded <a href="ftp://xmlsoft.org/libxml2/test/dbk412catalog.tar.gz">a
-    small tarball</a> containing XML Catalogs for DocBook 4.1.2 which seems
-    to work fine for me too</li>
-  <li>Informations on installing a <a href="http://ourworld.compuserve.com/homepages/hoenicka_markus/ntsgml.html">Windows
-    DocBook processing setup</a> based on Cygwin (using the binaries from the
-    official Windows port should be possible too)</li>
-  <li>Alexander Kirillov's page on <a href="http://www.math.sunysb.edu/~kirillov/dbxml/">Using DocBook XML
-    4.1.2</a> (RPM packages)</li>
-  <li>Tim Waugh's <a href="http://cyberelk.net/tim/xmlto/">xmlto front-end
-    conversion script</a></li>
-  <li>Linux Documentation Project <a href="http://www.linuxdoc.org/HOWTO/mini/DocBook-Install/">
-    DocBook-Install-mini-HOWTO</a></li>
-  <li>ScrollKeeper the open documentation cataloging project has a <a href="http://scrollkeeper.sourceforge.net/docbook.shtml">DocBook
-    section</a></li>
-  <li>Dan York presentation on <a href="http://www.lodestar2.com/people/dyork/talks/2001/xugo/docbook/index.html">Publishing
-    using DocBook XML</a></li>
-</ul><p>Do not use the --docbook option of xsltproc to process XML DocBook
-documents, this option is only intended to provide some (limited) support of
-the SGML version of DocBook.</p><p>Points which are not DocBook specific but still worth mentionning
-again:</p><ul><li>if you think DocBook processing time is too slow, make sure you have
-    XML Catalogs pointing to a local installation of the DTD of DocBook.
-    Check the <a href="http://xmlsoft.org/catalog.html">XML Catalog page</a>
-    to understand more on this subject.</li>
+  <li>I have uploaded <a href="ftp://xmlsoft.org/libxml2/test/dbk412catalog.tar.gz">asmall
+    tarball</a>containing XML Catalogs for DocBook 4.1.2 which seemsto work
+    fine for me too</li>
+  <li>Informations on installing a <a href="http://ourworld.compuserve.com/homepages/hoenicka_markus/ntsgml.html">WindowsDocBook
+    processing setup</a>based on Cygwin (using the binaries from theofficial
+    Windows port should be possible too)</li>
+  <li>Alexander Kirillov's page on <a href="http://www.math.sunysb.edu/~kirillov/dbxml/">Using DocBook
+    XML4.1.2</a>(RPM packages)</li>
+  <li>Tim Waugh's <a href="http://cyberelk.net/tim/xmlto/">xmlto
+    front-endconversion script</a></li>
+  <li>Linux Documentation Project <a href="http://www.linuxdoc.org/HOWTO/mini/DocBook-Install/">DocBook-Install-mini-HOWTO</a></li>
+  <li>ScrollKeeper the open documentation cataloging project has a <a href="http://scrollkeeper.sourceforge.net/docbook.shtml">DocBooksection</a></li>
+  <li>Dan York presentation on <a href="http://www.lodestar2.com/people/dyork/talks/2001/xugo/docbook/index.html">Publishingusing
+    DocBook XML</a></li>
+</ul><p>Do not use the --docbook option of xsltproc to process XML
+DocBookdocuments, this option is only intended to provide some (limited)
+support ofthe SGML version of DocBook.</p><p>Points which are not DocBook specific but still worth mentionningagain:</p><ul><li>if you think DocBook processing time is too slow, make sure you haveXML
+    Catalogs pointing to a local installation of the DTD of DocBook.Check the
+    <a href="http://xmlsoft.org/catalog.html">XML Catalog page</a>to
+    understand more on this subject.</li>
   <li>before processing a new document, use the command
     <p><code>xmllint --valid --noout path_to_document</code></p>
-    <p>to make sure that your input is valid DocBook. And fixes the errors
-    before processing further. Note that XSLT processing may work correctly
-    with some forms of validity errors left, but in general it can give
-    troubles on output.</p>
+    <p>to make sure that your input is valid DocBook. And fixes the
+    errorsbefore processing further. Note that XSLT processing may work
+    correctlywith some forms of validity errors left, but in general it can
+    givetroubles on output.</p>
   </li>
 </ul><p><a href="bugs.html">Daniel Veillard</a></p></td></tr></table></td></tr></table></td></tr></table></td></tr></table></td></tr></table></body></html>
index 3baabf3..e606bf6 100644 (file)
@@ -8,12 +8,11 @@ H2 {font-family: Verdana,Arial,Helvetica}
 H3 {font-family: Verdana,Arial,Helvetica}
 A:link, A:visited, A:active { text-decoration: underline }
     </style><title>Documentation</title></head><body bgcolor="#8b7765" text="#000000" link="#a06060" vlink="#000000"><table border="0" width="100%" cellpadding="5" cellspacing="0" align="center"><tr><td width="120"><a href="http://swpat.ffii.org/"><img src="epatents.png" alt="Action against software patents" /></a></td><td width="180"><a href="http://www.gnome.org/"><img src="gnome2.png" alt="Gnome2 Logo" /></a><a href="http://www.w3.org/Status"><img src="w3c.png" alt="W3C logo" /></a><a href="http://www.redhat.com"><img src="redhat.gif" alt="Red Hat Logo" /></a><div align="left"><a href="http://xmlsoft.org/XSLT/"><img src="Libxslt-Logo-180x168.gif" alt="Made with Libxslt Logo" /></a></div></td><td><table border="0" width="90%" cellpadding="2" cellspacing="0" align="center" bgcolor="#000000"><tr><td><table width="100%" border="0" cellspacing="1" cellpadding="3" bgcolor="#fffacd"><tr><td align="center"><h1>The XSLT C library for Gnome</h1><h2>Documentation</h2></td></tr></table></td></tr></table></td></tr></table><table border="0" cellpadding="4" cellspacing="0" width="100%" align="center"><tr><td bgcolor="#8b7765"><table border="0" cellspacing="0" cellpadding="2" width="100%"><tr><td valign="top" width="200" bgcolor="#8b7765"><table border="0" cellspacing="0" cellpadding="1" width="100%" bgcolor="#000000"><tr><td><table width="100%" border="0" cellspacing="1" cellpadding="3"><tr><td colspan="1" bgcolor="#eecfa1" align="center"><center><b>Main Menu</b></center></td></tr><tr><td bgcolor="#fffacd"><form action="search.php" enctype="application/x-www-form-urlencoded" method="get"><input name="query" type="text" size="20" value="" /><input name="submit" type="submit" value="Search ..." /></form><ul><li><a href="index.html">Home</a></li><li><a href="http://xmlsoft.org/wiki">Wiki</a></li><li><a href="intro.html">Introduction</a></li><li><a href="docs.html">Documentation</a></li><li><a href="bugs.html">Reporting bugs and getting help</a></li><li><a href="help.html">How to help</a></li><li><a href="downloads.html">Downloads</a></li><li><a href="FAQ.html">FAQ</a></li><li><a href="news.html">News</a></li><li><a href="xsltproc2.html">The xsltproc tool</a></li><li><a href="docbook.html">DocBook</a></li><li><a href="API.html">The programming API</a></li><li><a href="python.html">Python and bindings</a></li><li><a href="internals.html">Library internals</a></li><li><a href="extensions.html">Writing extensions</a></li><li><a href="contribs.html">Contributions</a></li><li><a href="EXSLT/index.html" style="font-weight:bold">libexslt</a></li><li><a href="xslt.html">flat page</a>, <a href="site.xsl">stylesheet</a></li><li><a href="html/index.html" style="font-weight:bold">API Menu</a></li><li><a href="ChangeLog.html">ChangeLog</a></li></ul></td></tr></table><table width="100%" border="0" cellspacing="1" cellpadding="3"><tr><td colspan="1" bgcolor="#eecfa1" align="center"><center><b>Related links</b></center></td></tr><tr><td bgcolor="#fffacd"><ul><li><a href="tutorial/libxslttutorial.html">Tutorial</a>,
-          <a href="tutorial2/libxslt_pipes.html">Tutorial2</a></li><li><a href="xsltproc.html">Man page for xsltproc</a></li><li><a href="http://mail.gnome.org/archives/xslt/">Mail archive</a></li><li><a href="http://xmlsoft.org/">XML libxml2</a></li><li><a href="ftp://xmlsoft.org/">FTP</a></li><li><a href="http://www.zlatkovic.com/projects/libxml/">Windows binaries</a></li><li><a href="http://garypennington.net/libxml2/">Solaris binaries</a></li><li><a href="http://www.explain.com.au/oss/libxml2xslt.html">MacOsX binaries</a></li><li><a href="http://bugzilla.gnome.org/buglist.cgi?product=libxslt">Bug Tracker</a></li><li><a href="http://www.zend.com/php5/articles/php5-xmlphp.php#Heading17">XSLT with PHP</a></li><li><a href="http://www.mod-xslt2.com/">Apache module</a></li><li><a href="http://sourceforge.net/projects/libxml2-pas/">Pascal bindings</a></li><li><a href="http://xsldbg.sourceforge.net/">Xsldbg Debugger</a></li></ul></td></tr></table><table width="100%" border="0" cellspacing="1" cellpadding="3"><tr><td colspan="1" bgcolor="#eecfa1" align="center"><center><b>API Indexes</b></center></td></tr><tr><td bgcolor="#fffacd"><ul><li><a href="APIchunk0.html">Alphabetic</a></li><li><a href="APIconstructors.html">Constructors</a></li><li><a href="APIfunctions.html">Functions/Types</a></li><li><a href="APIfiles.html">Modules</a></li><li><a href="APIsymbols.html">Symbols</a></li></ul></td></tr></table></td></tr></table></td><td valign="top" bgcolor="#8b7765"><table border="0" cellspacing="0" cellpadding="1" width="100%"><tr><td><table border="0" cellspacing="0" cellpadding="1" width="100%" bgcolor="#000000"><tr><td><table border="0" cellpadding="3" cellspacing="1" width="100%"><tr><td bgcolor="#fffacd"><p>There are some on-line resources about using libxslt:</p><ol><li>Check the <a href="html/libxslt-lib.html#LIBXSLT-LIB">API
-    documentation</a> automatically extracted from code comments (using the
-    program apibuild.py, developed for libxml, together with the xsl script
-    'newapi.xsl' and the libxslt xsltproc program).</li>
-  <li>Look at the <a href="http://mail.gnome.org/archives/xslt/">mailing-list
-    archive</a>.</li>
-  <li>Of course since libxslt is based on libxml, it's a good idea to at
-    least read <a href="http://xmlsoft.org/">libxml description</a></li>
+          <a href="tutorial2/libxslt_pipes.html">Tutorial2</a></li><li><a href="xsltproc.html">Man page for xsltproc</a></li><li><a href="http://mail.gnome.org/archives/xslt/">Mail archive</a></li><li><a href="http://xmlsoft.org/">XML libxml2</a></li><li><a href="ftp://xmlsoft.org/">FTP</a></li><li><a href="http://www.zlatkovic.com/projects/libxml/">Windows binaries</a></li><li><a href="http://garypennington.net/libxml2/">Solaris binaries</a></li><li><a href="http://www.explain.com.au/oss/libxml2xslt.html">MacOsX binaries</a></li><li><a href="http://bugzilla.gnome.org/buglist.cgi?product=libxslt">Bug Tracker</a></li><li><a href="http://www.zend.com/php5/articles/php5-xmlphp.php#Heading17">XSLT with PHP</a></li><li><a href="http://www.mod-xslt2.com/">Apache module</a></li><li><a href="http://sourceforge.net/projects/libxml2-pas/">Pascal bindings</a></li><li><a href="http://xsldbg.sourceforge.net/">Xsldbg Debugger</a></li></ul></td></tr></table><table width="100%" border="0" cellspacing="1" cellpadding="3"><tr><td colspan="1" bgcolor="#eecfa1" align="center"><center><b>API Indexes</b></center></td></tr><tr><td bgcolor="#fffacd"><ul><li><a href="APIchunk0.html">Alphabetic</a></li><li><a href="APIconstructors.html">Constructors</a></li><li><a href="APIfunctions.html">Functions/Types</a></li><li><a href="APIfiles.html">Modules</a></li><li><a href="APIsymbols.html">Symbols</a></li></ul></td></tr></table></td></tr></table></td><td valign="top" bgcolor="#8b7765"><table border="0" cellspacing="0" cellpadding="1" width="100%"><tr><td><table border="0" cellspacing="0" cellpadding="1" width="100%" bgcolor="#000000"><tr><td><table border="0" cellpadding="3" cellspacing="1" width="100%"><tr><td bgcolor="#fffacd"><p>There are some on-line resources about using libxslt:</p><ol><li>Check the <a href="html/libxslt-lib.html#LIBXSLT-LIB">APIdocumentation</a>automatically
+    extracted from code comments (using theprogram apibuild.py, developed for
+    libxml, together with the xsl script'newapi.xsl' and the libxslt xsltproc
+    program).</li>
+  <li>Look at the <a href="http://mail.gnome.org/archives/xslt/">mailing-listarchive</a>.</li>
+  <li>Of course since libxslt is based on libxml, it's a good idea to atleast
+    read <a href="http://xmlsoft.org/">libxml description</a></li>
 </ol><p><a href="bugs.html">Daniel Veillard</a></p></td></tr></table></td></tr></table></td></tr></table></td></tr></table></td></tr></table></body></html>
index 7e5b09f..31c055d 100644 (file)
@@ -8,23 +8,21 @@ H2 {font-family: Verdana,Arial,Helvetica}
 H3 {font-family: Verdana,Arial,Helvetica}
 A:link, A:visited, A:active { text-decoration: underline }
     </style><title>Downloads</title></head><body bgcolor="#8b7765" text="#000000" link="#a06060" vlink="#000000"><table border="0" width="100%" cellpadding="5" cellspacing="0" align="center"><tr><td width="120"><a href="http://swpat.ffii.org/"><img src="epatents.png" alt="Action against software patents" /></a></td><td width="180"><a href="http://www.gnome.org/"><img src="gnome2.png" alt="Gnome2 Logo" /></a><a href="http://www.w3.org/Status"><img src="w3c.png" alt="W3C logo" /></a><a href="http://www.redhat.com"><img src="redhat.gif" alt="Red Hat Logo" /></a><div align="left"><a href="http://xmlsoft.org/XSLT/"><img src="Libxslt-Logo-180x168.gif" alt="Made with Libxslt Logo" /></a></div></td><td><table border="0" width="90%" cellpadding="2" cellspacing="0" align="center" bgcolor="#000000"><tr><td><table width="100%" border="0" cellspacing="1" cellpadding="3" bgcolor="#fffacd"><tr><td align="center"><h1>The XSLT C library for Gnome</h1><h2>Downloads</h2></td></tr></table></td></tr></table></td></tr></table><table border="0" cellpadding="4" cellspacing="0" width="100%" align="center"><tr><td bgcolor="#8b7765"><table border="0" cellspacing="0" cellpadding="2" width="100%"><tr><td valign="top" width="200" bgcolor="#8b7765"><table border="0" cellspacing="0" cellpadding="1" width="100%" bgcolor="#000000"><tr><td><table width="100%" border="0" cellspacing="1" cellpadding="3"><tr><td colspan="1" bgcolor="#eecfa1" align="center"><center><b>Main Menu</b></center></td></tr><tr><td bgcolor="#fffacd"><form action="search.php" enctype="application/x-www-form-urlencoded" method="get"><input name="query" type="text" size="20" value="" /><input name="submit" type="submit" value="Search ..." /></form><ul><li><a href="index.html">Home</a></li><li><a href="http://xmlsoft.org/wiki">Wiki</a></li><li><a href="intro.html">Introduction</a></li><li><a href="docs.html">Documentation</a></li><li><a href="bugs.html">Reporting bugs and getting help</a></li><li><a href="help.html">How to help</a></li><li><a href="downloads.html">Downloads</a></li><li><a href="FAQ.html">FAQ</a></li><li><a href="news.html">News</a></li><li><a href="xsltproc2.html">The xsltproc tool</a></li><li><a href="docbook.html">DocBook</a></li><li><a href="API.html">The programming API</a></li><li><a href="python.html">Python and bindings</a></li><li><a href="internals.html">Library internals</a></li><li><a href="extensions.html">Writing extensions</a></li><li><a href="contribs.html">Contributions</a></li><li><a href="EXSLT/index.html" style="font-weight:bold">libexslt</a></li><li><a href="xslt.html">flat page</a>, <a href="site.xsl">stylesheet</a></li><li><a href="html/index.html" style="font-weight:bold">API Menu</a></li><li><a href="ChangeLog.html">ChangeLog</a></li></ul></td></tr></table><table width="100%" border="0" cellspacing="1" cellpadding="3"><tr><td colspan="1" bgcolor="#eecfa1" align="center"><center><b>Related links</b></center></td></tr><tr><td bgcolor="#fffacd"><ul><li><a href="tutorial/libxslttutorial.html">Tutorial</a>,
-          <a href="tutorial2/libxslt_pipes.html">Tutorial2</a></li><li><a href="xsltproc.html">Man page for xsltproc</a></li><li><a href="http://mail.gnome.org/archives/xslt/">Mail archive</a></li><li><a href="http://xmlsoft.org/">XML libxml2</a></li><li><a href="ftp://xmlsoft.org/">FTP</a></li><li><a href="http://www.zlatkovic.com/projects/libxml/">Windows binaries</a></li><li><a href="http://garypennington.net/libxml2/">Solaris binaries</a></li><li><a href="http://www.explain.com.au/oss/libxml2xslt.html">MacOsX binaries</a></li><li><a href="http://bugzilla.gnome.org/buglist.cgi?product=libxslt">Bug Tracker</a></li><li><a href="http://www.zend.com/php5/articles/php5-xmlphp.php#Heading17">XSLT with PHP</a></li><li><a href="http://www.mod-xslt2.com/">Apache module</a></li><li><a href="http://sourceforge.net/projects/libxml2-pas/">Pascal bindings</a></li><li><a href="http://xsldbg.sourceforge.net/">Xsldbg Debugger</a></li></ul></td></tr></table><table width="100%" border="0" cellspacing="1" cellpadding="3"><tr><td colspan="1" bgcolor="#eecfa1" align="center"><center><b>API Indexes</b></center></td></tr><tr><td bgcolor="#fffacd"><ul><li><a href="APIchunk0.html">Alphabetic</a></li><li><a href="APIconstructors.html">Constructors</a></li><li><a href="APIfunctions.html">Functions/Types</a></li><li><a href="APIfiles.html">Modules</a></li><li><a href="APIsymbols.html">Symbols</a></li></ul></td></tr></table></td></tr></table></td><td valign="top" bgcolor="#8b7765"><table border="0" cellspacing="0" cellpadding="1" width="100%"><tr><td><table border="0" cellspacing="0" cellpadding="1" width="100%" bgcolor="#000000"><tr><td><table border="0" cellpadding="3" cellspacing="1" width="100%"><tr><td bgcolor="#fffacd"><p>The latest versions of libxslt can be found on the <a href="ftp://xmlsoft.org/libxslt/">xmlsoft.org</a> server and on mirrors (<a href="ftp://fr.rpmfind.net/pub/libxml/">France</a>) or on the <a href="ftp://ftp.gnome.org/pub/GNOME/MIRRORS.html">Gnome FTP server</a> as a
-<a href="ftp://ftp.gnome.org/pub/GNOME/sources/libxslt/1.1/">source
-archive</a>, Antonin Sprinzl also provides <a href="ftp://gd.tuwien.ac.at/pub/libxml/">a mirror in Austria</a>. (NOTE that
-you need the <a href="http://rpmfind.net/linux/RPM/libxml2.html">libxml2</a>,
-<a href="http://rpmfind.net/linux/RPM/libxml2-devel.html">libxml2-devel</a>,
-<a href="http://rpmfind.net/linux/RPM/libxslt.html">libxslt</a> and <a href="http://rpmfind.net/linux/RPM/libxslt-devel.html">libxslt-devel</a>
-packages installed to compile applications using libxslt.) <a href="mailto:igor@zlatkovic.com">Igor Zlatkovic</a> is now the maintainer of
-the Windows port, <a href="http://www.zlatkovic.com/projects/libxml/index.html">he provides
-binaries</a>. <a href="mailto:Gary.Pennington@sun.com">Gary Pennington</a>
-provides <a href="http://garypennington.net/libxml2/">Solaris binaries</a>.
-<a href="mailto:Steve.Ball@explain.com.au">Steve Ball</a> provides <a href="http://www.explain.com.au/oss/libxml2xslt.html">Mac Os X
-binaries</a>.</p><p><a name="Contribs" id="Contribs">Contribs:</a></p><p>I do accept external contributions, especially if compiling on another
-platform, get in touch with me to upload the package. I will keep them in the
-<a href="ftp://xmlsoft.org/libxml2/contribs/">contrib directory</a></p><p>Libxslt is also available from CVS:</p><ul><li><p>The <a href="http://cvs.gnome.org/viewcvs/libxslt/">Gnome CVS
-    base</a>. Check the <a href="http://developer.gnome.org/tools/cvs.html">Gnome CVS Tools</a>
-    page; the CVS module is <b>libxslt</b>.</p>
+          <a href="tutorial2/libxslt_pipes.html">Tutorial2</a></li><li><a href="xsltproc.html">Man page for xsltproc</a></li><li><a href="http://mail.gnome.org/archives/xslt/">Mail archive</a></li><li><a href="http://xmlsoft.org/">XML libxml2</a></li><li><a href="ftp://xmlsoft.org/">FTP</a></li><li><a href="http://www.zlatkovic.com/projects/libxml/">Windows binaries</a></li><li><a href="http://garypennington.net/libxml2/">Solaris binaries</a></li><li><a href="http://www.explain.com.au/oss/libxml2xslt.html">MacOsX binaries</a></li><li><a href="http://bugzilla.gnome.org/buglist.cgi?product=libxslt">Bug Tracker</a></li><li><a href="http://www.zend.com/php5/articles/php5-xmlphp.php#Heading17">XSLT with PHP</a></li><li><a href="http://www.mod-xslt2.com/">Apache module</a></li><li><a href="http://sourceforge.net/projects/libxml2-pas/">Pascal bindings</a></li><li><a href="http://xsldbg.sourceforge.net/">Xsldbg Debugger</a></li></ul></td></tr></table><table width="100%" border="0" cellspacing="1" cellpadding="3"><tr><td colspan="1" bgcolor="#eecfa1" align="center"><center><b>API Indexes</b></center></td></tr><tr><td bgcolor="#fffacd"><ul><li><a href="APIchunk0.html">Alphabetic</a></li><li><a href="APIconstructors.html">Constructors</a></li><li><a href="APIfunctions.html">Functions/Types</a></li><li><a href="APIfiles.html">Modules</a></li><li><a href="APIsymbols.html">Symbols</a></li></ul></td></tr></table></td></tr></table></td><td valign="top" bgcolor="#8b7765"><table border="0" cellspacing="0" cellpadding="1" width="100%"><tr><td><table border="0" cellspacing="0" cellpadding="1" width="100%" bgcolor="#000000"><tr><td><table border="0" cellpadding="3" cellspacing="1" width="100%"><tr><td bgcolor="#fffacd"><p>The latest versions of libxslt can be found on the <a href="ftp://xmlsoft.org/libxslt/">xmlsoft.org</a>server and on mirrors (<a href="ftp://fr.rpmfind.net/pub/libxml/">France</a>) or on the <a href="ftp://ftp.gnome.org/pub/GNOME/MIRRORS.html">Gnome FTP server</a>as a<a href="ftp://ftp.gnome.org/pub/GNOME/sources/libxslt/1.1/">sourcearchive</a>,
+Antonin Sprinzl also provides <a href="ftp://gd.tuwien.ac.at/pub/libxml/">a
+mirror in Austria</a>. (NOTE thatyou need the <a href="http://rpmfind.net/linux/RPM/libxml2.html">libxml2</a>,<a href="http://rpmfind.net/linux/RPM/libxml2-devel.html">libxml2-devel</a>,<a href="http://rpmfind.net/linux/RPM/libxslt.html">libxslt</a>and <a href="http://rpmfind.net/linux/RPM/libxslt-devel.html">libxslt-devel</a>packages
+installed to compile applications using libxslt.) <a href="mailto:igor@zlatkovic.com">Igor Zlatkovic</a>is now the maintainer
+ofthe Windows port, <a href="http://www.zlatkovic.com/projects/libxml/index.html">he
+providesbinaries</a>. <a href="mailto:Gary.Pennington@sun.com">Gary
+Pennington</a>provides <a href="http://garypennington.net/libxml2/">Solaris
+binaries</a>.<a href="mailto:Steve.Ball@explain.com.au">Steve
+Ball</a>provides <a href="http://www.explain.com.au/oss/libxml2xslt.html">Mac
+Os Xbinaries</a>.</p><p><a name="Contribs" id="Contribs">Contribs:</a></p><p>I do accept external contributions, especially if compiling on
+anotherplatform, get in touch with me to upload the package. I will keep them
+in the<a href="ftp://xmlsoft.org/libxml2/contribs/">contrib directory</a></p><p>Libxslt is also available from CVS:</p><ul><li><p>The <a href="http://cvs.gnome.org/viewcvs/libxslt/">Gnome
+    CVSbase</a>. Check the <a href="http://developer.gnome.org/tools/cvs.html">Gnome CVS Tools</a>page;
+    the CVS module is <b>libxslt</b>.</p>
   </li>
-  <li><a href="ftp://xmlsoft.org/libxml2/libxslt-cvs-snapshot.tar.gz">snapshots from
-    CVS</a> updated every hour are also provided</li>
+  <li><a href="ftp://xmlsoft.org/libxml2/libxslt-cvs-snapshot.tar.gz">snapshots
+    fromCVS</a>updated every hour are also provided</li>
 </ul><p><a href="bugs.html">Daniel Veillard</a></p></td></tr></table></td></tr></table></td></tr></table></td></tr></table></td></tr></table></body></html>
index aab2f42..ac06e7f 100644 (file)
@@ -13,54 +13,53 @@ A:link, A:visited, A:active { text-decoration: underline }
   <li><a href="extensions.html#Keep">Extension modules</a></li>
   <li><a href="extensions.html#Registerin">Registering a module</a></li>
   <li><a href="extensions.html#module">Loading a module</a></li>
-  <li><a href="extensions.html#Registerin1">Registering an extension
-    function</a></li>
-  <li><a href="extensions.html#Implementi">Implementing an extension
-    function</a></li>
-  <li><a href="extensions.html#Examples">Examples for extension
-  functions</a></li>
-  <li><a href="extensions.html#Registerin2">Registering an extension
-    element</a></li>
-  <li><a href="extensions.html#Implementi1">Implementing an extension
-    element</a></li>
-  <li><a href="extensions.html#Example">Example for extension
-  elements</a></li>
+  <li><a href="extensions.html#Registerin1">Registering an
+    extensionfunction</a></li>
+  <li><a href="extensions.html#Implementi">Implementing an
+    extensionfunction</a></li>
+  <li><a href="extensions.html#Examples">Examples for
+  extensionfunctions</a></li>
+  <li><a href="extensions.html#Registerin2">Registering an
+    extensionelement</a></li>
+  <li><a href="extensions.html#Implementi1">Implementing an
+    extensionelement</a></li>
+  <li><a href="extensions.html#Example">Example for extensionelements</a></li>
   <li><a href="extensions.html#shutdown">The shutdown of a module</a></li>
   <li><a href="extensions.html#Future">Future work</a></li>
-</ul><h3><a name="Introducti1" id="Introducti1">Introduction</a></h3><p>This document describes the work needed to write extensions to the
-standard XSLT library for use with <a href="http://xmlsoft.org/XSLT/">libxslt</a>, the <a href="http://www.w3.org/TR/xslt">XSLT</a> C library developed for the <a href="http://www.gnome.org/">Gnome</a> project.</p><p>Before starting reading this document it is highly recommended to get
-familiar with <a href="internals.html">the libxslt internals</a>.</p><p>Note: this documentation is by definition incomplete and I am not good at
-spelling, grammar, so patches and suggestions are <a href="mailto:veillard@redhat.com">really welcome</a>.</p><h3><a name="Basics" id="Basics">Basics</a></h3><p>The <a href="http://www.w3.org/TR/xslt">XSLT specification</a> provides
-two <a href="http://www.w3.org/TR/xslt">ways to extend an XSLT engine</a>:</p><ul><li>providing <a href="http://www.w3.org/TR/xslt">new extension
-    functions</a> which can be called from XPath expressions</li>
-  <li>providing <a href="http://www.w3.org/TR/xslt">new extension
-    elements</a> which can be inserted in stylesheets</li>
-</ul><p>In both cases the extensions need to be associated to a new namespace,
-i.e. an URI used as the name for the extension's namespace (there is no need
-to have a resource there for this to work).</p><p>libxslt provides a few extensions itself, either in the libxslt namespace
-"http://xmlsoft.org/XSLT/namespace" or in namespaces for other well known
-extensions provided by other XSLT processors like Saxon, Xalan or XT.</p><h3><a name="Keep" id="Keep">Extension modules</a></h3><p>Since extensions are bound to a namespace name, usually sets of extensions
-coming from a given source are using the same namespace name defining in
-practice a group of extensions providing elements, functions or both. From
-the libxslt point of view those are considered as an "extension module", and
-most of the APIs work at a module point of view.</p><p>Registration of new functions or elements are bound to the activation of
-the module. This is currently done by declaring the namespace as an extension
-by using the attribute  <code>extension-element-prefixes</code> on the
-<code><a href="http://www.w3.org/TR/xslt">xsl:stylesheet</a></code>
-element.</p><p>An extension module is defined by 3 objects:</p><ul><li>the namespace name associated</li>
+</ul><h3><a name="Introducti1" id="Introducti1">Introduction</a></h3><p>This document describes the work needed to write extensions to thestandard
+XSLT library for use with <a href="http://xmlsoft.org/XSLT/">libxslt</a>, the
+<a href="http://www.w3.org/TR/xslt">XSLT</a>C library developed for the <a href="http://www.gnome.org/">Gnome</a>project.</p><p>Before starting reading this document it is highly recommended to
+getfamiliar with <a href="internals.html">the libxslt internals</a>.</p><p>Note: this documentation is by definition incomplete and I am not good
+atspelling, grammar, so patches and suggestions are <a href="mailto:veillard@redhat.com">really welcome</a>.</p><h3><a name="Basics" id="Basics">Basics</a></h3><p>The <a href="http://www.w3.org/TR/xslt">XSLT specification</a>providestwo
+<a href="http://www.w3.org/TR/xslt">ways to extend an XSLT engine</a>:</p><ul><li>providing <a href="http://www.w3.org/TR/xslt">new
+    extensionfunctions</a>which can be called from XPath expressions</li>
+  <li>providing <a href="http://www.w3.org/TR/xslt">new
+    extensionelements</a>which can be inserted in stylesheets</li>
+</ul><p>In both cases the extensions need to be associated to a new namespace,i.e.
+an URI used as the name for the extension's namespace (there is no needto
+have a resource there for this to work).</p><p>libxslt provides a few extensions itself, either in the libxslt
+namespace"http://xmlsoft.org/XSLT/namespace" or in namespaces for other well
+knownextensions provided by other XSLT processors like Saxon, Xalan or XT.</p><h3><a name="Keep" id="Keep">Extension modules</a></h3><p>Since extensions are bound to a namespace name, usually sets of
+extensionscoming from a given source are using the same namespace name
+defining inpractice a group of extensions providing elements, functions or
+both. Fromthe libxslt point of view those are considered as an "extension
+module", andmost of the APIs work at a module point of view.</p><p>Registration of new functions or elements are bound to the activation
+ofthe module. This is currently done by declaring the namespace as an
+extensionby using the attribute  <code>extension-element-prefixes</code>on
+the<code><a href="http://www.w3.org/TR/xslt">xsl:stylesheet</a></code>element.</p><p>An extension module is defined by 3 objects:</p><ul><li>the namespace name associated</li>
   <li>an initialization function</li>
   <li>a shutdown function</li>
-</ul><h3><a name="Registerin" id="Registerin">Registering a module</a></h3><p>Currently a libxslt module has to be compiled within the application using
-libxslt. There is no code to load dynamically shared libraries associated to
-a namespace (this may be added but is likely to become a portability
-nightmare).</p><p>The current way to register a module is to link the code implementing it
-with the application and to call a registration function:</p><pre>int xsltRegisterExtModule(const xmlChar *URI,
+</ul><h3><a name="Registerin" id="Registerin">Registering a module</a></h3><p>Currently a libxslt module has to be compiled within the application
+usinglibxslt. There is no code to load dynamically shared libraries
+associated toa namespace (this may be added but is likely to become a
+portabilitynightmare).</p><p>The current way to register a module is to link the code implementing
+itwith the application and to call a registration function:</p><pre>int xsltRegisterExtModule(const xmlChar *URI,
                           xsltExtInitFunction initFunc,
-                          xsltExtShutdownFunction shutdownFunc);</pre><p>The associated header is read by:</p><pre>#include&lt;libxslt/extensions.h&gt;</pre><p>which also defines the type for the initialization and shutdown
-functions</p><h3><a name="module" id="module">Loading a module</a></h3><p>Once the module URI has been registered and if the XSLT processor detects
-that a given stylesheet needs the functionalities of an extended module, this
-one is initialized.</p><p>The xsltExtInitFunction type defines the interface for an initialization
-function:</p><pre>/**
+                          xsltExtShutdownFunction shutdownFunc);</pre><p>The associated header is read by:</p><pre>#include&lt;libxslt/extensions.h&gt;</pre><p>which also defines the type for the initialization and
+shutdownfunctions</p><h3><a name="module" id="module">Loading a module</a></h3><p>Once the module URI has been registered and if the XSLT processor
+detectsthat a given stylesheet needs the functionalities of an extended
+module, thisone is initialized.</p><p>The xsltExtInitFunction type defines the interface for an
+initializationfunction:</p><pre>/**
  * xsltExtInitFunction:
  * @ctxt:  an XSLT transformation context
  * @URI:  the namespace URI for the extension
@@ -72,30 +71,30 @@ function:</p><pre>/**
  * transformation
  */
 typedef void *(*xsltExtInitFunction)(xsltTransformContextPtr ctxt,
-                                     const xmlChar *URI);</pre><p>There are 3 things to notice:</p><ul><li>The function gets passed the namespace name URI as an argument. This
-    allows a single function to provide the initialization for multiple
-    logical modules.</li>
-  <li>It also gets passed a transformation context. The initialization is
-    done at run time before any processing occurs on the stylesheet but it
-    will be invoked separately each time for each transformation.</li>
-  <li>It returns a pointer.  This can be used to store module specific
-    information which can be retrieved later when a function or an element
-    from the extension is used.  An obvious example is a connection to a
-    database which should be kept and reused along with the transformation.
-    NULL is a perfectly valid return; there is no way to indicate a failure
-    at this level</li>
-</ul><p>What this function is expected to do is:</p><ul><li>prepare the context for this module (like opening the database
-    connection)</li>
+                                     const xmlChar *URI);</pre><p>There are 3 things to notice:</p><ul><li>The function gets passed the namespace name URI as an argument.
+    Thisallows a single function to provide the initialization for
+    multiplelogical modules.</li>
+  <li>It also gets passed a transformation context. The initialization isdone
+    at run time before any processing occurs on the stylesheet but itwill be
+    invoked separately each time for each transformation.</li>
+  <li>It returns a pointer.  This can be used to store module
+    specificinformation which can be retrieved later when a function or an
+    elementfrom the extension is used.  An obvious example is a connection to
+    adatabase which should be kept and reused along with the
+    transformation.NULL is a perfectly valid return; there is no way to
+    indicate a failureat this level</li>
+</ul><p>What this function is expected to do is:</p><ul><li>prepare the context for this module (like opening the
+    databaseconnection)</li>
   <li>register the extensions specific to this module</li>
 </ul><h3><a name="Registerin1" id="Registerin1">Registering an extension function</a></h3><p>There is a single call to do this registration:</p><pre>int xsltRegisterExtFunction(xsltTransformContextPtr ctxt,
                             const xmlChar *name,
                             const xmlChar *URI,
-                            xmlXPathEvalFunc function);</pre><p>The registration is bound to a single transformation instance referred by
-ctxt, name is the UTF8 encoded name for the NCName of the function, and URI
-is the namespace name for the extension (no checking is done, a module could
-register functions or elements from a different namespace, but it is not
-recommended).</p><h3><a name="Implementi" id="Implementi">Implementing an extension function</a></h3><p>The implementation of the function must have the signature of a libxml
-XPath function:</p><pre>/**
+                            xmlXPathEvalFunc function);</pre><p>The registration is bound to a single transformation instance referred
+byctxt, name is the UTF8 encoded name for the NCName of the function, and
+URIis the namespace name for the extension (no checking is done, a module
+couldregister functions or elements from a different namespace, but it is
+notrecommended).</p><h3><a name="Implementi" id="Implementi">Implementing an extension function</a></h3><p>The implementation of the function must have the signature of a
+libxmlXPath function:</p><pre>/**
  * xmlXPathEvalFunc:
  * @ctxt: an XPath parser context
  * @nargs: the number of arguments passed to the function
@@ -105,43 +104,43 @@ XPath function:</p><pre>/**
  */
 
 typedef void (*xmlXPathEvalFunc)(xmlXPathParserContextPtr ctxt,
-                                 int nargs);</pre><p>The context passed to an XPath function is not an XSLT context but an <a href="internals.html#XPath1">XPath context</a>. However it is possible to
-find one from the other:</p><ul><li>The function xsltXPathGetTransformContext provides this lookup facility:
+                                 int nargs);</pre><p>The context passed to an XPath function is not an XSLT context but an <a href="internals.html#XPath1">XPath context</a>. However it is possible tofind
+one from the other:</p><ul><li>The function xsltXPathGetTransformContext provides this lookup facility:
     <pre>xsltTransformContextPtr
          xsltXPathGetTransformContext
                           (xmlXPathParserContextPtr ctxt);</pre>
   </li>
-  <li>The <code>xmlXPathContextPtr</code> associated to an
-    <code>xsltTransformContext</code> is stored in the <code>xpathCtxt</code>
-    field.</li>
-</ul><p>The first thing an extension function may want to do is to check the
-arguments passed on the stack, the <code>nargs</code> parameter will tell how
-many of them were provided on the XPath expression. The macro valuePop will
-extract them from the XPath stack:</p><pre>#include &lt;libxml/xpath.h&gt;
+  <li>The <code>xmlXPathContextPtr</code>associated to
+    an<code>xsltTransformContext</code>is stored in the
+    <code>xpathCtxt</code>field.</li>
+</ul><p>The first thing an extension function may want to do is to check
+thearguments passed on the stack, the <code>nargs</code>parameter will tell
+howmany of them were provided on the XPath expression. The macro valuePop
+willextract them from the XPath stack:</p><pre>#include &lt;libxml/xpath.h&gt;
 #include &lt;libxml/xpathInternals.h&gt;
 
-xmlXPathObjectPtr obj = valuePop(ctxt); </pre><p>Note that <code>ctxt</code> is the XPath context not the XSLT one. It is
-then possible to examine the content of the value. Check <a href="internals.html#Descriptio">the description of XPath objects</a> if
-necessary. The following is a common sequence checking whether the argument
-passed is a string and converting it using the built-in XPath
-<code>string()</code> function if this is not the case:</p><pre>if (obj-&gt;type != XPATH_STRING) {
+xmlXPathObjectPtr obj = valuePop(ctxt); </pre><p>Note that <code>ctxt</code>is the XPath context not the XSLT one. It
+isthen possible to examine the content of the value. Check <a href="internals.html#Descriptio">the description of XPath
+objects</a>ifnecessary. The following is a common sequence checking whether
+the argumentpassed is a string and converting it using the built-in
+XPath<code>string()</code>function if this is not the case:</p><pre>if (obj-&gt;type != XPATH_STRING) {
     valuePush(ctxt, obj);
     xmlXPathStringFunction(ctxt, 1);
     obj = valuePop(ctxt);
-}</pre><p>Most common XPath functions are available directly at the C level and are
-exported either in <code>&lt;libxml/xpath.h&gt;</code> or in
-<code>&lt;libxml/xpathInternals.h&gt;</code>.</p><p>The extension function may also need to retrieve the data associated to
-this module instance (the database connection in the previous example) this
-can be done using the xsltGetExtData:</p><pre>void * xsltGetExtData(xsltTransformContextPtr ctxt,
-                      const xmlChar *URI);</pre><p>Again the URI to be provided is the one which was used when registering
-the module.</p><p>Once the function finishes, don't forget to:</p><ul><li>push the return value on the stack using <code>valuePush(ctxt,
-    obj)</code></li>
-  <li>deallocate the parameters passed to the function using
-    <code>xmlXPathFreeObject(obj)</code></li>
-</ul><h3><a name="Examples" id="Examples">Examples for extension functions</a></h3><p>The module libxslt/functions.c contains the sources of the XSLT built-in
-functions, including document(), key(), generate-id(), etc. as well as a full
-example module at the end. Here is the test function implementation for the
-libxslt:test function:</p><pre>/**
+}</pre><p>Most common XPath functions are available directly at the C level and
+areexported either in <code>&lt;libxml/xpath.h&gt;</code>or
+in<code>&lt;libxml/xpathInternals.h&gt;</code>.</p><p>The extension function may also need to retrieve the data associated
+tothis module instance (the database connection in the previous example)
+thiscan be done using the xsltGetExtData:</p><pre>void * xsltGetExtData(xsltTransformContextPtr ctxt,
+                      const xmlChar *URI);</pre><p>Again the URI to be provided is the one which was used when registeringthe
+module.</p><p>Once the function finishes, don't forget to:</p><ul><li>push the return value on the stack using
+    <code>valuePush(ctxt,obj)</code></li>
+  <li>deallocate the parameters passed to the function
+    using<code>xmlXPathFreeObject(obj)</code></li>
+</ul><h3><a name="Examples" id="Examples">Examples for extension functions</a></h3><p>The module libxslt/functions.c contains the sources of the XSLT
+built-infunctions, including document(), key(), generate-id(), etc. as well
+as a fullexample module at the end. Here is the test function implementation
+for thelibxslt:test function:</p><pre>/**
  * xsltExtFunctionTest:
  * @ctxt:  the XPath Parser context
  * @nargs:  the number of arguments
@@ -173,13 +172,14 @@ xsltExtFunctionTest(xmlXPathParserContextPtr ctxt, int nargs)
 }</pre><h3><a name="Registerin2" id="Registerin2">Registering an extension element</a></h3><p>There is a single call to do this registration:</p><pre>int xsltRegisterExtElement(xsltTransformContextPtr ctxt,
                            const xmlChar *name,
                            const xmlChar *URI,
-                           xsltTransformFunction function);</pre><p>It is similar to the mechanism used to register an extension function,
-except that the signature of an extension element implementation is
-different.</p><p>The registration is bound to a single transformation instance referred to
-by ctxt, name is the UTF8 encoded name for the NCName of the element, and URI
-is the namespace name for the extension (no checking is done, a module could
-register elements for a different namespace, but it is not recommended).</p><h3><a name="Implementi1" id="Implementi1">Implementing an extension element</a></h3><p>The implementation of the element must have the signature of an XSLT
-transformation function:</p><pre>/** 
+                           xsltTransformFunction function);</pre><p>It is similar to the mechanism used to register an extension
+function,except that the signature of an extension element implementation
+isdifferent.</p><p>The registration is bound to a single transformation instance referred
+toby ctxt, name is the UTF8 encoded name for the NCName of the element, and
+URIis the namespace name for the extension (no checking is done, a module
+couldregister elements for a different namespace, but it is not
+recommended).</p><h3><a name="Implementi1" id="Implementi1">Implementing an extension element</a></h3><p>The implementation of the element must have the signature of an
+XSLTtransformation function:</p><pre>/** 
  * xsltTransformFunction: 
  * @ctxt: the XSLT transformation context
  * @node: the input node
@@ -193,27 +193,27 @@ typedef void (*xsltTransformFunction)
                           (xsltTransformContextPtr ctxt,
                            xmlNodePtr node,
                            xmlNodePtr inst,
-                           xsltStylePreCompPtr comp);</pre><p>The first argument is the XSLT transformation context. The second and
-third arguments are xmlNodePtr i.e. internal memory <a href="internals.html#libxml">representation of  XML nodes</a>. They are
-respectively <code>node</code> from the the input document being transformed
-by the stylesheet and <code>inst</code> the extension element in the
-stylesheet. The last argument is <code>comp</code> a pointer to a precompiled
-representation of <code>inst</code> but usually for an extension function
-this value is <code>NULL</code> by default (it could be added and associated
-to the instruction in <code>inst-&gt;_private</code>).</p><p>The same functions are available from a function implementing an extension
-element as in an extension function, including
-<code>xsltGetExtData()</code>.</p><p>The goal of an extension element being usually to enrich the generated
-output, it is expected that they will grow the currently generated output
-tree. This can be done by grabbing ctxt-&gt;insert which is the current
-libxml node being generated (Note this can also be the intermediate value
-tree being built for example to initialize a variable, the processing should
-be similar). The functions for libxml tree manipulation from <a href="http://xmlsoft.org/html/libxml-tree.html">&lt;libxml/tree.h&gt;</a> can
-be employed to extend or modify the tree, but it is required to preserve the
-insertion node and its ancestors since there are existing pointers to those
-elements still in use in the XSLT template execution stack.</p><h3><a name="Example" id="Example">Example for extension elements</a></h3><p>The module libxslt/transform.c contains the sources of the XSLT built-in
-elements, including xsl:element, xsl:attribute, xsl:if, etc. There is a small
-but full example in functions.c providing the implementation for the
-libxslt:test element, it will output a comment in the result tree:</p><pre>/**
+                           xsltStylePreCompPtr comp);</pre><p>The first argument is the XSLT transformation context. The second andthird
+arguments are xmlNodePtr i.e. internal memory <a href="internals.html#libxml">representation of  XML nodes</a>. They
+arerespectively <code>node</code>from the the input document being
+transformedby the stylesheet and <code>inst</code>the extension element in
+thestylesheet. The last argument is <code>comp</code>a pointer to a
+precompiledrepresentation of <code>inst</code>but usually for an extension
+functionthis value is <code>NULL</code>by default (it could be added and
+associatedto the instruction in <code>inst-&gt;_private</code>).</p><p>The same functions are available from a function implementing an
+extensionelement as in an extension function,
+including<code>xsltGetExtData()</code>.</p><p>The goal of an extension element being usually to enrich the
+generatedoutput, it is expected that they will grow the currently generated
+outputtree. This can be done by grabbing ctxt-&gt;insert which is the
+currentlibxml node being generated (Note this can also be the intermediate
+valuetree being built for example to initialize a variable, the processing
+shouldbe similar). The functions for libxml tree manipulation from <a href="http://xmlsoft.org/html/libxml-tree.html">&lt;libxml/tree.h&gt;</a>canbe
+employed to extend or modify the tree, but it is required to preserve
+theinsertion node and its ancestors since there are existing pointers to
+thoseelements still in use in the XSLT template execution stack.</p><h3><a name="Example" id="Example">Example for extension elements</a></h3><p>The module libxslt/transform.c contains the sources of the XSLT
+built-inelements, including xsl:element, xsl:attribute, xsl:if, etc. There is
+a smallbut full example in functions.c providing the implementation for
+thelibxslt:test element, it will output a comment in the result tree:</p><pre>/**
  * xsltExtElementTest:
  * @ctxt:  an XSLT processing context
  * @node:  The current node
@@ -253,10 +253,10 @@ xsltExtElementTest(xsltTransformContextPtr ctxt, xmlNodePtr node,
         xmlNewComment((const xmlChar *)
                       "libxslt:test element test worked");
     xmlAddChild(ctxt-&gt;insert, comment);
-}</pre><h3><a name="shutdown" id="shutdown">The shutdown of a module</a></h3><p>When the XSLT processor ends a transformation, the shutdown function (if
-it exists) for each of the modules initialized is called.  The
-xsltExtShutdownFunction type defines the interface for a shutdown
-function:</p><pre>/**
+}</pre><h3><a name="shutdown" id="shutdown">The shutdown of a module</a></h3><p>When the XSLT processor ends a transformation, the shutdown function (ifit
+exists) for each of the modules initialized is called. 
+ThexsltExtShutdownFunction type defines the interface for a
+shutdownfunction:</p><pre>/**
  * xsltExtShutdownFunction:
  * @ctxt:  an XSLT transformation context
  * @URI:  the namespace URI for the extension
@@ -266,14 +266,15 @@ function:</p><pre>/**
  */
 typedef void (*xsltExtShutdownFunction) (xsltTransformContextPtr ctxt,
                                          const xmlChar *URI,
-                                         void *data);</pre><p>This is really similar to a module initialization function except a third
-argument is passed, it's the value that was returned by the initialization
-function. This allows the routine to deallocate resources from the module for
-example close the connection to the database to keep the same example.</p><h3><a name="Future" id="Future">Future work</a></h3><p>Well, some of the pieces missing:</p><ul><li>a way to load shared libraries to instantiate new modules</li>
-  <li>a better detection of extension functions usage and their registration
-    without having to use the extension prefix which ought to be reserved to
-    element extensions.</li>
+                                         void *data);</pre><p>This is really similar to a module initialization function except a
+thirdargument is passed, it's the value that was returned by the
+initializationfunction. This allows the routine to deallocate resources from
+the module forexample close the connection to the database to keep the same
+example.</p><h3><a name="Future" id="Future">Future work</a></h3><p>Well, some of the pieces missing:</p><ul><li>a way to load shared libraries to instantiate new modules</li>
+  <li>a better detection of extension functions usage and their
+    registrationwithout having to use the extension prefix which ought to be
+    reserved toelement extensions.</li>
   <li>more examples</li>
-  <li>implementations of the <a href="http://www.exslt.org/">EXSLT</a> common
-    extension libraries, Thomas Broyer nearly finished implementing them.</li>
+  <li>implementations of the <a href="http://www.exslt.org/">EXSLT</a>commonextension libraries, Thomas
+    Broyer nearly finished implementing them.</li>
 </ul><p></p><p><a href="bugs.html">Daniel Veillard</a></p></td></tr></table></td></tr></table></td></tr></table></td></tr></table></td></tr></table></body></html>
index a053c58..9dc9f18 100644 (file)
@@ -8,18 +8,18 @@ H2 {font-family: Verdana,Arial,Helvetica}
 H3 {font-family: Verdana,Arial,Helvetica}
 A:link, A:visited, A:active { text-decoration: underline }
     </style><title>How to help</title></head><body bgcolor="#8b7765" text="#000000" link="#a06060" vlink="#000000"><table border="0" width="100%" cellpadding="5" cellspacing="0" align="center"><tr><td width="120"><a href="http://swpat.ffii.org/"><img src="epatents.png" alt="Action against software patents" /></a></td><td width="180"><a href="http://www.gnome.org/"><img src="gnome2.png" alt="Gnome2 Logo" /></a><a href="http://www.w3.org/Status"><img src="w3c.png" alt="W3C logo" /></a><a href="http://www.redhat.com"><img src="redhat.gif" alt="Red Hat Logo" /></a><div align="left"><a href="http://xmlsoft.org/XSLT/"><img src="Libxslt-Logo-180x168.gif" alt="Made with Libxslt Logo" /></a></div></td><td><table border="0" width="90%" cellpadding="2" cellspacing="0" align="center" bgcolor="#000000"><tr><td><table width="100%" border="0" cellspacing="1" cellpadding="3" bgcolor="#fffacd"><tr><td align="center"><h1>The XSLT C library for Gnome</h1><h2>How to help</h2></td></tr></table></td></tr></table></td></tr></table><table border="0" cellpadding="4" cellspacing="0" width="100%" align="center"><tr><td bgcolor="#8b7765"><table border="0" cellspacing="0" cellpadding="2" width="100%"><tr><td valign="top" width="200" bgcolor="#8b7765"><table border="0" cellspacing="0" cellpadding="1" width="100%" bgcolor="#000000"><tr><td><table width="100%" border="0" cellspacing="1" cellpadding="3"><tr><td colspan="1" bgcolor="#eecfa1" align="center"><center><b>Main Menu</b></center></td></tr><tr><td bgcolor="#fffacd"><form action="search.php" enctype="application/x-www-form-urlencoded" method="get"><input name="query" type="text" size="20" value="" /><input name="submit" type="submit" value="Search ..." /></form><ul><li><a href="index.html">Home</a></li><li><a href="http://xmlsoft.org/wiki">Wiki</a></li><li><a href="intro.html">Introduction</a></li><li><a href="docs.html">Documentation</a></li><li><a href="bugs.html">Reporting bugs and getting help</a></li><li><a href="help.html">How to help</a></li><li><a href="downloads.html">Downloads</a></li><li><a href="FAQ.html">FAQ</a></li><li><a href="news.html">News</a></li><li><a href="xsltproc2.html">The xsltproc tool</a></li><li><a href="docbook.html">DocBook</a></li><li><a href="API.html">The programming API</a></li><li><a href="python.html">Python and bindings</a></li><li><a href="internals.html">Library internals</a></li><li><a href="extensions.html">Writing extensions</a></li><li><a href="contribs.html">Contributions</a></li><li><a href="EXSLT/index.html" style="font-weight:bold">libexslt</a></li><li><a href="xslt.html">flat page</a>, <a href="site.xsl">stylesheet</a></li><li><a href="html/index.html" style="font-weight:bold">API Menu</a></li><li><a href="ChangeLog.html">ChangeLog</a></li></ul></td></tr></table><table width="100%" border="0" cellspacing="1" cellpadding="3"><tr><td colspan="1" bgcolor="#eecfa1" align="center"><center><b>Related links</b></center></td></tr><tr><td bgcolor="#fffacd"><ul><li><a href="tutorial/libxslttutorial.html">Tutorial</a>,
-          <a href="tutorial2/libxslt_pipes.html">Tutorial2</a></li><li><a href="xsltproc.html">Man page for xsltproc</a></li><li><a href="http://mail.gnome.org/archives/xslt/">Mail archive</a></li><li><a href="http://xmlsoft.org/">XML libxml2</a></li><li><a href="ftp://xmlsoft.org/">FTP</a></li><li><a href="http://www.zlatkovic.com/projects/libxml/">Windows binaries</a></li><li><a href="http://garypennington.net/libxml2/">Solaris binaries</a></li><li><a href="http://www.explain.com.au/oss/libxml2xslt.html">MacOsX binaries</a></li><li><a href="http://bugzilla.gnome.org/buglist.cgi?product=libxslt">Bug Tracker</a></li><li><a href="http://www.zend.com/php5/articles/php5-xmlphp.php#Heading17">XSLT with PHP</a></li><li><a href="http://www.mod-xslt2.com/">Apache module</a></li><li><a href="http://sourceforge.net/projects/libxml2-pas/">Pascal bindings</a></li><li><a href="http://xsldbg.sourceforge.net/">Xsldbg Debugger</a></li></ul></td></tr></table><table width="100%" border="0" cellspacing="1" cellpadding="3"><tr><td colspan="1" bgcolor="#eecfa1" align="center"><center><b>API Indexes</b></center></td></tr><tr><td bgcolor="#fffacd"><ul><li><a href="APIchunk0.html">Alphabetic</a></li><li><a href="APIconstructors.html">Constructors</a></li><li><a href="APIfunctions.html">Functions/Types</a></li><li><a href="APIfiles.html">Modules</a></li><li><a href="APIsymbols.html">Symbols</a></li></ul></td></tr></table></td></tr></table></td><td valign="top" bgcolor="#8b7765"><table border="0" cellspacing="0" cellpadding="1" width="100%"><tr><td><table border="0" cellspacing="0" cellpadding="1" width="100%" bgcolor="#000000"><tr><td><table border="0" cellpadding="3" cellspacing="1" width="100%"><tr><td bgcolor="#fffacd"><p>You can help the project in various ways, the best thing to do first is to
-subscribe to the mailing-list as explained before, check the <a href="http://mail.gnome.org/archives/xslt/">archives </a>and the <a href="http://bugzilla.gnome.org/buglist.cgi?product=libxslt">Gnome bug
-database:</a>:</p><ol><li>provide patches when you find problems</li>
-  <li>provide the diffs when you port libxslt to a new platform. They may not
-    be integrated in all cases but help pinpointing portability problems
-  and</li>
-  <li>provide documentation fixes (either as patches to the code comments or
-    as HTML diffs).</li>
+          <a href="tutorial2/libxslt_pipes.html">Tutorial2</a></li><li><a href="xsltproc.html">Man page for xsltproc</a></li><li><a href="http://mail.gnome.org/archives/xslt/">Mail archive</a></li><li><a href="http://xmlsoft.org/">XML libxml2</a></li><li><a href="ftp://xmlsoft.org/">FTP</a></li><li><a href="http://www.zlatkovic.com/projects/libxml/">Windows binaries</a></li><li><a href="http://garypennington.net/libxml2/">Solaris binaries</a></li><li><a href="http://www.explain.com.au/oss/libxml2xslt.html">MacOsX binaries</a></li><li><a href="http://bugzilla.gnome.org/buglist.cgi?product=libxslt">Bug Tracker</a></li><li><a href="http://www.zend.com/php5/articles/php5-xmlphp.php#Heading17">XSLT with PHP</a></li><li><a href="http://www.mod-xslt2.com/">Apache module</a></li><li><a href="http://sourceforge.net/projects/libxml2-pas/">Pascal bindings</a></li><li><a href="http://xsldbg.sourceforge.net/">Xsldbg Debugger</a></li></ul></td></tr></table><table width="100%" border="0" cellspacing="1" cellpadding="3"><tr><td colspan="1" bgcolor="#eecfa1" align="center"><center><b>API Indexes</b></center></td></tr><tr><td bgcolor="#fffacd"><ul><li><a href="APIchunk0.html">Alphabetic</a></li><li><a href="APIconstructors.html">Constructors</a></li><li><a href="APIfunctions.html">Functions/Types</a></li><li><a href="APIfiles.html">Modules</a></li><li><a href="APIsymbols.html">Symbols</a></li></ul></td></tr></table></td></tr></table></td><td valign="top" bgcolor="#8b7765"><table border="0" cellspacing="0" cellpadding="1" width="100%"><tr><td><table border="0" cellspacing="0" cellpadding="1" width="100%" bgcolor="#000000"><tr><td><table border="0" cellpadding="3" cellspacing="1" width="100%"><tr><td bgcolor="#fffacd"><p>You can help the project in various ways, the best thing to do first is
+tosubscribe to the mailing-list as explained before, check the <a href="http://mail.gnome.org/archives/xslt/">archives </a>and the <a href="http://bugzilla.gnome.org/buglist.cgi?product=libxslt">Gnome
+bugdatabase:</a>:</p><ol><li>provide patches when you find problems</li>
+  <li>provide the diffs when you port libxslt to a new platform. They may
+    notbe integrated in all cases but help pinpointing portability
+  problemsand</li>
+  <li>provide documentation fixes (either as patches to the code comments
+    oras HTML diffs).</li>
   <li>provide new documentations pieces (translations, examples, etc ...)</li>
   <li>Check the TODO file and try to close one of the items</li>
-  <li>take one of the points raised in the archive or the bug database and
-    provide a fix. <a href="mailto:daniel@veillard.com">Get in touch with me
-    </a>before to avoid synchronization problems and check that the suggested
-    fix will fit in nicely :-)</li>
+  <li>take one of the points raised in the archive or the bug database
+    andprovide a fix. <a href="mailto:daniel@veillard.com">Get in touch with
+    me</a>before to avoid synchronization problems and check that the
+    suggestedfix will fit in nicely :-)</li>
 </ol><p><a href="bugs.html">Daniel Veillard</a></p></td></tr></table></td></tr></table></td></tr></table></td></tr></table></td></tr></table></body></html>
index 84af1d1..d310979 100644 (file)
@@ -8,14 +8,15 @@ H2 {font-family: Verdana,Arial,Helvetica}
 H3 {font-family: Verdana,Arial,Helvetica}
 A:link, A:visited, A:active { text-decoration: underline }
     </style><title>libxslt</title></head><body bgcolor="#8b7765" text="#000000" link="#a06060" vlink="#000000"><table border="0" width="100%" cellpadding="5" cellspacing="0" align="center"><tr><td width="120"><a href="http://swpat.ffii.org/"><img src="epatents.png" alt="Action against software patents" /></a></td><td width="180"><a href="http://www.gnome.org/"><img src="gnome2.png" alt="Gnome2 Logo" /></a><a href="http://www.w3.org/Status"><img src="w3c.png" alt="W3C logo" /></a><a href="http://www.redhat.com"><img src="redhat.gif" alt="Red Hat Logo" /></a><div align="left"><a href="http://xmlsoft.org/XSLT/"><img src="Libxslt-Logo-180x168.gif" alt="Made with Libxslt Logo" /></a></div></td><td><table border="0" width="90%" cellpadding="2" cellspacing="0" align="center" bgcolor="#000000"><tr><td><table width="100%" border="0" cellspacing="1" cellpadding="3" bgcolor="#fffacd"><tr><td align="center"><h1>The XSLT C library for Gnome</h1><h2>libxslt</h2></td></tr></table></td></tr></table></td></tr></table><table border="0" cellpadding="4" cellspacing="0" width="100%" align="center"><tr><td bgcolor="#8b7765"><table border="0" cellspacing="0" cellpadding="2" width="100%"><tr><td valign="top" width="200" bgcolor="#8b7765"><table border="0" cellspacing="0" cellpadding="1" width="100%" bgcolor="#000000"><tr><td><table width="100%" border="0" cellspacing="1" cellpadding="3"><tr><td colspan="1" bgcolor="#eecfa1" align="center"><center><b>Main Menu</b></center></td></tr><tr><td bgcolor="#fffacd"><form action="search.php" enctype="application/x-www-form-urlencoded" method="get"><input name="query" type="text" size="20" value="" /><input name="submit" type="submit" value="Search ..." /></form><ul><li><a href="index.html">Home</a></li><li><a href="http://xmlsoft.org/wiki">Wiki</a></li><li><a href="intro.html">Introduction</a></li><li><a href="docs.html">Documentation</a></li><li><a href="bugs.html">Reporting bugs and getting help</a></li><li><a href="help.html">How to help</a></li><li><a href="downloads.html">Downloads</a></li><li><a href="FAQ.html">FAQ</a></li><li><a href="news.html">News</a></li><li><a href="xsltproc2.html">The xsltproc tool</a></li><li><a href="docbook.html">DocBook</a></li><li><a href="API.html">The programming API</a></li><li><a href="python.html">Python and bindings</a></li><li><a href="internals.html">Library internals</a></li><li><a href="extensions.html">Writing extensions</a></li><li><a href="contribs.html">Contributions</a></li><li><a href="EXSLT/index.html" style="font-weight:bold">libexslt</a></li><li><a href="xslt.html">flat page</a>, <a href="site.xsl">stylesheet</a></li><li><a href="html/index.html" style="font-weight:bold">API Menu</a></li><li><a href="ChangeLog.html">ChangeLog</a></li></ul></td></tr></table><table width="100%" border="0" cellspacing="1" cellpadding="3"><tr><td colspan="1" bgcolor="#eecfa1" align="center"><center><b>Related links</b></center></td></tr><tr><td bgcolor="#fffacd"><ul><li><a href="tutorial/libxslttutorial.html">Tutorial</a>,
-          <a href="tutorial2/libxslt_pipes.html">Tutorial2</a></li><li><a href="xsltproc.html">Man page for xsltproc</a></li><li><a href="http://mail.gnome.org/archives/xslt/">Mail archive</a></li><li><a href="http://xmlsoft.org/">XML libxml2</a></li><li><a href="ftp://xmlsoft.org/">FTP</a></li><li><a href="http://www.zlatkovic.com/projects/libxml/">Windows binaries</a></li><li><a href="http://garypennington.net/libxml2/">Solaris binaries</a></li><li><a href="http://www.explain.com.au/oss/libxml2xslt.html">MacOsX binaries</a></li><li><a href="http://bugzilla.gnome.org/buglist.cgi?product=libxslt">Bug Tracker</a></li><li><a href="http://www.zend.com/php5/articles/php5-xmlphp.php#Heading17">XSLT with PHP</a></li><li><a href="http://www.mod-xslt2.com/">Apache module</a></li><li><a href="http://sourceforge.net/projects/libxml2-pas/">Pascal bindings</a></li><li><a href="http://xsldbg.sourceforge.net/">Xsldbg Debugger</a></li></ul></td></tr></table><table width="100%" border="0" cellspacing="1" cellpadding="3"><tr><td colspan="1" bgcolor="#eecfa1" align="center"><center><b>API Indexes</b></center></td></tr><tr><td bgcolor="#fffacd"><ul><li><a href="APIchunk0.html">Alphabetic</a></li><li><a href="APIconstructors.html">Constructors</a></li><li><a href="APIfunctions.html">Functions/Types</a></li><li><a href="APIfiles.html">Modules</a></li><li><a href="APIsymbols.html">Symbols</a></li></ul></td></tr></table></td></tr></table></td><td valign="top" bgcolor="#8b7765"><table border="0" cellspacing="0" cellpadding="1" width="100%"><tr><td><table border="0" cellspacing="0" cellpadding="1" width="100%" bgcolor="#000000"><tr><td><table border="0" cellpadding="3" cellspacing="1" width="100%"><tr><td bgcolor="#fffacd"><p>Libxslt is the <a href="http://www.w3.org/TR/xslt">XSLT</a> C library
-developed for the Gnome project. XSLT itself is a an XML language to define
-transformation for XML. Libxslt is based on <a href="http://xmlsoft.org/">libxml2</a> the XML C library developed for the
-Gnome project. It also implements most of the <a href="http://www.exslt.org/">EXSLT</a> set of processor-portable extensions
-functions and some of Saxon's evaluate and expressions extensions.</p><p>People can either embed the library in their application or use xsltproc
-the command line processing tool. This library is free software and can be
-reused in commercial applications (see the <a href="intro.html">intro</a>)</p><p>External documents:</p><ul><li>John Fleck wrote <a href="tutorial/libxslttutorial.html">a tutorial for
-    libxslt</a></li>
+          <a href="tutorial2/libxslt_pipes.html">Tutorial2</a></li><li><a href="xsltproc.html">Man page for xsltproc</a></li><li><a href="http://mail.gnome.org/archives/xslt/">Mail archive</a></li><li><a href="http://xmlsoft.org/">XML libxml2</a></li><li><a href="ftp://xmlsoft.org/">FTP</a></li><li><a href="http://www.zlatkovic.com/projects/libxml/">Windows binaries</a></li><li><a href="http://garypennington.net/libxml2/">Solaris binaries</a></li><li><a href="http://www.explain.com.au/oss/libxml2xslt.html">MacOsX binaries</a></li><li><a href="http://bugzilla.gnome.org/buglist.cgi?product=libxslt">Bug Tracker</a></li><li><a href="http://www.zend.com/php5/articles/php5-xmlphp.php#Heading17">XSLT with PHP</a></li><li><a href="http://www.mod-xslt2.com/">Apache module</a></li><li><a href="http://sourceforge.net/projects/libxml2-pas/">Pascal bindings</a></li><li><a href="http://xsldbg.sourceforge.net/">Xsldbg Debugger</a></li></ul></td></tr></table><table width="100%" border="0" cellspacing="1" cellpadding="3"><tr><td colspan="1" bgcolor="#eecfa1" align="center"><center><b>API Indexes</b></center></td></tr><tr><td bgcolor="#fffacd"><ul><li><a href="APIchunk0.html">Alphabetic</a></li><li><a href="APIconstructors.html">Constructors</a></li><li><a href="APIfunctions.html">Functions/Types</a></li><li><a href="APIfiles.html">Modules</a></li><li><a href="APIsymbols.html">Symbols</a></li></ul></td></tr></table></td></tr></table></td><td valign="top" bgcolor="#8b7765"><table border="0" cellspacing="0" cellpadding="1" width="100%"><tr><td><table border="0" cellspacing="0" cellpadding="1" width="100%" bgcolor="#000000"><tr><td><table border="0" cellpadding="3" cellspacing="1" width="100%"><tr><td bgcolor="#fffacd"><p>Libxslt is the <a href="http://www.w3.org/TR/xslt">XSLT</a>C
+librarydeveloped for the Gnome project. XSLT itself is a an XML language to
+definetransformation for XML. Libxslt is based on <a href="http://xmlsoft.org/">libxml2</a>the XML C library developed for
+theGnome project. It also implements most of the <a href="http://www.exslt.org/">EXSLT</a>set of processor-portable
+extensionsfunctions and some of Saxon's evaluate and expressions
+extensions.</p><p>People can either embed the library in their application or use
+xsltprocthe command line processing tool. This library is free software and
+can bereused in commercial applications (see the <a href="intro.html">intro</a>)</p><p>External documents:</p><ul><li>John Fleck wrote <a href="tutorial/libxslttutorial.html">a tutorial
+    forlibxslt</a></li>
   <li><a href="xsltproc.html">xsltproc user manual</a></li>
   <li><a href="http://xmlsoft.org/">the libxml documentation</a></li>
 </ul><p></p><p>Logo designed by <a href="mailto:liyanage@access.ch">Marc Liyanage</a>.</p><p><a href="bugs.html">Daniel Veillard</a></p></td></tr></table></td></tr></table></td></tr></table></td></tr></table></td></tr></table></body></html>
index f96eef3..525dbc7 100644 (file)
@@ -18,152 +18,152 @@ A:link, A:visited, A:active { text-decoration: underline }
   <li><a href="internals.html#processing">The processing itself</a></li>
   <li><a href="internals.html#XPath">XPath expressions compilation</a></li>
   <li><a href="internals.html#XPath1">XPath interpretation</a></li>
-  <li><a href="internals.html#Descriptio">Description of XPath
-  Objects</a></li>
+  <li><a href="internals.html#Descriptio">Description of XPathObjects</a></li>
   <li><a href="internals.html#XPath3">XPath functions</a></li>
   <li><a href="internals.html#stack">The variables stack frame</a></li>
   <li><a href="internals.html#Extension">Extension support</a></li>
   <li><a href="internals.html#Futher">Further reading</a></li>
   <li><a href="internals.html#TODOs">TODOs</a></li>
-</ul><h3><a name="Introducti2" id="Introducti2">Introduction</a></h3><p>This document describes the processing of <a href="http://xmlsoft.org/XSLT/">libxslt</a>, the <a href="http://www.w3.org/TR/xslt">XSLT</a> C library developed for the <a href="http://www.gnome.org/">Gnome</a> project.</p><p>Note: this documentation is by definition incomplete and I am not good at
-spelling, grammar, so patches and suggestions are <a href="mailto:veillard@redhat.com">really welcome</a>.</p><h3><a name="Basics1" id="Basics1">Basics</a></h3><p>XSLT is a transformation language. It takes an input document and a
-stylesheet document and generates an output document:</p><p align="center"><img src="processing.gif" alt="the XSLT processing model" /></p><p>Libxslt is written in C. It relies on <a href="http://www.xmlsoft.org/">libxml</a>, the XML C library for Gnome, for
-the following operations:</p><ul><li>parsing files</li>
-  <li>building the in-memory DOM structure associated with the documents
-    handled</li>
+</ul><h3><a name="Introducti2" id="Introducti2">Introduction</a></h3><p>This document describes the processing of <a href="http://xmlsoft.org/XSLT/">libxslt</a>, the <a href="http://www.w3.org/TR/xslt">XSLT</a>C library developed for the <a href="http://www.gnome.org/">Gnome</a>project.</p><p>Note: this documentation is by definition incomplete and I am not good
+atspelling, grammar, so patches and suggestions are <a href="mailto:veillard@redhat.com">really welcome</a>.</p><h3><a name="Basics1" id="Basics1">Basics</a></h3><p>XSLT is a transformation language. It takes an input document and
+astylesheet document and generates an output document:</p><p align="center"><img src="processing.gif" alt="the XSLT processing model" /></p><p>Libxslt is written in C. It relies on <a href="http://www.xmlsoft.org/">libxml</a>, the XML C library for Gnome,
+forthe following operations:</p><ul><li>parsing files</li>
+  <li>building the in-memory DOM structure associated with the
+    documentshandled</li>
   <li>the XPath implementation</li>
-  <li>serializing back the result document to XML and HTML. (Text is handled
-    directly.)</li>
-</ul><h3><a name="Keep1" id="Keep1">Keep it simple stupid</a></h3><p>Libxslt is not very specialized. It is built under the assumption that all
-nodes from the source and output document can fit in the virtual memory of
-the system. There is a big trade-off there. It is fine for reasonably sized
-documents but may not be suitable for large sets of data. The gain is that it
-can be used in a relatively versatile way. The input or output may never be
-serialized, but the size of documents it can handle are limited by the size
-of the memory available.</p><p>More specialized memory handling approaches are possible, like building
-the input tree from a serialization progressively as it is consumed,
-factoring repetitive patterns, or even on-the-fly generation of the output as
-the input is parsed but it is possible only for a limited subset of the
-stylesheets. In general the implementation of libxslt follows the following
-pattern:</p><ul><li>KISS (keep it simple stupid)</li>
-  <li>when there is a clear bottleneck optimize on top of this simple
-    framework and refine only as much as is needed to reach the expected
-    result</li>
-</ul><p>The result is not that bad, clearly one can do a better job but more
-specialized too. Most optimization like building the tree on-demand would
-need serious changes to the libxml XPath framework. An easy step would be to
-serialize the output directly (or call a set of SAX-like output handler to
-keep this a flexible interface) and hence avoid the memory consumption of the
-result.</p><h3><a name="libxml" id="libxml">The libxml nodes</a></h3><p>DOM-like trees, as used and generated by libxml and libxslt, are
-relatively complex. Most node types follow the given structure except a few
-variations depending on the node type:</p><p align="center"><img src="node.gif" alt="description of a libxml node" /></p><p>Nodes carry a <strong>name</strong> and the node <strong>type</strong>
-indicates the kind of node it represents, the most common ones are:</p><ul><li>document nodes</li>
+  <li>serializing back the result document to XML and HTML. (Text is
+    handleddirectly.)</li>
+</ul><h3><a name="Keep1" id="Keep1">Keep it simple stupid</a></h3><p>Libxslt is not very specialized. It is built under the assumption that
+allnodes from the source and output document can fit in the virtual memory
+ofthe system. There is a big trade-off there. It is fine for reasonably
+sizeddocuments but may not be suitable for large sets of data. The gain is
+that itcan be used in a relatively versatile way. The input or output may
+never beserialized, but the size of documents it can handle are limited by
+the sizeof the memory available.</p><p>More specialized memory handling approaches are possible, like buildingthe
+input tree from a serialization progressively as it is consumed,factoring
+repetitive patterns, or even on-the-fly generation of the output asthe input
+is parsed but it is possible only for a limited subset of thestylesheets. In
+general the implementation of libxslt follows the followingpattern:</p><ul><li>KISS (keep it simple stupid)</li>
+  <li>when there is a clear bottleneck optimize on top of this
+    simpleframework and refine only as much as is needed to reach the
+    expectedresult</li>
+</ul><p>The result is not that bad, clearly one can do a better job but
+morespecialized too. Most optimization like building the tree on-demand
+wouldneed serious changes to the libxml XPath framework. An easy step would
+be toserialize the output directly (or call a set of SAX-like output handler
+tokeep this a flexible interface) and hence avoid the memory consumption of
+theresult.</p><h3><a name="libxml" id="libxml">The libxml nodes</a></h3><p>DOM-like trees, as used and generated by libxml and libxslt, arerelatively
+complex. Most node types follow the given structure except a fewvariations
+depending on the node type:</p><p align="center"><img src="node.gif" alt="description of a libxml node" /></p><p>Nodes carry a <strong>name</strong>and the node
+<strong>type</strong>indicates the kind of node it represents, the most
+common ones are:</p><ul><li>document nodes</li>
   <li>element nodes</li>
   <li>text nodes</li>
-</ul><p>For the XSLT processing, entity nodes should not be generated (i.e. they
-should be replaced by their content). Most nodes also contains the following
-"navigation" informations:</p><ul><li>the containing <strong>doc</strong>ument</li>
-  <li>the <strong>parent</strong> node</li>
-  <li>the first <strong>children</strong> node</li>
-  <li>the <strong>last</strong> children node</li>
+</ul><p>For the XSLT processing, entity nodes should not be generated (i.e.
+theyshould be replaced by their content). Most nodes also contains the
+following"navigation" informations:</p><ul><li>the containing <strong>doc</strong>ument</li>
+  <li>the <strong>parent</strong>node</li>
+  <li>the first <strong>children</strong>node</li>
+  <li>the <strong>last</strong>children node</li>
   <li>the <strong>prev</strong>ious sibling</li>
   <li>the following sibling (<strong>next</strong>)</li>
-</ul><p>Elements nodes carries the list of attributes in the properties, an
-attribute itself holds the navigation pointers and the children list (the
-attribute value is not represented as a simple string to allow usage of
-entities references).</p><p>The <strong>ns</strong> points to the namespace declaration for the
-namespace associated to the node, <strong>nsDef</strong> is the linked list
-of namespace declaration present on element nodes.</p><p>Most nodes also carry an <strong>_private</strong> pointer which can be
-used by the application to hold specific data on this node.</p><h3><a name="XSLT" id="XSLT">The XSLT processing steps</a></h3><p>There are a few steps which are clearly decoupled at the interface
-level:</p><ol><li>parse the stylesheet and generate a DOM tree</li>
-  <li>take the stylesheet tree and build a compiled version of it (the
-    compilation phase)</li>
+</ul><p>Elements nodes carries the list of attributes in the properties,
+anattribute itself holds the navigation pointers and the children list
+(theattribute value is not represented as a simple string to allow usage
+ofentities references).</p><p>The <strong>ns</strong>points to the namespace declaration for
+thenamespace associated to the node, <strong>nsDef</strong>is the linked
+listof namespace declaration present on element nodes.</p><p>Most nodes also carry an <strong>_private</strong>pointer which can beused
+by the application to hold specific data on this node.</p><h3><a name="XSLT" id="XSLT">The XSLT processing steps</a></h3><p>There are a few steps which are clearly decoupled at the
+interfacelevel:</p><ol><li>parse the stylesheet and generate a DOM tree</li>
+  <li>take the stylesheet tree and build a compiled version of it
+    (thecompilation phase)</li>
   <li>take the input and generate a DOM tree</li>
-  <li>process the stylesheet against the input tree and generate an output
-    tree</li>
+  <li>process the stylesheet against the input tree and generate an
+  outputtree</li>
   <li>serialize the output tree</li>
 </ol><p>A few things should be noted here:</p><ul><li>the steps 1/ 3/ and 5/ are optional</li>
-  <li>the stylesheet obtained at 2/ can be reused by multiple processing 4/
-    (and this should also work in threaded programs)</li>
-  <li>the tree provided in 2/ should never be freed using xmlFreeDoc, but by
-    freeing the stylesheet.</li>
-  <li>the input tree 4/ is not modified except the _private field which may
-    be used for labelling keys if used by the stylesheet</li>
-</ul><h3><a name="XSLT1" id="XSLT1">The XSLT stylesheet compilation</a></h3><p>This is the second step described. It takes a stylesheet tree, and
-"compiles" it. This associates to each node a structure stored in the
-_private field and containing information computed in the stylesheet:</p><p align="center"><img src="stylesheet.gif" alt="a compiled XSLT stylesheet" /></p><p>One xsltStylesheet structure is generated per document parsed for the
-stylesheet. XSLT documents allow includes and imports of other documents,
-imports are stored in the <strong>imports</strong> list (hence keeping the
-tree hierarchy of includes which is very important for a proper XSLT
-processing model) and includes are stored in the <strong>doclist</strong>
-list. An imported stylesheet has a parent link to allow browsing of the
-tree.</p><p>The DOM tree associated to the document is stored in <strong>doc</strong>.
-It is preprocessed to remove ignorable empty nodes and all the nodes in the
-XSLT namespace are subject to precomputing. This usually consist of
-extracting all the context information from the context tree (attributes,
-namespaces, XPath expressions), and storing them in an xsltStylePreComp
-structure associated to the <strong>_private</strong> field of the node.</p><p>A couple of notable exceptions to this are XSLT template nodes (more on
-this later) and attribute value templates. If they are actually templates,
-the value cannot be computed at compilation time. (Some preprocessing could
-be done like isolation and preparsing of the XPath subexpressions but it's
-not done, yet.)</p><p>The xsltStylePreComp structure also allows storing of the precompiled form
-of an XPath expression that can be associated to an XSLT element (more on
-this later).</p><h3><a name="XSLT2" id="XSLT2">The XSLT template compilation</a></h3><p>A proper handling of templates lookup is one of the keys of fast XSLT
-processing. (Given a node in the source document this is the process of
-finding which templates should be applied to this node.) Libxslt follows the
-hint suggested in the <a href="http://www.w3.org/TR/xslt#patterns">5.2
-Patterns</a> section of the XSLT Recommendation, i.e. it doesn't evaluate it
-as an XPath expression but tokenizes it and compiles it as a set of rules to
-be evaluated on a candidate node. There usually is an indication of the node
-name in the last step of this evaluation and this is used as a key check for
-the match. As a result libxslt builds a relatively more complex set of
-structures for the templates:</p><p align="center"><img src="templates.gif" alt="The templates related structure" /></p><p>Let's describe a bit more closely what is built. First the xsltStylesheet
-structure holds a pointer to the template hash table. All the XSLT patterns
-compiled in this stylesheet are indexed by the value of the the target
-element (or attribute, pi ...) name, so when a element or an attribute "foo"
-needs to be processed the lookup is done using the name as a key.</p><p>Each of the patterns is compiled into an xsltCompMatch structure. It holds
-the set of rules based on the tokenization of the pattern stored in reverse
-order (matching is easier this way). It also holds some information about the
-previous matches used to speed up the process when one iterates over a set of
-siblings. (This optimization may be defeated by trashing when running
-threaded computation, it's unclear that this is a big deal in practice.)
-Predicate expressions are not compiled at this stage, they may be at run-time
-if needed, but in this case they are compiled as full XPath expressions (the
-use of some fixed predicate can probably be optimized, they are not yet).</p><p>The xsltCompMatch are then stored in the hash table, the clash list is
-itself sorted by priority of the template to implement "naturally" the XSLT
-priority rules.</p><p>Associated to the compiled pattern is the xsltTemplate itself containing
-the information required for the processing of the pattern including, of
-course, a pointer to the list of elements used for building the pattern
-result.</p><p>Last but not least a number of patterns do not fit in the hash table
-because they are not associated to a name, this is the case for patterns
-applying to the root, any element, any attributes, text nodes, pi nodes, keys
-etc. Those are stored independently in the stylesheet structure as separate
-linked lists of xsltCompMatch.</p><h3><a name="processing" id="processing">The processing itself</a></h3><p>The processing is defined by the XSLT specification (the basis of the
-algorithm is explained in <a href="http://www.w3.org/TR/xslt#section-Introduction">the Introduction</a>
-section). Basically it works by taking the root of the input document and
-applying the following algorithm:</p><ol><li>Finding the template applying to it. This is a lookup in the template
-    hash table, walking the hash list until the node satisfies all the steps
-    of the pattern, then checking the appropriate(s) global templates to see
-    if there isn't a higher priority rule to apply</li>
-  <li>If there is no template, apply the default rule (recurse on the
-    children)</li>
+  <li>the stylesheet obtained at 2/ can be reused by multiple processing
+    4/(and this should also work in threaded programs)</li>
+  <li>the tree provided in 2/ should never be freed using xmlFreeDoc, but
+    byfreeing the stylesheet.</li>
+  <li>the input tree 4/ is not modified except the _private field which maybe
+    used for labelling keys if used by the stylesheet</li>
+</ul><h3><a name="XSLT1" id="XSLT1">The XSLT stylesheet compilation</a></h3><p>This is the second step described. It takes a stylesheet tree,
+and"compiles" it. This associates to each node a structure stored in
+the_private field and containing information computed in the stylesheet:</p><p align="center"><img src="stylesheet.gif" alt="a compiled XSLT stylesheet" /></p><p>One xsltStylesheet structure is generated per document parsed for
+thestylesheet. XSLT documents allow includes and imports of other
+documents,imports are stored in the <strong>imports</strong>list (hence
+keeping thetree hierarchy of includes which is very important for a proper
+XSLTprocessing model) and includes are stored in the
+<strong>doclist</strong>list. An imported stylesheet has a parent link to
+allow browsing of thetree.</p><p>The DOM tree associated to the document is stored in
+<strong>doc</strong>.It is preprocessed to remove ignorable empty nodes and
+all the nodes in theXSLT namespace are subject to precomputing. This usually
+consist ofextracting all the context information from the context tree
+(attributes,namespaces, XPath expressions), and storing them in an
+xsltStylePreCompstructure associated to the <strong>_private</strong>field of
+the node.</p><p>A couple of notable exceptions to this are XSLT template nodes (more
+onthis later) and attribute value templates. If they are actually
+templates,the value cannot be computed at compilation time. (Some
+preprocessing couldbe done like isolation and preparsing of the XPath
+subexpressions but it'snot done, yet.)</p><p>The xsltStylePreComp structure also allows storing of the precompiled
+formof an XPath expression that can be associated to an XSLT element (more
+onthis later).</p><h3><a name="XSLT2" id="XSLT2">The XSLT template compilation</a></h3><p>A proper handling of templates lookup is one of the keys of fast
+XSLTprocessing. (Given a node in the source document this is the process
+offinding which templates should be applied to this node.) Libxslt follows
+thehint suggested in the <a href="http://www.w3.org/TR/xslt#patterns">5.2Patterns</a>section of the XSLT
+Recommendation, i.e. it doesn't evaluate itas an XPath expression but
+tokenizes it and compiles it as a set of rules tobe evaluated on a candidate
+node. There usually is an indication of the nodename in the last step of this
+evaluation and this is used as a key check forthe match. As a result libxslt
+builds a relatively more complex set ofstructures for the templates:</p><p align="center"><img src="templates.gif" alt="The templates related structure" /></p><p>Let's describe a bit more closely what is built. First the
+xsltStylesheetstructure holds a pointer to the template hash table. All the
+XSLT patternscompiled in this stylesheet are indexed by the value of the the
+targetelement (or attribute, pi ...) name, so when a element or an attribute
+"foo"needs to be processed the lookup is done using the name as a key.</p><p>Each of the patterns is compiled into an xsltCompMatch structure. It
+holdsthe set of rules based on the tokenization of the pattern stored in
+reverseorder (matching is easier this way). It also holds some information
+about theprevious matches used to speed up the process when one iterates over
+a set ofsiblings. (This optimization may be defeated by trashing when
+runningthreaded computation, it's unclear that this is a big deal in
+practice.)Predicate expressions are not compiled at this stage, they may be
+at run-timeif needed, but in this case they are compiled as full XPath
+expressions (theuse of some fixed predicate can probably be optimized, they
+are not yet).</p><p>The xsltCompMatch are then stored in the hash table, the clash list
+isitself sorted by priority of the template to implement "naturally" the
+XSLTpriority rules.</p><p>Associated to the compiled pattern is the xsltTemplate itself
+containingthe information required for the processing of the pattern
+including, ofcourse, a pointer to the list of elements used for building the
+patternresult.</p><p>Last but not least a number of patterns do not fit in the hash
+tablebecause they are not associated to a name, this is the case for
+patternsapplying to the root, any element, any attributes, text nodes, pi
+nodes, keysetc. Those are stored independently in the stylesheet structure as
+separatelinked lists of xsltCompMatch.</p><h3><a name="processing" id="processing">The processing itself</a></h3><p>The processing is defined by the XSLT specification (the basis of
+thealgorithm is explained in <a href="http://www.w3.org/TR/xslt#section-Introduction">the
+Introduction</a>section). Basically it works by taking the root of the input
+document andapplying the following algorithm:</p><ol><li>Finding the template applying to it. This is a lookup in the
+    templatehash table, walking the hash list until the node satisfies all
+    the stepsof the pattern, then checking the appropriate(s) global
+    templates to seeif there isn't a higher priority rule to apply</li>
+  <li>If there is no template, apply the default rule (recurse on
+  thechildren)</li>
   <li>else walk the content list of the selected templates, for each of them:
-    <ul><li>if the node is in the XSLT namespace then the node has a _private
-        field pointing to the preprocessed values, jump to the specific
-      code</li>
-      <li>if the node is in an extension namespace, look up the associated
-        behavior</li>
+    <ul><li>if the node is in the XSLT namespace then the node has a
+        _privatefield pointing to the preprocessed values, jump to the
+        specificcode</li>
+      <li>if the node is in an extension namespace, look up the
+        associatedbehavior</li>
       <li>otherwise copy the node.</li>
-    </ul><p>The closure is usually done through the XSLT
-    <strong>apply-templates</strong> construct recursing by applying the
-    adequate template on the input node children or on the result of an
-    associated XPath selection lookup.</p>
+    </ul><p>The closure is usually done through the
+    XSLT<strong>apply-templates</strong>construct recursing by applying
+    theadequate template on the input node children or on the result of
+    anassociated XPath selection lookup.</p>
   </li>
-</ol><p>Note that large parts of the input tree may not be processed by a given
-stylesheet and that on the opposite some may be processed multiple times.
-(This often is the case when a Table of Contents is built).</p><p>The module <code>transform.c</code> is the one implementing most of this
-logic. <strong>xsltApplyStylesheet()</strong> is the entry point, it
-allocates an xsltTransformContext containing the following:</p><ul><li>a pointer to the stylesheet being processed</li>
+</ol><p>Note that large parts of the input tree may not be processed by a
+givenstylesheet and that on the opposite some may be processed multiple
+times.(This often is the case when a Table of Contents is built).</p><p>The module <code>transform.c</code>is the one implementing most of
+thislogic. <strong>xsltApplyStylesheet()</strong>is the entry point,
+itallocates an xsltTransformContext containing the following:</p><ul><li>a pointer to the stylesheet being processed</li>
   <li>a stack of templates</li>
   <li>a stack of variables and parameters</li>
   <li>an XPath context</li>
@@ -173,18 +173,18 @@ allocates an xsltTransformContext containing the following:</p><ul><li>a pointer
   <li>current selected node list</li>
   <li>the current insertion points in the output document</li>
   <li>a couple of hash tables for extension elements and functions</li>
-</ul><p>Then a new document gets allocated (HTML or XML depending on the type of
-output), the user parameters and global variables and parameters are
-evaluated. Then <strong>xsltProcessOneNode()</strong> which implements the
-1-2-3 algorithm is called on the root element of the input. Step 1/ is
-implemented by calling <strong>xsltGetTemplate()</strong>, step 2/ is
-implemented by <strong>xsltDefaultProcessOneNode()</strong> and step 3/ is
-implemented by <strong>xsltApplyOneTemplate()</strong>.</p><h3><a name="XPath" id="XPath">XPath expression compilation</a></h3><p>The XPath support is actually implemented in the libxml module (where it
-is reused by the XPointer implementation). XPath is a relatively classic
-expression language. The only uncommon feature is that it is working on XML
-trees and hence has specific syntax and types to handle them.</p><p>XPath expressions are compiled using <strong>xmlXPathCompile()</strong>.
-It will take an expression string in input and generate a structure
-containing the parsed expression tree, for example the expression:</p><pre>/doc/chapter[title='Introduction']</pre><p>will be compiled as</p><pre>Compiled Expression : 10 elements
+</ul><p>Then a new document gets allocated (HTML or XML depending on the type
+ofoutput), the user parameters and global variables and parameters
+areevaluated. Then <strong>xsltProcessOneNode()</strong>which implements
+the1-2-3 algorithm is called on the root element of the input. Step 1/
+isimplemented by calling <strong>xsltGetTemplate()</strong>, step 2/
+isimplemented by <strong>xsltDefaultProcessOneNode()</strong>and step 3/
+isimplemented by <strong>xsltApplyOneTemplate()</strong>.</p><h3><a name="XPath" id="XPath">XPath expression compilation</a></h3><p>The XPath support is actually implemented in the libxml module (where itis
+reused by the XPointer implementation). XPath is a relatively
+classicexpression language. The only uncommon feature is that it is working
+on XMLtrees and hence has specific syntax and types to handle them.</p><p>XPath expressions are compiled using <strong>xmlXPathCompile()</strong>.It
+will take an expression string in input and generate a structurecontaining
+the parsed expression tree, for example the expression:</p><pre>/doc/chapter[title='Introduction']</pre><p>will be compiled as</p><pre>Compiled Expression : 10 elements
   SORT
     COLLECT  'child' 'name' 'node' chapter
       COLLECT  'child' 'name' 'node' doc
@@ -196,97 +196,96 @@ containing the parsed expression tree, for example the expression:</p><pre>/doc/
               NODE
             ELEM Object is a string : Introduction
               COLLECT  'child' 'name' 'node' title
-                NODE</pre><p>This can be tested using the  <code>testXPath</code>  command (in the
-libxml codebase) using the <code>--tree</code> option.</p><p>Again, the KISS approach is used. No optimization is done. This could be
-an interesting thing to add. <a href="http://www-106.ibm.com/developerworks/library/x-xslt2/?dwzone=x?open&amp;l=132%2ct=gr%2c+p=saxon">Michael
-Kay describes</a> a lot of possible and interesting optimizations done in
-Saxon which would be possible at this level. I'm unsure they would provide
-much gain since the expressions tends to be relatively simple in general and
-stylesheets are still hand generated. Optimizations at the interpretation
-sounds likely to be more efficient.</p><h3><a name="XPath1" id="XPath1">XPath interpretation</a></h3><p>The interpreter is implemented by <strong>xmlXPathCompiledEval()</strong>
-which is the front-end to <strong>xmlXPathCompOpEval()</strong> the function
-implementing the evaluation of the expression tree. This evaluation follows
-the KISS approach again. It's recursive and calls
-<strong>xmlXPathNodeCollectAndTest()</strong> to collect nodes set when
-evaluating a <code>COLLECT</code> node.</p><p>An evaluation is done within the framework of an XPath context stored in
-an <strong>xmlXPathContext</strong> structure, in the framework of a
-transformation the context is maintained within the XSLT context. Its content
-follows the requirements from the XPath specification:</p><ul><li>the current document</li>
+                NODE</pre><p>This can be tested using the  <code>testXPath</code>command (in thelibxml
+codebase) using the <code>--tree</code>option.</p><p>Again, the KISS approach is used. No optimization is done. This could bean
+interesting thing to add. <a href="http://www-106.ibm.com/developerworks/library/x-xslt2/?dwzone=x?open&amp;l=132%2ct=gr%2c+p=saxon">MichaelKay
+describes</a>a lot of possible and interesting optimizations done inSaxon
+which would be possible at this level. I'm unsure they would providemuch gain
+since the expressions tends to be relatively simple in general andstylesheets
+are still hand generated. Optimizations at the interpretationsounds likely to
+be more efficient.</p><h3><a name="XPath1" id="XPath1">XPath interpretation</a></h3><p>The interpreter is implemented by
+<strong>xmlXPathCompiledEval()</strong>which is the front-end to
+<strong>xmlXPathCompOpEval()</strong>the functionimplementing the evaluation
+of the expression tree. This evaluation followsthe KISS approach again. It's
+recursive and calls<strong>xmlXPathNodeCollectAndTest()</strong>to collect
+nodes set whenevaluating a <code>COLLECT</code>node.</p><p>An evaluation is done within the framework of an XPath context stored inan
+<strong>xmlXPathContext</strong>structure, in the framework of
+atransformation the context is maintained within the XSLT context. Its
+contentfollows the requirements from the XPath specification:</p><ul><li>the current document</li>
   <li>the current node</li>
   <li>a hash table of defined variables (but not used by XSLT)</li>
   <li>a hash table of defined functions</li>
-  <li>the proximity position (the place of the node in the current node
-  list)</li>
+  <li>the proximity position (the place of the node in the current
+  nodelist)</li>
   <li>the context size (the size of the current node list)</li>
-  <li>the array of namespace declarations in scope (there also is a namespace
-    hash table but it is not used in the XSLT transformation).</li>
-</ul><p>For the purpose of XSLT an <strong>extra</strong> pointer has been added
-allowing to retrieve the XSLT transformation context. When an XPath
-evaluation is about to be performed, an XPath parser context is allocated
-containing and XPath object stack (this is actually an XPath evaluation
-context, this is a remain of the time where there was no separate parsing and
-evaluation phase in the XPath implementation). Here is an overview of the set
-of contexts associated to an XPath evaluation within an XSLT
-transformation:</p><p align="center"><img src="contexts.gif" alt="The set of contexts associated " /></p><p>Clearly this is a bit too complex and confusing and should be refactored
-at the next set of binary incompatible releases of libxml. For example the
-xmlXPathCtxt has a lot of unused parts and should probably be merged with
-xmlXPathParserCtxt.</p><h3><a name="Descriptio" id="Descriptio">Description of XPath Objects</a></h3><p>An XPath expression manipulates XPath objects. XPath defines the default
-types boolean, numbers, strings and node sets. XSLT adds the result tree
-fragment type which is basically an unmodifiable node set.</p><p>Implementation-wise, libxml follows again a KISS approach, the
-xmlXPathObject is a structure containing a type description and the various
-possibilities. (Using an enum could have gained some bytes.) In the case of
-node sets (or result tree fragments), it points to a separate xmlNodeSet
-object which contains the list of pointers to the document nodes:</p><p align="center"><img src="object.gif" alt="An Node set object pointing to " /></p><p>The <a href="http://xmlsoft.org/html/libxml-xpath.html">XPath API</a> (and
-its <a href="http://xmlsoft.org/html/libxml-xpathinternals.html">'internal'
-part</a>) includes a number of functions to create, copy, compare, convert or
-free XPath objects.</p><h3><a name="XPath3" id="XPath3">XPath functions</a></h3><p>All the XPath functions available to the interpreter are registered in the
-function hash table linked from the XPath context. They all share the same
-signature:</p><pre>void xmlXPathFunc (xmlXPathParserContextPtr ctxt, int nargs);</pre><p>The first argument is the XPath interpretation context, holding the
-interpretation stack. The second argument defines the number of objects
-passed on the stack for the function to consume (last argument is on top of
-the stack).</p><p>Basically an XPath function does the following:</p><ul><li>check <code>nargs</code> for proper handling of errors or functions
-    with variable numbers of parameters</li>
-  <li>pop the parameters from the stack using <code>obj =
-    valuePop(ctxt);</code></li>
+  <li>the array of namespace declarations in scope (there also is a
+    namespacehash table but it is not used in the XSLT transformation).</li>
+</ul><p>For the purpose of XSLT an <strong>extra</strong>pointer has been
+addedallowing to retrieve the XSLT transformation context. When an
+XPathevaluation is about to be performed, an XPath parser context is
+allocatedcontaining and XPath object stack (this is actually an XPath
+evaluationcontext, this is a remain of the time where there was no separate
+parsing andevaluation phase in the XPath implementation). Here is an overview
+of the setof contexts associated to an XPath evaluation within an
+XSLTtransformation:</p><p align="center"><img src="contexts.gif" alt="The set of contexts associated " /></p><p>Clearly this is a bit too complex and confusing and should be refactoredat
+the next set of binary incompatible releases of libxml. For example
+thexmlXPathCtxt has a lot of unused parts and should probably be merged
+withxmlXPathParserCtxt.</p><h3><a name="Descriptio" id="Descriptio">Description of XPath Objects</a></h3><p>An XPath expression manipulates XPath objects. XPath defines the
+defaulttypes boolean, numbers, strings and node sets. XSLT adds the result
+treefragment type which is basically an unmodifiable node set.</p><p>Implementation-wise, libxml follows again a KISS approach,
+thexmlXPathObject is a structure containing a type description and the
+variouspossibilities. (Using an enum could have gained some bytes.) In the
+case ofnode sets (or result tree fragments), it points to a separate
+xmlNodeSetobject which contains the list of pointers to the document
+nodes:</p><p align="center"><img src="object.gif" alt="An Node set object pointing to " /></p><p>The <a href="http://xmlsoft.org/html/libxml-xpath.html">XPath
+API</a>(andits <a href="http://xmlsoft.org/html/libxml-xpathinternals.html">'internal'part</a>)
+includes a number of functions to create, copy, compare, convert orfree XPath
+objects.</p><h3><a name="XPath3" id="XPath3">XPath functions</a></h3><p>All the XPath functions available to the interpreter are registered in
+thefunction hash table linked from the XPath context. They all share the
+samesignature:</p><pre>void xmlXPathFunc (xmlXPathParserContextPtr ctxt, int nargs);</pre><p>The first argument is the XPath interpretation context, holding
+theinterpretation stack. The second argument defines the number of
+objectspassed on the stack for the function to consume (last argument is on
+top ofthe stack).</p><p>Basically an XPath function does the following:</p><ul><li>check <code>nargs</code>for proper handling of errors or functionswith
+    variable numbers of parameters</li>
+  <li>pop the parameters from the stack using <code>obj
+    =valuePop(ctxt);</code></li>
   <li>do the function specific computation</li>
-  <li>push the result parameter on the stack using <code>valuePush(ctxt,
-    res);</code></li>
-  <li>free up the input parameters with
-  <code>xmlXPathFreeObject(obj);</code></li>
+  <li>push the result parameter on the stack using
+    <code>valuePush(ctxt,res);</code></li>
+  <li>free up the input parameters
+  with<code>xmlXPathFreeObject(obj);</code></li>
   <li>return</li>
-</ul><p>Sometime the work can be done directly by modifying in-situ the top object
-on the stack <code>ctxt-&gt;value</code>.</p><h3><a name="stack" id="stack">The XSLT variables stack frame</a></h3><p>Not to be confused with XPath object stack, this stack holds the XSLT
-variables and parameters as they are defined through the recursive calls of
-call-template, apply-templates and default templates. This is used to define
-the scope of variables being called.</p><p>This part seems to be the most urgent attention right now, first it is
-done in a very inefficient way since the location of the variables and
-parameters within the stylesheet tree is still done at run time (it really
-should be done statically at compile time), and I am still unsure that my
-understanding of the template variables and parameter scope is actually
-right.</p><p>This part of the documentation is still to be written once this part of
-the code will be stable. <span style="background-color: #FF0000">TODO</span></p><h3><a name="Extension" id="Extension">Extension support</a></h3><p>There is a separate document explaining <a href="extensions.html">how the
-extension support works</a>.</p><h3><a name="Futher" id="Futher">Further reading</a></h3><p>Michael Kay wrote <a href="http://www-106.ibm.com/developerworks/library/x-xslt2/?dwzone=x?open&amp;l=132%2ct=gr%2c+p=saxon">a
-really interesting article on Saxon internals</a> and the work he did on
-performance issues. I wishes I had read it before starting libxslt design (I
-would probably have avoided a few mistakes and progressed faster). A lot of
-the ideas in his papers should be implemented or at least tried in
-libxslt.</p><p>The <a href="http://xmlsoft.org/">libxml documentation</a>, especially <a href="http://xmlsoft.org/xmlio.html">the I/O interfaces</a> and the <a href="http://xmlsoft.org/xmlmem.html">memory management</a>.</p><h3><a name="TODOs" id="TODOs">TODOs</a></h3><p>redesign the XSLT stack frame handling. Far too much work is done at
-execution time. Similarly for the attribute value templates handling, at
-least the embedded subexpressions ought to be precompiled.</p><p>Allow output to be saved to a SAX like output (this notion of SAX like API
-for output should be added directly to libxml).</p><p>Implement and test some of the optimization explained by Michael Kay
-especially:</p><ul><li>static slot allocation on the stack frame</li>
+</ul><p>Sometime the work can be done directly by modifying in-situ the top
+objecton the stack <code>ctxt-&gt;value</code>.</p><h3><a name="stack" id="stack">The XSLT variables stack frame</a></h3><p>Not to be confused with XPath object stack, this stack holds the
+XSLTvariables and parameters as they are defined through the recursive calls
+ofcall-template, apply-templates and default templates. This is used to
+definethe scope of variables being called.</p><p>This part seems to be the most urgent attention right now, first it isdone
+in a very inefficient way since the location of the variables andparameters
+within the stylesheet tree is still done at run time (it reallyshould be done
+statically at compile time), and I am still unsure that myunderstanding of
+the template variables and parameter scope is actuallyright.</p><p>This part of the documentation is still to be written once this part ofthe
+code will be stable. <span style="background-color: #FF0000">TODO</span></p><h3><a name="Extension" id="Extension">Extension support</a></h3><p>There is a separate document explaining <a href="extensions.html">how
+theextension support works</a>.</p><h3><a name="Futher" id="Futher">Further reading</a></h3><p>Michael Kay wrote <a href="http://www-106.ibm.com/developerworks/library/x-xslt2/?dwzone=x?open&amp;l=132%2ct=gr%2c+p=saxon">areally
+interesting article on Saxon internals</a>and the work he did onperformance
+issues. I wishes I had read it before starting libxslt design (Iwould
+probably have avoided a few mistakes and progressed faster). A lot ofthe
+ideas in his papers should be implemented or at least tried inlibxslt.</p><p>The <a href="http://xmlsoft.org/">libxml documentation</a>, especially <a href="http://xmlsoft.org/xmlio.html">the I/O interfaces</a>and the <a href="http://xmlsoft.org/xmlmem.html">memory management</a>.</p><h3><a name="TODOs" id="TODOs">TODOs</a></h3><p>redesign the XSLT stack frame handling. Far too much work is done
+atexecution time. Similarly for the attribute value templates handling,
+atleast the embedded subexpressions ought to be precompiled.</p><p>Allow output to be saved to a SAX like output (this notion of SAX like
+APIfor output should be added directly to libxml).</p><p>Implement and test some of the optimization explained by Michael
+Kayespecially:</p><ul><li>static slot allocation on the stack frame</li>
   <li>specific boolean interpretation of an XPath expression</li>
   <li>some of the sorting optimization</li>
-  <li>Lazy evaluation of location path. (this may require more changes but
-    sounds really interesting. XT does this too.)</li>
-  <li>Optimization of an expression tree (This could be done as a completely
-    independent module.)</li>
-</ul><p></p><p>Error reporting, there is a lot of case where the XSLT specification
-specify that a given construct is an error are not checked adequately by
-libxslt. Basically one should do a complete pass on the XSLT spec again and
-add all tests to the stylesheet compilation. Using the DTD provided in the
-appendix and making direct checks using the libxml validation API sounds a
-good idea too (though one should take care of not raising errors for
-elements/attributes in different namespaces).</p><p>Double check all the places where the stylesheet compiled form might be
-modified at run time (extra removal of blanks nodes, hint on the
-xsltCompMatch).</p><p></p><p><a href="bugs.html">Daniel Veillard</a></p></td></tr></table></td></tr></table></td></tr></table></td></tr></table></td></tr></table></body></html>
+  <li>Lazy evaluation of location path. (this may require more changes
+    butsounds really interesting. XT does this too.)</li>
+  <li>Optimization of an expression tree (This could be done as a
+    completelyindependent module.)</li>
+</ul><p></p><p>Error reporting, there is a lot of case where the XSLT
+specificationspecify that a given construct is an error are not checked
+adequately bylibxslt. Basically one should do a complete pass on the XSLT
+spec again andadd all tests to the stylesheet compilation. Using the DTD
+provided in theappendix and making direct checks using the libxml validation
+API sounds agood idea too (though one should take care of not raising errors
+forelements/attributes in different namespaces).</p><p>Double check all the places where the stylesheet compiled form might
+bemodified at run time (extra removal of blanks nodes, hint on
+thexsltCompMatch).</p><p></p><p><a href="bugs.html">Daniel Veillard</a></p></td></tr></table></td></tr></table></td></tr></table></td></tr></table></td></tr></table></body></html>
index 64f6d92..c527cdb 100644 (file)
@@ -8,16 +8,14 @@ H2 {font-family: Verdana,Arial,Helvetica}
 H3 {font-family: Verdana,Arial,Helvetica}
 A:link, A:visited, A:active { text-decoration: underline }
     </style><title>Introduction</title></head><body bgcolor="#8b7765" text="#000000" link="#a06060" vlink="#000000"><table border="0" width="100%" cellpadding="5" cellspacing="0" align="center"><tr><td width="120"><a href="http://swpat.ffii.org/"><img src="epatents.png" alt="Action against software patents" /></a></td><td width="180"><a href="http://www.gnome.org/"><img src="gnome2.png" alt="Gnome2 Logo" /></a><a href="http://www.w3.org/Status"><img src="w3c.png" alt="W3C logo" /></a><a href="http://www.redhat.com"><img src="redhat.gif" alt="Red Hat Logo" /></a><div align="left"><a href="http://xmlsoft.org/XSLT/"><img src="Libxslt-Logo-180x168.gif" alt="Made with Libxslt Logo" /></a></div></td><td><table border="0" width="90%" cellpadding="2" cellspacing="0" align="center" bgcolor="#000000"><tr><td><table width="100%" border="0" cellspacing="1" cellpadding="3" bgcolor="#fffacd"><tr><td align="center"><h1>The XSLT C library for Gnome</h1><h2>Introduction</h2></td></tr></table></td></tr></table></td></tr></table><table border="0" cellpadding="4" cellspacing="0" width="100%" align="center"><tr><td bgcolor="#8b7765"><table border="0" cellspacing="0" cellpadding="2" width="100%"><tr><td valign="top" width="200" bgcolor="#8b7765"><table border="0" cellspacing="0" cellpadding="1" width="100%" bgcolor="#000000"><tr><td><table width="100%" border="0" cellspacing="1" cellpadding="3"><tr><td colspan="1" bgcolor="#eecfa1" align="center"><center><b>Main Menu</b></center></td></tr><tr><td bgcolor="#fffacd"><form action="search.php" enctype="application/x-www-form-urlencoded" method="get"><input name="query" type="text" size="20" value="" /><input name="submit" type="submit" value="Search ..." /></form><ul><li><a href="index.html">Home</a></li><li><a href="http://xmlsoft.org/wiki">Wiki</a></li><li><a href="intro.html">Introduction</a></li><li><a href="docs.html">Documentation</a></li><li><a href="bugs.html">Reporting bugs and getting help</a></li><li><a href="help.html">How to help</a></li><li><a href="downloads.html">Downloads</a></li><li><a href="FAQ.html">FAQ</a></li><li><a href="news.html">News</a></li><li><a href="xsltproc2.html">The xsltproc tool</a></li><li><a href="docbook.html">DocBook</a></li><li><a href="API.html">The programming API</a></li><li><a href="python.html">Python and bindings</a></li><li><a href="internals.html">Library internals</a></li><li><a href="extensions.html">Writing extensions</a></li><li><a href="contribs.html">Contributions</a></li><li><a href="EXSLT/index.html" style="font-weight:bold">libexslt</a></li><li><a href="xslt.html">flat page</a>, <a href="site.xsl">stylesheet</a></li><li><a href="html/index.html" style="font-weight:bold">API Menu</a></li><li><a href="ChangeLog.html">ChangeLog</a></li></ul></td></tr></table><table width="100%" border="0" cellspacing="1" cellpadding="3"><tr><td colspan="1" bgcolor="#eecfa1" align="center"><center><b>Related links</b></center></td></tr><tr><td bgcolor="#fffacd"><ul><li><a href="tutorial/libxslttutorial.html">Tutorial</a>,
-          <a href="tutorial2/libxslt_pipes.html">Tutorial2</a></li><li><a href="xsltproc.html">Man page for xsltproc</a></li><li><a href="http://mail.gnome.org/archives/xslt/">Mail archive</a></li><li><a href="http://xmlsoft.org/">XML libxml2</a></li><li><a href="ftp://xmlsoft.org/">FTP</a></li><li><a href="http://www.zlatkovic.com/projects/libxml/">Windows binaries</a></li><li><a href="http://garypennington.net/libxml2/">Solaris binaries</a></li><li><a href="http://www.explain.com.au/oss/libxml2xslt.html">MacOsX binaries</a></li><li><a href="http://bugzilla.gnome.org/buglist.cgi?product=libxslt">Bug Tracker</a></li><li><a href="http://www.zend.com/php5/articles/php5-xmlphp.php#Heading17">XSLT with PHP</a></li><li><a href="http://www.mod-xslt2.com/">Apache module</a></li><li><a href="http://sourceforge.net/projects/libxml2-pas/">Pascal bindings</a></li><li><a href="http://xsldbg.sourceforge.net/">Xsldbg Debugger</a></li></ul></td></tr></table><table width="100%" border="0" cellspacing="1" cellpadding="3"><tr><td colspan="1" bgcolor="#eecfa1" align="center"><center><b>API Indexes</b></center></td></tr><tr><td bgcolor="#fffacd"><ul><li><a href="APIchunk0.html">Alphabetic</a></li><li><a href="APIconstructors.html">Constructors</a></li><li><a href="APIfunctions.html">Functions/Types</a></li><li><a href="APIfiles.html">Modules</a></li><li><a href="APIsymbols.html">Symbols</a></li></ul></td></tr></table></td></tr></table></td><td valign="top" bgcolor="#8b7765"><table border="0" cellspacing="0" cellpadding="1" width="100%"><tr><td><table border="0" cellspacing="0" cellpadding="1" width="100%" bgcolor="#000000"><tr><td><table border="0" cellpadding="3" cellspacing="1" width="100%"><tr><td bgcolor="#fffacd"><p>This document describes <a href="http://xmlsoft.org/XSLT/">libxslt</a>,
-the <a href="http://www.w3.org/TR/xslt">XSLT</a> C library developed for the
-<a href="http://www.gnome.org/">Gnome</a> project.</p><p>Here are some key points about libxslt:</p><ul><li>Libxslt is a C implementation</li>
-  <li>Libxslt is based on libxml for XML parsing, tree manipulation and XPath
-    support</li>
-  <li>It is written in plain C, making as few assumptions as possible, and
-    sticking closely to ANSI C/POSIX for easy embedding. Should works on
-    Linux/Unix/Windows.</li>
-  <li>This library is released under the <a href="http://www.opensource.org/licenses/mit-license.html">MIT
-  Licence</a></li>
-  <li>Though not designed primarily with performances in mind, libxslt seems
-    to be a relatively fast processor.</li>
+          <a href="tutorial2/libxslt_pipes.html">Tutorial2</a></li><li><a href="xsltproc.html">Man page for xsltproc</a></li><li><a href="http://mail.gnome.org/archives/xslt/">Mail archive</a></li><li><a href="http://xmlsoft.org/">XML libxml2</a></li><li><a href="ftp://xmlsoft.org/">FTP</a></li><li><a href="http://www.zlatkovic.com/projects/libxml/">Windows binaries</a></li><li><a href="http://garypennington.net/libxml2/">Solaris binaries</a></li><li><a href="http://www.explain.com.au/oss/libxml2xslt.html">MacOsX binaries</a></li><li><a href="http://bugzilla.gnome.org/buglist.cgi?product=libxslt">Bug Tracker</a></li><li><a href="http://www.zend.com/php5/articles/php5-xmlphp.php#Heading17">XSLT with PHP</a></li><li><a href="http://www.mod-xslt2.com/">Apache module</a></li><li><a href="http://sourceforge.net/projects/libxml2-pas/">Pascal bindings</a></li><li><a href="http://xsldbg.sourceforge.net/">Xsldbg Debugger</a></li></ul></td></tr></table><table width="100%" border="0" cellspacing="1" cellpadding="3"><tr><td colspan="1" bgcolor="#eecfa1" align="center"><center><b>API Indexes</b></center></td></tr><tr><td bgcolor="#fffacd"><ul><li><a href="APIchunk0.html">Alphabetic</a></li><li><a href="APIconstructors.html">Constructors</a></li><li><a href="APIfunctions.html">Functions/Types</a></li><li><a href="APIfiles.html">Modules</a></li><li><a href="APIsymbols.html">Symbols</a></li></ul></td></tr></table></td></tr></table></td><td valign="top" bgcolor="#8b7765"><table border="0" cellspacing="0" cellpadding="1" width="100%"><tr><td><table border="0" cellspacing="0" cellpadding="1" width="100%" bgcolor="#000000"><tr><td><table border="0" cellpadding="3" cellspacing="1" width="100%"><tr><td bgcolor="#fffacd"><p>This document describes <a href="http://xmlsoft.org/XSLT/">libxslt</a>,the
+<a href="http://www.w3.org/TR/xslt">XSLT</a>C library developed for the<a href="http://www.gnome.org/">Gnome</a>project.</p><p>Here are some key points about libxslt:</p><ul><li>Libxslt is a C implementation</li>
+  <li>Libxslt is based on libxml for XML parsing, tree manipulation and
+    XPathsupport</li>
+  <li>It is written in plain C, making as few assumptions as possible,
+    andsticking closely to ANSI C/POSIX for easy embedding. Should works
+    onLinux/Unix/Windows.</li>
+  <li>This library is released under the <a href="http://www.opensource.org/licenses/mit-license.html">MITLicence</a></li>
+  <li>Though not designed primarily with performances in mind, libxslt
+    seemsto be a relatively fast processor.</li>
 </ul><p><a href="bugs.html">Daniel Veillard</a></p></td></tr></table></td></tr></table></td></tr></table></td></tr></table></td></tr></table></body></html>
index 92aaf54..ff481fe 100644 (file)
@@ -8,19 +8,22 @@
   </vendor>
   <product id="libxslt">
     <name>libxslt</name>
-    <version>1.1.15</version>
-    <last-release> Sep 04 2005</last-release>
+    <version>1.1.16</version>
+    <last-release> May 01 2006</last-release>
     <info-url>http://xmlsoft.org/XSLT/</info-url>
-    <changes>   - build fixes: Windows build cleanups and updates (Igor Zlatkovic),
-    remove jhbuild warnings
-   - bug fixes: negative number formatting (William Brack), number
-    formatting per mille definition (William Brack), XInclude default values
-    (William), text copy bugs (William), bug related to xmlXPathContext size,
-    reuse libxml2 memory management for text nodes, dictionnary text bug,
-    forbid variables in match (needs libxml2-2.6.21)
-   - improvements: EXSLT dyn:map (Mark Vakoc),
-   - documentation: EXSLT date and time functions namespace in man (Jonathan
-    Wakely)
+    <changes>   - portability fixes: EXSLT date/time on Solaris and IRIX (Albert
+    Chin),HP-UX  build (Albert Chin),
+   - build fixes: Python detection(Joseph Sacco), plugin configurei(Joel
+    Reed)
+   - bug fixes: pattern compilation fix(William Brack), EXSLT date/timefix
+    (Thomas Broyer), EXSLT function bug, potential loop on variableeval,
+    startup race (Christopher Palmer), debug statement left in python(Nic
+    Ferrier), various cleanup based on Coverity reports), error onOut of
+    memory condition (Charles Hardin), various namespace prefixesfixes
+    (Kasimier Buchcik),
+   - improvement: speed up sortingi, start of internals refactoring
+    (KasimierBuchcik)
+   - documentation: man page fixes and updates (Daniel Leidert)
 
 </changes>
   </product>
index a6ed7ee..e811e45 100644 (file)
@@ -8,155 +8,162 @@ H2 {font-family: Verdana,Arial,Helvetica}
 H3 {font-family: Verdana,Arial,Helvetica}
 A:link, A:visited, A:active { text-decoration: underline }
     </style><title>News</title></head><body bgcolor="#8b7765" text="#000000" link="#a06060" vlink="#000000"><table border="0" width="100%" cellpadding="5" cellspacing="0" align="center"><tr><td width="120"><a href="http://swpat.ffii.org/"><img src="epatents.png" alt="Action against software patents" /></a></td><td width="180"><a href="http://www.gnome.org/"><img src="gnome2.png" alt="Gnome2 Logo" /></a><a href="http://www.w3.org/Status"><img src="w3c.png" alt="W3C logo" /></a><a href="http://www.redhat.com"><img src="redhat.gif" alt="Red Hat Logo" /></a><div align="left"><a href="http://xmlsoft.org/XSLT/"><img src="Libxslt-Logo-180x168.gif" alt="Made with Libxslt Logo" /></a></div></td><td><table border="0" width="90%" cellpadding="2" cellspacing="0" align="center" bgcolor="#000000"><tr><td><table width="100%" border="0" cellspacing="1" cellpadding="3" bgcolor="#fffacd"><tr><td align="center"><h1>The XSLT C library for Gnome</h1><h2>News</h2></td></tr></table></td></tr></table></td></tr></table><table border="0" cellpadding="4" cellspacing="0" width="100%" align="center"><tr><td bgcolor="#8b7765"><table border="0" cellspacing="0" cellpadding="2" width="100%"><tr><td valign="top" width="200" bgcolor="#8b7765"><table border="0" cellspacing="0" cellpadding="1" width="100%" bgcolor="#000000"><tr><td><table width="100%" border="0" cellspacing="1" cellpadding="3"><tr><td colspan="1" bgcolor="#eecfa1" align="center"><center><b>Main Menu</b></center></td></tr><tr><td bgcolor="#fffacd"><form action="search.php" enctype="application/x-www-form-urlencoded" method="get"><input name="query" type="text" size="20" value="" /><input name="submit" type="submit" value="Search ..." /></form><ul><li><a href="index.html">Home</a></li><li><a href="http://xmlsoft.org/wiki">Wiki</a></li><li><a href="intro.html">Introduction</a></li><li><a href="docs.html">Documentation</a></li><li><a href="bugs.html">Reporting bugs and getting help</a></li><li><a href="help.html">How to help</a></li><li><a href="downloads.html">Downloads</a></li><li><a href="FAQ.html">FAQ</a></li><li><a href="news.html">News</a></li><li><a href="xsltproc2.html">The xsltproc tool</a></li><li><a href="docbook.html">DocBook</a></li><li><a href="API.html">The programming API</a></li><li><a href="python.html">Python and bindings</a></li><li><a href="internals.html">Library internals</a></li><li><a href="extensions.html">Writing extensions</a></li><li><a href="contribs.html">Contributions</a></li><li><a href="EXSLT/index.html" style="font-weight:bold">libexslt</a></li><li><a href="xslt.html">flat page</a>, <a href="site.xsl">stylesheet</a></li><li><a href="html/index.html" style="font-weight:bold">API Menu</a></li><li><a href="ChangeLog.html">ChangeLog</a></li></ul></td></tr></table><table width="100%" border="0" cellspacing="1" cellpadding="3"><tr><td colspan="1" bgcolor="#eecfa1" align="center"><center><b>Related links</b></center></td></tr><tr><td bgcolor="#fffacd"><ul><li><a href="tutorial/libxslttutorial.html">Tutorial</a>,
-          <a href="tutorial2/libxslt_pipes.html">Tutorial2</a></li><li><a href="xsltproc.html">Man page for xsltproc</a></li><li><a href="http://mail.gnome.org/archives/xslt/">Mail archive</a></li><li><a href="http://xmlsoft.org/">XML libxml2</a></li><li><a href="ftp://xmlsoft.org/">FTP</a></li><li><a href="http://www.zlatkovic.com/projects/libxml/">Windows binaries</a></li><li><a href="http://garypennington.net/libxml2/">Solaris binaries</a></li><li><a href="http://www.explain.com.au/oss/libxml2xslt.html">MacOsX binaries</a></li><li><a href="http://bugzilla.gnome.org/buglist.cgi?product=libxslt">Bug Tracker</a></li><li><a href="http://www.zend.com/php5/articles/php5-xmlphp.php#Heading17">XSLT with PHP</a></li><li><a href="http://www.mod-xslt2.com/">Apache module</a></li><li><a href="http://sourceforge.net/projects/libxml2-pas/">Pascal bindings</a></li><li><a href="http://xsldbg.sourceforge.net/">Xsldbg Debugger</a></li></ul></td></tr></table><table width="100%" border="0" cellspacing="1" cellpadding="3"><tr><td colspan="1" bgcolor="#eecfa1" align="center"><center><b>API Indexes</b></center></td></tr><tr><td bgcolor="#fffacd"><ul><li><a href="APIchunk0.html">Alphabetic</a></li><li><a href="APIconstructors.html">Constructors</a></li><li><a href="APIfunctions.html">Functions/Types</a></li><li><a href="APIfiles.html">Modules</a></li><li><a href="APIsymbols.html">Symbols</a></li></ul></td></tr></table></td></tr></table></td><td valign="top" bgcolor="#8b7765"><table border="0" cellspacing="0" cellpadding="1" width="100%"><tr><td><table border="0" cellspacing="0" cellpadding="1" width="100%" bgcolor="#000000"><tr><td><table border="0" cellpadding="3" cellspacing="1" width="100%"><tr><td bgcolor="#fffacd"><p>The <a href="ChangeLog.html">change log</a> describes the recents commits
-to the <a href="http://cvs.gnome.org/viewcvs/libxslt/">CVS</a> code base.</p><p>Those are the public releases made:</p><h3>1.1.16: May 01 2006</h3><ul><li>portability fixes: EXSLT date/time on Solaris and IRIX (Albert Chin),
-      HP-UX  build (Albert Chin), 
-  </li><li>build fixes: Python detection(Joseph Sacco), plugin configurei
-      (Joel Reed)</li>
-  <li>bug fixes: pattern compilation fix(William Brack), EXSLT date/time
-      fix (Thomas Broyer), EXSLT function bug, potential loop on variable
-      eval, startup race (Christopher Palmer), debug statement left in python
-      (Nic Ferrier), various cleanup based on Coverity reports), error on
-      Out of memory condition (Charles Hardin), various namespace prefixes
-      fixes (Kasimier Buchcik), </li>
-  <li>improvement: speed up sortingi, start of internals refactoring (Kasimier
-      Buchcik)</li>
-  <li>documentation: man page fixes and updates (Daniel Leidert)
-</li></ul><h3>1.1.15: Sep 04 2005</h3><ul><li>build fixes: Windows build cleanups and updates (Igor Zlatkovic),
-    remove jhbuild warnings</li>
-  <li>bug fixes: negative number formatting (William Brack), number
-    formatting per mille definition (William Brack), XInclude default values
-    (William), text copy bugs (William), bug related to xmlXPathContext size,
-    reuse libxml2 memory management for text nodes, dictionnary text bug,
-    forbid variables in match (needs libxml2-2.6.21)</li>
+          <a href="tutorial2/libxslt_pipes.html">Tutorial2</a></li><li><a href="xsltproc.html">Man page for xsltproc</a></li><li><a href="http://mail.gnome.org/archives/xslt/">Mail archive</a></li><li><a href="http://xmlsoft.org/">XML libxml2</a></li><li><a href="ftp://xmlsoft.org/">FTP</a></li><li><a href="http://www.zlatkovic.com/projects/libxml/">Windows binaries</a></li><li><a href="http://garypennington.net/libxml2/">Solaris binaries</a></li><li><a href="http://www.explain.com.au/oss/libxml2xslt.html">MacOsX binaries</a></li><li><a href="http://bugzilla.gnome.org/buglist.cgi?product=libxslt">Bug Tracker</a></li><li><a href="http://www.zend.com/php5/articles/php5-xmlphp.php#Heading17">XSLT with PHP</a></li><li><a href="http://www.mod-xslt2.com/">Apache module</a></li><li><a href="http://sourceforge.net/projects/libxml2-pas/">Pascal bindings</a></li><li><a href="http://xsldbg.sourceforge.net/">Xsldbg Debugger</a></li></ul></td></tr></table><table width="100%" border="0" cellspacing="1" cellpadding="3"><tr><td colspan="1" bgcolor="#eecfa1" align="center"><center><b>API Indexes</b></center></td></tr><tr><td bgcolor="#fffacd"><ul><li><a href="APIchunk0.html">Alphabetic</a></li><li><a href="APIconstructors.html">Constructors</a></li><li><a href="APIfunctions.html">Functions/Types</a></li><li><a href="APIfiles.html">Modules</a></li><li><a href="APIsymbols.html">Symbols</a></li></ul></td></tr></table></td></tr></table></td><td valign="top" bgcolor="#8b7765"><table border="0" cellspacing="0" cellpadding="1" width="100%"><tr><td><table border="0" cellspacing="0" cellpadding="1" width="100%" bgcolor="#000000"><tr><td><table border="0" cellpadding="3" cellspacing="1" width="100%"><tr><td bgcolor="#fffacd"><p>The <a href="ChangeLog.html">change log</a>describes the recents commitsto
+the <a href="http://cvs.gnome.org/viewcvs/libxslt/">CVS</a>code base.</p><p>Those are the public releases made:</p><h3>1.1.17: Jun 6 2006</h3><ul><li>portability fixes: python detection</li>
+  <li>bug fixes: some regression tests, attribute/namespaces output (Kasimier
+    Buchcik), problem in mixed xsl:value-of and xsl:text uses (Kasimier)</li>
+  <li>improvements: internal refactoring (Kasimier Buchcik), use of the XPath
+    object cache in libxml2-2.6.25 (Kasimier)</li>
+</ul><h3>1.1.16: May 01 2006</h3><ul><li>portability fixes: EXSLT date/time on Solaris and IRIX (Albert
+    Chin),HP-UX  build (Albert Chin),</li>
+  <li>build fixes: Python detection(Joseph Sacco), plugin configurei(Joel
+    Reed)</li>
+  <li>bug fixes: pattern compilation fix(William Brack), EXSLT date/timefix
+    (Thomas Broyer), EXSLT function bug, potential loop on variableeval,
+    startup race (Christopher Palmer), debug statement left in python(Nic
+    Ferrier), various cleanup based on Coverity reports), error onOut of
+    memory condition (Charles Hardin), various namespace prefixesfixes
+    (Kasimier Buchcik),</li>
+  <li>improvement: speed up sortingi, start of internals refactoring
+    (KasimierBuchcik)</li>
+  <li>documentation: man page fixes and updates (Daniel Leidert)</li>
+</ul><h3>1.1.15: Sep 04 2005</h3><ul><li>build fixes: Windows build cleanups and updates (Igor Zlatkovic),remove
+    jhbuild warnings</li>
+  <li>bug fixes: negative number formatting (William Brack), numberformatting
+    per mille definition (William Brack), XInclude default values(William),
+    text copy bugs (William), bug related to xmlXPathContext size,reuse
+    libxml2 memory management for text nodes, dictionnary text bug,forbid
+    variables in match (needs libxml2-2.6.21)</li>
   <li>improvements: EXSLT dyn:map (Mark Vakoc),</li>
-  <li>documentation: EXSLT date and time functions namespace in man (Jonathan
-    Wakely)</li>
-</ul><h3>1.1.14: Apr 02 2005</h3><ul><li>bug fixes: text node on stylesheet document without a dictionary
-    (William Brack), more checking of XSLT syntax, calling xsltInit()
-    multiple times, mode values interning raised by Mark Vakoc, bug in
-    pattern matching with ancestors, bug in patterna matching with cascading
-    select, xinclude and document() problem, build outside of source tree
-    (Mike Castle)</li>
-  <li>improvement: added a --nodict mode to xsltproc to check problems for
-    docuemtns without dictionnaries</li>
-</ul><h3>1.1.13: Mar 13 2005</h3><ul><li>build fixes: 64bits cleanup (William Brack), python 2.4 test (William),
-    LIBXSLT_VERSION_EXTRA on Windows (William), Windows makefiles fixes (Joel
-    Reed), libgcrypt-devel requires for RPM spec.</li>
-  <li>bug fixes: exslt day-of-week-in-month (Sal Paradise), xsl:call-template
-    should not change the current template rule (William Brack), evaluation
-    of global variables (William Brack), RVT's in XPath predicates (William),
-    namespace URI on template names (Mark Vakoc), stat() for Windows patch
-    (Aleksey Gurtovoy), pattern expression fixes (William Brack), out of
-    memory detection misses (William), parserOptions propagation (William),
-    exclude-result-prefixes fix (William), // patten fix (William).</li>
-  <li>extensions: module support (Joel Reed), dictionnary based speedups
-    trying to get rid of xmlStrEqual as much as possible.</li>
+  <li>documentation: EXSLT date and time functions namespace in man
+    (JonathanWakely)</li>
+</ul><h3>1.1.14: Apr 02 2005</h3><ul><li>bug fixes: text node on stylesheet document without a
+    dictionary(William Brack), more checking of XSLT syntax, calling
+    xsltInit()multiple times, mode values interning raised by Mark Vakoc, bug
+    inpattern matching with ancestors, bug in patterna matching with
+    cascadingselect, xinclude and document() problem, build outside of source
+    tree(Mike Castle)</li>
+  <li>improvement: added a --nodict mode to xsltproc to check problems
+    fordocuemtns without dictionnaries</li>
+</ul><h3>1.1.13: Mar 13 2005</h3><ul><li>build fixes: 64bits cleanup (William Brack), python 2.4 test
+    (William),LIBXSLT_VERSION_EXTRA on Windows (William), Windows makefiles
+    fixes (JoelReed), libgcrypt-devel requires for RPM spec.</li>
+  <li>bug fixes: exslt day-of-week-in-month (Sal Paradise),
+    xsl:call-templateshould not change the current template rule (William
+    Brack), evaluationof global variables (William Brack), RVT's in XPath
+    predicates (William),namespace URI on template names (Mark Vakoc), stat()
+    for Windows patch(Aleksey Gurtovoy), pattern expression fixes (William
+    Brack), out ofmemory detection misses (William), parserOptions
+    propagation (William),exclude-result-prefixes fix (William), // patten
+    fix (William).</li>
+  <li>extensions: module support (Joel Reed), dictionnary based
+    speedupstrying to get rid of xmlStrEqual as much as possible.</li>
   <li>documentation: added Wiki (Joel Reed)</li>
 </ul><h3>1.1.12: Oct 29 2004</h3><ul><li>build fixes: warnings removal (William).</li>
-  <li>bug fixes: attribute document pointer fix (Mark Vakoc), exslt date
-    negative periods (William Brack), generated tree structure fixes,
-    namespace lookup fix, use reentrant gmtime_r (William Brack),
-    exslt:funtion namespace fix (William), potential NULL pointer reference
-    (Dennis Dams, William), force string interning on generated
-  documents.</li>
-  <li>documentation: update of the second tutorial (Panagiotis Louridas), add
-    exslt doc in rpm packages, fix the xsltproc man page.</li>
-</ul><h3>1.1.11: Sep 29 2004</h3><ul><li>bug fixes: xsl:include problems (William Brack), UTF8 number pattern
-    (William), date-time validation (William), namespace fix (William),
-    various Exslt date fixes (William), error callback fixes, leak with
-    namespaced global variable, attempt to fix a weird problem #153137</li>
+  <li>bug fixes: attribute document pointer fix (Mark Vakoc), exslt
+    datenegative periods (William Brack), generated tree structure
+    fixes,namespace lookup fix, use reentrant gmtime_r (William
+    Brack),exslt:funtion namespace fix (William), potential NULL pointer
+    reference(Dennis Dams, William), force string interning on
+    generateddocuments.</li>
+  <li>documentation: update of the second tutorial (Panagiotis Louridas),
+    addexslt doc in rpm packages, fix the xsltproc man page.</li>
+</ul><h3>1.1.11: Sep 29 2004</h3><ul><li>bug fixes: xsl:include problems (William Brack), UTF8 number
+    pattern(William), date-time validation (William), namespace fix
+    (William),various Exslt date fixes (William), error callback fixes, leak
+    withnamespaced global variable, attempt to fix a weird problem
+  #153137</li>
   <li>improvements: exslt:date-sum tests (Derek Poon)</li>
   <li>documentation: second tutorial by Panagiotis Lourida</li>
-</ul><h3>1.1.10: Aug 31 2004</h3><ul><li>build fix: NUL in c file blocking compilation on Solaris, Windows build
-    (Igor Zlatkovic)</li>
+</ul><h3>1.1.10: Aug 31 2004</h3><ul><li>build fix: NUL in c file blocking compilation on Solaris, Windows
+    build(Igor Zlatkovic)</li>
   <li>fix: key initialization problem (William Brack)</li>
   <li>documentation: fixed missing man page description for --path</li>
-</ul><h3>1.1.9: Aug 22 2004</h3><ul><li>build fixes: missing tests (William Brack), Python dependancies, Python
-    on 64bits boxes, --with-crypto flag (Rob Richards),</li>
-  <li>fixes: RVT key handling (William), Python binding (William and Sitsofe
-    Wheeler), key and XPath troubles (William), template priority on imports
-    (William), str:tokenize with empty strings (William), #default namespace
-    alias behaviour (William), doc ordering missing for main document
-    (William), 64bit bug (Andreas Schwab)</li>
-  <li>improvements: EXSLT date:sum added (Joel Reed), hook for document
-    loading for David Hyatt, xsltproc --nodtdattr to avoid defaulting DTD
-    attributes, extend xsltproc --version with CVS stamp (William).</li>
+</ul><h3>1.1.9: Aug 22 2004</h3><ul><li>build fixes: missing tests (William Brack), Python dependancies,
+    Pythonon 64bits boxes, --with-crypto flag (Rob Richards),</li>
+  <li>fixes: RVT key handling (William), Python binding (William and
+    SitsofeWheeler), key and XPath troubles (William), template priority on
+    imports(William), str:tokenize with empty strings (William), #default
+    namespacealias behaviour (William), doc ordering missing for main
+    document(William), 64bit bug (Andreas Schwab)</li>
+  <li>improvements: EXSLT date:sum added (Joel Reed), hook for
+    documentloading for David Hyatt, xsltproc --nodtdattr to avoid defaulting
+    DTDattributes, extend xsltproc --version with CVS stamp (William).</li>
   <li>Documentation: web page problem reported by Oliver Stoeneberg</li>
-</ul><h3>1.1.8: July 5 2004</h3><ul><li>build fixes: Windows runtime options (Oliver Stoeneberg), Windows
-    binary package layout (Igor Zlatkovic), libgcrypt version test and link
-    (William)</li>
+</ul><h3>1.1.8: July 5 2004</h3><ul><li>build fixes: Windows runtime options (Oliver Stoeneberg), Windowsbinary
+    package layout (Igor Zlatkovic), libgcrypt version test and
+  link(William)</li>
   <li>documentation: fix libxslt namespace name in doc (William)</li>
-  <li>bug fixes: undefined namespace message (William Brack), search engine
-    (William), multiple namespace fixups (William), namespace fix for key
-    evaluation (William), Python memory debug bindings,</li>
+  <li>bug fixes: undefined namespace message (William Brack), search
+    engine(William), multiple namespace fixups (William), namespace fix for
+    keyevaluation (William), Python memory debug bindings,</li>
   <li>improvements: crypto extensions for exslt (Joel Reed, William)</li>
 </ul><h3>1.1.7: May 17 2004</h3><ul><li>build fix: warning about localtime_r on Solaris</li>
-  <li>bug fix: UTF8 string tokenize (William Brack), subtle memory
-    corruption, linefeed after comment at document level (William),
-    disable-output-escaping problem (William), pattern compilation in deep
-    imported stylesheets (William), namespace extension prefix bug,
-    libxslt.m4 bug (Edward Rudd), namespace lookup for attribute, namespaced
-    DOCTYPE name</li>
+  <li>bug fix: UTF8 string tokenize (William Brack), subtle memorycorruption,
+    linefeed after comment at document level
+    (William),disable-output-escaping problem (William), pattern compilation
+    in deepimported stylesheets (William), namespace extension prefix
+    bug,libxslt.m4 bug (Edward Rudd), namespace lookup for attribute,
+    namespacedDOCTYPE name</li>
 </ul><h3>1.1.6: Apr 18 2004</h3><ul><li>2 bug fixes about keys fixed one by Mark Vakoc</li>
 </ul><h3>1.1.5: Mar 23 2004</h3><ul><li>performance: use dictionnary lookup for variables</li>
   <li>remove use of _private from source documents</li>
   <li>cleanup of "make tests" output</li>
-  <li>bugfixes: AVT in local variables, use localtime_r to avoid thread
-    troubles (William), dictionary handling bug (William), limited number of
-    stubstitutions in AVT (William), tokenize fix for UTF-8 (William),
-    superfluous namespace (William), xsltproc error code on
-    &lt;xsl:message&gt; halt, OpenVMS fix, dictionnary reference counting
-    change.</li>
-</ul><h3>1.1.4: Feb 23 2004</h3><ul><li>bugfixes: attributes without doc (Mariano Suárez-Alvarez), problem with
-    Yelp, extension problem</li>
+  <li>bugfixes: AVT in local variables, use localtime_r to avoid
+    threadtroubles (William), dictionary handling bug (William), limited
+    number ofstubstitutions in AVT (William), tokenize fix for UTF-8
+    (William),superfluous namespace (William), xsltproc error code
+    on&lt;xsl:message&gt; halt, OpenVMS fix, dictionnary reference
+    countingchange.</li>
+</ul><h3>1.1.4: Feb 23 2004</h3><ul><li>bugfixes: attributes without doc (Mariano Suárez-Alvarez), problem
+    withYelp, extension problem</li>
   <li>display extension modules (Steve Little)</li>
   <li>Windows compilation patch (Mark Vadoc), Mingw (Mikhail Grushinskiy)</li>
-</ul><h3>1.1.3: Feb 16 2004</h3><ul><li>Rewrote the Attribute Value Template code, new XPath compilation
-    interfaces, dictionnary reuses for XSLT with potential for serious
-    performance improvements.</li>
-  <li>bug fixes: portability (William Brack), key() in node-set() results
-    (William), comment before doctype (William), math and node-set() problems
-    (William), cdata element and default namespace (William), behaviour on
-    unknown XSLT elements (Stefan Kost), priority of "//foo" patterns
-    (William), xsl:element and xsl:attribute QName check (William), comments
-    with -- (William), attribute namespace (William), check for ?&gt; in PI
-    (William)</li>
+</ul><h3>1.1.3: Feb 16 2004</h3><ul><li>Rewrote the Attribute Value Template code, new XPath
+    compilationinterfaces, dictionnary reuses for XSLT with potential for
+    seriousperformance improvements.</li>
+  <li>bug fixes: portability (William Brack), key() in node-set()
+    results(William), comment before doctype (William), math and node-set()
+    problems(William), cdata element and default namespace (William),
+    behaviour onunknown XSLT elements (Stefan Kost), priority of "//foo"
+    patterns(William), xsl:element and xsl:attribute QName check (William),
+    commentswith -- (William), attribute namespace (William), check for ?&gt;
+    in PI(William)</li>
   <li>Documentations: cleanup (John Fleck and William)</li>
-  <li>Python: patch for OS-X (Gianni Ceccarelli), enums export (Stephane
-    bidoul)</li>
-</ul><h3>1.1.2: Dec 24 2003</h3><ul><li>Documentation fixes (John Fleck, William Brack), EXSLT documentation
-    (William Brack)</li>
+  <li>Python: patch for OS-X (Gianni Ceccarelli), enums export
+    (Stephanebidoul)</li>
+</ul><h3>1.1.2: Dec 24 2003</h3><ul><li>Documentation fixes (John Fleck, William Brack), EXSLT
+    documentation(William Brack)</li>
   <li>Windows compilation fixes for MSVC and Mingw (Igor Zlatkovic)</li>
-  <li>Bug fixes: exslt:date returning NULL strings (William Brack),
-    namespaces output (William Brack),  key and namespace definition problem,
-    passing options down to the document() parser, xsl:number fixes (William
-    Brack)</li>
+  <li>Bug fixes: exslt:date returning NULL strings (William Brack),namespaces
+    output (William Brack),  key and namespace definition problem,passing
+    options down to the document() parser, xsl:number fixes
+  (WilliamBrack)</li>
 </ul><h3>1.1.1: Dec 10 2003</h3><ul><li>code cleanup (William Brack)</li>
   <li>Windows: Makefile improvements (Igor Zlatkovic)</li>
-  <li>documentation improvements: William Brack, libexslt man page (Jonathan
-    Wakely)</li>
+  <li>documentation improvements: William Brack, libexslt man page
+    (JonathanWakely)</li>
   <li>param in EXSLT functions (Shaun McCance)</li>
   <li>XSLT debugging improvements (Mark Vakoc)</li>
-  <li>bug fixes: number formatting (Bjorn Reese), exslt:tokenize (William
-    Brack), key selector parsing with | reported by Oleg Paraschenko,
-    xsl:element with computed namespaces (William Brack), xslt:import/include
-    recursion detection (William Brack), exslt:function used in keys (William
-    Brack), bug when CDATA_SECTION are foun in the tree (William Brack),
-    entities handling when using XInclude.</li>
+  <li>bug fixes: number formatting (Bjorn Reese), exslt:tokenize
+    (WilliamBrack), key selector parsing with | reported by Oleg
+    Paraschenko,xsl:element with computed namespaces (William Brack),
+    xslt:import/includerecursion detection (William Brack), exslt:function
+    used in keys (WilliamBrack), bug when CDATA_SECTION are foun in the tree
+    (William Brack),entities handling when using XInclude.</li>
 </ul><h3>1.1.0: Nov 4 2003</h3><ul><li>Removed DocBook SGML broken support</li>
   <li>fix xsl:key to work with PIs</li>
-  <li>Makefile and build improvement (Graham Wilson), build cleanup (William
-    Brack), macro fix (Justin Fletcher), build outside of source tree (Roumen
-    Petrov)</li>
-  <li>xsltproc option display fix (Alexey Efimov), --load-trace (Crutcher
-    Dunnavant)</li>
+  <li>Makefile and build improvement (Graham Wilson), build cleanup
+    (WilliamBrack), macro fix (Justin Fletcher), build outside of source tree
+    (RoumenPetrov)</li>
+  <li>xsltproc option display fix (Alexey Efimov), --load-trace
+    (CrutcherDunnavant)</li>
   <li>Python: never use stdout for error</li>
   <li>extension memory error fix (Karl Eichwalder)</li>
   <li>header path fixes (Steve Ball)</li>
   <li>added saxon:line-number() to libexslt (Brett Kail)</li>
-  <li>Fix some tortuous template problems when using predicates (William
-    Brack)</li>
+  <li>Fix some tortuous template problems when using predicates
+  (WilliamBrack)</li>
   <li>Debugger status patch (Kasimier Buchcik)</li>
   <li>Use new libxml2-2.6.x APIs for faster processing</li>
   <li>Make sure xsl:sort is empty</li>
@@ -175,66 +182,67 @@ to the <a href="http://cvs.gnome.org/viewcvs/libxslt/">CVS</a> code base.</p><p>
   <li>apply-templates crash (William Brack)</li>
   <li>bug with imported templates (William Brack)</li>
   <li>imported attribute-sets merging bug (DocBook) (William Brack)</li>
-</ul><h3>1.0.32: Aug 9 2003</h3><ul><li>bugfixes: xsltSaveResultToFile() python binding (Chris Jaeger), EXSLT
-    function (William Brack), RVT for globals (William Brack), EXSLT date
-    (William Brack),
-    <p>speed of large text output, xsl:copy with attributes, strip-space and
-    namespaces prefix, fix for --path xsltproc option, EXST:tokenize (Shaun
-    McCance), EXSLT:seconds (William Brack), sort with multiple keys (William
-    Brack), checking of { and } for attribute value templates (William
-    Brack)</p>
+</ul><h3>1.0.32: Aug 9 2003</h3><ul><li>bugfixes: xsltSaveResultToFile() python binding (Chris Jaeger),
+    EXSLTfunction (William Brack), RVT for globals (William Brack), EXSLT
+    date(William Brack),
+    <p>speed of large text output, xsl:copy with attributes, strip-space
+    andnamespaces prefix, fix for --path xsltproc option, EXST:tokenize
+    (ShaunMcCance), EXSLT:seconds (William Brack), sort with multiple keys
+    (WilliamBrack), checking of { and } for attribute value templates
+    (WilliamBrack)</p>
   </li>
   <li>Python bindings for extension elements (Sean Treadway)</li>
   <li>EXSLT:split added (Shaun McCance)</li>
   <li>portability fixes for HP-UX/Solaris/IRIX (William Brack)</li>
   <li>doc cleanup</li>
-</ul><h3>1.0.31: Jul 6 2003</h3><ul><li>bugfixes: xsl:copy on namespace nodes, AVT for xsl:sort order, fix for
-    the debugger (Keith Isdale), output filename limitation, trio.h and
-    triodef.h added (Albert Chin), EXSLT node-set (Peter Breitenlohner),
-    xsltChoose and whitespace (Igor Zlatkovic),
-    <p>stylesheet compilation (Igor Zlatkovic), NaN and sort (William Brack),
-    RVT bug introduced in 1.0.30</p>
+</ul><h3>1.0.31: Jul 6 2003</h3><ul><li>bugfixes: xsl:copy on namespace nodes, AVT for xsl:sort order, fix
+    forthe debugger (Keith Isdale), output filename limitation, trio.h
+    andtriodef.h added (Albert Chin), EXSLT node-set (Peter
+    Breitenlohner),xsltChoose and whitespace (Igor Zlatkovic),
+    <p>stylesheet compilation (Igor Zlatkovic), NaN and sort (William
+    Brack),RVT bug introduced in 1.0.30</p>
   </li>
   <li>avoid generating &amp;quot; (fix in libxml2-2.5.8)</li>
-  <li>fix 64bit cleaness problem and compilation troubles introduced in
-  1.0.30</li>
+  <li>fix 64bit cleaness problem and compilation troubles introduced
+  in1.0.30</li>
   <li>Windows makefile generation (Igor Zlatkovic)</li>
   <li>HP-UX portability fix</li>
 </ul><h3>1.0.30: May 4 2003</h3><ul><li>Fixes and new APIs to handle Result Value Trees and avoid leaks</li>
-  <li>Fixes for: EXSLT math pow() function (Charles Bozeman), global
-    parameter and global variables mismatch, a segfault on pattern
-    compilation errors, namespace copy in xsl:copy-of, python generator
-    problem, OpenVMS trio update, premature call to xsltFreeStackElem (Igor),
-    current node when templates applies to attributes</li>
+  <li>Fixes for: EXSLT math pow() function (Charles Bozeman), globalparameter
+    and global variables mismatch, a segfault on patterncompilation errors,
+    namespace copy in xsl:copy-of, python generatorproblem, OpenVMS trio
+    update, premature call to xsltFreeStackElem (Igor),current node when
+    templates applies to attributes</li>
 </ul><h3>1.0.29: Apr 1 2003</h3><ul><li>performance improvements especially for large flat documents</li>
-  <li>bug fixes: Result Value Tree handling, XML IDs, keys(), extra namespace
-    declarations with xsl:elements.</li>
-  <li>portability: python and trio fixes (Albert Chin), python on Solaris
-    (Ben Phillips)</li>
+  <li>bug fixes: Result Value Tree handling, XML IDs, keys(), extra
+    namespacedeclarations with xsl:elements.</li>
+  <li>portability: python and trio fixes (Albert Chin), python on Solaris(Ben
+    Phillips)</li>
 </ul><h3>1.0.28: Mar 24 2003</h3><ul><li>fixed node() in patterns semantic.</li>
   <li>fixed a memory access problem in format-number()</li>
   <li>fixed stack overflow in recursive global variable or params</li>
-  <li>cleaned up Result Value Tree handling, and fixed a couple of old bugs
-    in the process</li>
-</ul><h3>1.0.27: Feb 24 2003</h3><ul><li>bug fixes: spurious xmlns:nsX="" generation, serialization bug (in
-    libxml2), a namespace copy problem, errors in the RPM spec prereqs</li>
+  <li>cleaned up Result Value Tree handling, and fixed a couple of old bugsin
+    the process</li>
+</ul><h3>1.0.27: Feb 24 2003</h3><ul><li>bug fixes: spurious xmlns:nsX="" generation, serialization bug
+    (inlibxml2), a namespace copy problem, errors in the RPM spec prereqs</li>
   <li>Windows path canonicalization and document cache fix (Igor)</li>
-</ul><h3>1.0.26: Feb 10 2003</h3><ul><li>Fixed 3 serious bugs in document() and stylesheet compilation which
-    could lead to a crash</li>
-</ul><h3>1.0.25: Feb 5 2003</h3><ul><li>Bug fix: double-free for standalone stylesheets introduced in 1.0.24, C
-    syntax pbm, 3 bugs reported by Eric van der Vlist</li>
-  <li>Some XPath and XInclude related problems were actually fixed in
-    libxml2-2.5.2</li>
+</ul><h3>1.0.26: Feb 10 2003</h3><ul><li>Fixed 3 serious bugs in document() and stylesheet compilation
+    whichcould lead to a crash</li>
+</ul><h3>1.0.25: Feb 5 2003</h3><ul><li>Bug fix: double-free for standalone stylesheets introduced in 1.0.24,
+    Csyntax pbm, 3 bugs reported by Eric van der Vlist</li>
+  <li>Some XPath and XInclude related problems were actually fixed
+    inlibxml2-2.5.2</li>
   <li>Documentation: emphasize taht --docbook is not for XML docs.</li>
-</ul><h3>1.0.24: Jan 14 2003</h3><ul><li>bug fixes: imported global varables, python bindings (Stéphane Bidoul),
-    EXSLT memory leak (Charles Bozeman), namespace generation on
-    xsl:attribute, space handling with imports (Daniel Stodden),
-    extension-element-prefixes (Josh Parsons), comments within xsl:text (Matt
-    Sergeant), superfluous xmlns generation, XInclude related bug for
-    numbering, EXSLT strings (Alexey Efimov), attribute-sets computation on
-    imports, extension module init and shutdown callbacks not called</li>
-  <li>HP-UX portability (Alexey Efimov), Windows makefiles (Igor and Stephane
-    Bidoul), VMS makefile updates (Craig A. Berry)</li>
+</ul><h3>1.0.24: Jan 14 2003</h3><ul><li>bug fixes: imported global varables, python bindings (Stéphane
+    Bidoul),EXSLT memory leak (Charles Bozeman), namespace generation
+    onxsl:attribute, space handling with imports (Daniel
+    Stodden),extension-element-prefixes (Josh Parsons), comments within
+    xsl:text (MattSergeant), superfluous xmlns generation, XInclude related
+    bug fornumbering, EXSLT strings (Alexey Efimov), attribute-sets
+    computation onimports, extension module init and shutdown callbacks not
+    called</li>
+  <li>HP-UX portability (Alexey Efimov), Windows makefiles (Igor and
+    StephaneBidoul), VMS makefile updates (Craig A. Berry)</li>
   <li>adds xsltGetProfileInformation() (Michael Rothwell)</li>
   <li>fix the API generation scripts</li>
   <li>API to provide the sorting routines (Richard Jinks)</li>
@@ -244,31 +252,31 @@ to the <a href="http://cvs.gnome.org/viewcvs/libxslt/">CVS</a> code base.</p><p>
   <li>document() now support fragment identifiers in URIs</li>
 </ul><h3>1.0.23: Nov 17 2002</h3><ul><li>Windows build cleanup (Igor)</li>
   <li>Unix build and RPM packaging cleanup</li>
-  <li>Improvement of the python bindings: extension functions and activating
-    EXSLT</li>
-  <li>various bug fixes: number formatting, portability for bounded string
-    functions, CData nodes, key(), @*[...] patterns</li>
+  <li>Improvement of the python bindings: extension functions and
+    activatingEXSLT</li>
+  <li>various bug fixes: number formatting, portability for bounded
+    stringfunctions, CData nodes, key(), @*[...] patterns</li>
   <li>Documentation improvements (John Fleck)</li>
   <li>added libxslt.m4 (Thomas Schraitle)</li>
 </ul><h3>1.0.22: Oct 18 2002</h3><ul><li>Updates on the Windows Makefiles</li>
-  <li>Added a security module, and a related set of new options to
-  xsltproc</li>
+  <li>Added a security module, and a related set of new options
+  toxsltproc</li>
   <li>Allowed per transformation error handler.</li>
-  <li>Fixed a few bugs: node() semantic, URI escaping, media-type, attribute
-    lists</li>
-</ul><h3>1.0.21: Sep 26 2002</h3><ul><li>Bug fixes: match="node()", date:difference() (Igor and Charlie
-    Bozeman), disable-output-escaping</li>
+  <li>Fixed a few bugs: node() semantic, URI escaping, media-type,
+    attributelists</li>
+</ul><h3>1.0.21: Sep 26 2002</h3><ul><li>Bug fixes: match="node()", date:difference() (Igor and CharlieBozeman),
+    disable-output-escaping</li>
   <li>Python bindings: style.saveResultToString() from Ralf Mattes</li>
   <li>Logos from Marc Liyanage</li>
   <li>Mem leak fix from Nathan Myers</li>
-  <li>Makefile: DESTDIR fix from Christophe Merlet, AMD x86_64 (Mandrake),
-    Windows (Igor), Python detection</li>
+  <li>Makefile: DESTDIR fix from Christophe Merlet, AMD x86_64
+    (Mandrake),Windows (Igor), Python detection</li>
   <li>Documentation improvements: John Fleck</li>
 </ul><h3>1.0.20: Aug 23 2002</h3><ul><li>Windows makefile updates (Igor) and x86-64 (Frederic Crozat)</li>
   <li>fixed HTML meta tag saving for Mac/IE users</li>
   <li>possible leak patches from Nathan Myers</li>
-  <li>try to handle document('') as best as possible depending in the
-  cases</li>
+  <li>try to handle document('') as best as possible depending in
+  thecases</li>
   <li>Fixed the DocBook stylesheets handling problem</li>
   <li>Fixed a few XSLT reported errors</li>
 </ul><h3>1.0.19:  July 6 2002</h3><ul><li>EXSLT: dynamic functions and date support bug fixes (Mark Vakoc)</li>
@@ -277,89 +285,84 @@ to the <a href="http://cvs.gnome.org/viewcvs/libxslt/">CVS</a> code base.</p><p>
   <li>document('') fix: bug pointed by Eric van der Vlist</li>
   <li>xsl:message with terminate="yes" fixes: William Brack</li>
   <li>xsl:sort order support added: Ken Neighbors</li>
-  <li>a few other bug fixes, some of them requiring the latest version of
-    libxml2</li>
-</ul><h3>1.0.18: May 27 2002</h3><ul><li>a number of bug fixes: attributes, extra namespace declarations
-    (DocBook), xsl:include crash (Igor), documentation (Christian Cornelssen,
-    Charles Bozeman and Geert Kloosterman),  element-available (Richard
-  Jinks)</li>
-  <li>xsltproc can now list teh registered extensions thanks to Mark
-  Vakoc</li>
-  <li>there is a new API to save directly to a string
-    xsltSaveResultToString() by Morus Walter</li>
+  <li>a few other bug fixes, some of them requiring the latest version
+    oflibxml2</li>
+</ul><h3>1.0.18: May 27 2002</h3><ul><li>a number of bug fixes: attributes, extra namespace
+    declarations(DocBook), xsl:include crash (Igor), documentation (Christian
+    Cornelssen,Charles Bozeman and Geert Kloosterman),  element-available
+    (RichardJinks)</li>
+  <li>xsltproc can now list teh registered extensions thanks to MarkVakoc</li>
+  <li>there is a new API to save directly to a stringxsltSaveResultToString()
+    by Morus Walter</li>
   <li>specific error registration function for the python API</li>
-</ul><h3>1.0.17: April 29 2002</h3><ul><li>cleanup in code, XSLT debugger support and Makefiles for Windows by
-  Igor</li>
+</ul><h3>1.0.17: April 29 2002</h3><ul><li>cleanup in code, XSLT debugger support and Makefiles for Windows
+  byIgor</li>
   <li>a C++ portability fix by Mark Vakoc</li>
   <li>EXSLT date improvement and regression tests by Charles Bozeman</li>
   <li>attempt to fix a bug in xsltProcessUserParamInternal</li>
-</ul><h3>1.0.16: April 15 2002</h3><ul><li>Bug fixes: strip-space, URL in HTML output, error when xsltproc can't
-    save</li>
+</ul><h3>1.0.16: April 15 2002</h3><ul><li>Bug fixes: strip-space, URL in HTML output, error when xsltproc
+    can'tsave</li>
   <li>portability fixes: OSF/1, IEEE on alphas, Windows, Python bindings</li>
-</ul><h3>1.0.15: Mar 25 2002</h3><ul><li>Bugfixes: XPath, python Makefile, recursive attribute sets, @foo[..]
-    templates</li>
+</ul><h3>1.0.15: Mar 25 2002</h3><ul><li>Bugfixes: XPath, python Makefile, recursive attribute sets,
+    @foo[..]templates</li>
   <li>Debug of memory alocation with valgind</li>
-  <li>serious profiling leading to significant improvement for DocBook
-    processing</li>
+  <li>serious profiling leading to significant improvement for
+    DocBookprocessing</li>
   <li>revamp of the Windows build</li>
 </ul><h3>1.0.14: Mar 18 2002</h3><ul><li>Improvement in the XPath engine (libxml2-2.4.18)</li>
   <li>Nasty bug fix related to exslt:node-set</li>
-  <li>Fixed the python Makefiles, cleanup of doc comments, Windows
-    portability fixes</li>
+  <li>Fixed the python Makefiles, cleanup of doc comments, Windowsportability
+    fixes</li>
 </ul><h3>1.0.13: Mar 8 2002</h3><ul><li>a number of bug fixes including "namespace node have no parents"</li>
   <li>Improvement of the Python bindings</li>
-  <li>Charles Bozeman provided fixes and regression tests for exslt date
-    functions.</li>
+  <li>Charles Bozeman provided fixes and regression tests for exslt
+    datefunctions.</li>
 </ul><h3>1.0.12: Feb 11 2002</h3><ul><li>Fixed the makefiles especially the python module ones</li>
   <li>half a dozen bugs fixes including 2 old ones</li>
-</ul><h3>1.0.11: Feb 8 2002</h3><ul><li>Change of Licence to the <a href="http://www.opensource.org/licenses/mit-license.html">MIT
-  Licence</a></li>
-  <li>Added a beta version of the Python bindings, including support to
-    extend the engine with functions written in Python</li>
+</ul><h3>1.0.11: Feb 8 2002</h3><ul><li>Change of Licence to the <a href="http://www.opensource.org/licenses/mit-license.html">MITLicence</a></li>
+  <li>Added a beta version of the Python bindings, including support toextend
+    the engine with functions written in Python</li>
   <li>A number of bug fixes</li>
   <li>Charlie Bozeman provided more EXSLT functions</li>
   <li>Portability fixes</li>
 </ul><h3>1.0.10: Jan 14 2002</h3><ul><li>Windows fixes for Win32 from Igor</li>
   <li>Fixed the Solaris compilation trouble (Albert)</li>
   <li>Documentation changes and updates: John Fleck</li>
-  <li>Added a stringparam option to avoid escaping hell at the shell
-  level</li>
+  <li>Added a stringparam option to avoid escaping hell at the shelllevel</li>
   <li>A few bug fixes</li>
 </ul><h3>1.0.9: Dec 7 2001</h3><ul><li>Makefile patches from Peter Williams</li>
   <li>attempt to fix the compilation problem associated to prelinking</li>
   <li>obsoleted libxsltbreakpoint now deprecated and frozen to 1.0.8 API</li>
-  <li>xsltproc return codes are now significant, John Fleck updated the
-    documentation</li>
-  <li>patch to allow as much as 40 steps in patterns (Marc Tardif), should be
-    made dynamic really</li>
-  <li>fixed a bug raised by Nik Clayton when using doctypes with HTML
-  output</li>
+  <li>xsltproc return codes are now significant, John Fleck updated
+    thedocumentation</li>
+  <li>patch to allow as much as 40 steps in patterns (Marc Tardif), should
+    bemade dynamic really</li>
+  <li>fixed a bug raised by Nik Clayton when using doctypes with
+  HTMLoutput</li>
   <li>patches from Keith Isdale to interface with xsltdebugger</li>
-</ul><h3>1.0.8: Nov 26 2001</h3><ul><li>fixed an annoying header problem, removed a few bugs and some code
-    cleanup</li>
+</ul><h3>1.0.8: Nov 26 2001</h3><ul><li>fixed an annoying header problem, removed a few bugs and some
+    codecleanup</li>
   <li>patches for Windows and update of Windows Makefiles by Igor</li>
   <li>OpenVMS port instructions from John A Fotheringham</li>
-  <li>fixed some Makefiles annoyance and libraries prelinking
-  informations</li>
+  <li>fixed some Makefiles annoyance and libraries prelinkinginformations</li>
 </ul><h3>1.0.7: Nov 10 2001</h3><ul><li>remove a compilation problem with LIBXSLT_PUBLIC</li>
   <li>Finishing the integration steps for Keith Isdale debugger</li>
   <li>fixes the handling of indent="no" on HTML output</li>
   <li>fixes on the configure script and RPM spec file</li>
-</ul><h3>1.0.6: Oct 30 2001</h3><ul><li>bug fixes on number formatting (Thomas), date/time functions (Bruce
-    Miller)</li>
+</ul><h3>1.0.6: Oct 30 2001</h3><ul><li>bug fixes on number formatting (Thomas), date/time functions
+    (BruceMiller)</li>
   <li>update of the Windows Makefiles (Igor)</li>
   <li>fixed DOCTYPE generation rules for HTML output (me)</li>
-</ul><h3>1.0.5: Oct 10 2001</h3><ul><li>some portability fixes, including Windows makefile updates from
-  Igor</li>
+</ul><h3>1.0.5: Oct 10 2001</h3><ul><li>some portability fixes, including Windows makefile updates fromIgor</li>
   <li>fixed a dozen bugs on XSLT and EXSLT (me and Thomas Broyer)</li>
-  <li>support for Saxon's evaluate and expressions extensions added (initial
-    contribution from Darren Graves)</li>
+  <li>support for Saxon's evaluate and expressions extensions added
+    (initialcontribution from Darren Graves)</li>
   <li>better handling of XPath evaluation errors</li>
 </ul><h3>1.0.4: Sep 12 2001</h3><ul><li>Documentation updates from John fleck</li>
-  <li>bug fixes (DocBook  FO generation should be fixed)  and portability
-    improvements</li>
-  <li>Thomas Broyer improved the existing EXSLT support and added String,
-    Time and Date core functions support</li>
+  <li>bug fixes (DocBook  FO generation should be fixed)  and
+    portabilityimprovements</li>
+  <li>Thomas Broyer improved the existing EXSLT support and added String,Time
+    and Date core functions support</li>
 </ul><h3>1.0.3:  Aug 23 2001</h3><ul><li>XML Catalog support see the doc</li>
   <li>New NaN/Infinity floating point code</li>
   <li>A few bug fixes</li>
@@ -374,45 +377,44 @@ to the <a href="http://cvs.gnome.org/viewcvs/libxslt/">CVS</a> code base.</p><p>
   <li>fixed the profiler on Windows</li>
   <li>bug fixes</li>
 </ul><h3>1.0.0: July 10 2001</h3><ul><li>a lot of cleanup, a lot of regression tests added or fixed</li>
-  <li>added a documentation for <a href="extensions.html">writing
-    extensions</a></li>
+  <li>added a documentation for <a href="extensions.html">writingextensions</a></li>
   <li>fixed some variable evaluation problems (with William)</li>
-  <li>added profiling of stylesheet execution accessible as the xsltproc
-    --profile option</li>
-  <li>fixed element-available() and the implementation of the various
-    chunking methods present, Norm Walsh provided a lot of feedback</li>
-  <li>exclude-result-prefixes and namespaces output should now work as
-    expected</li>
-  <li>added support of embedded stylesheet as described in section 2.7 of the
-    spec</li>
+  <li>added profiling of stylesheet execution accessible as the
+    xsltproc--profile option</li>
+  <li>fixed element-available() and the implementation of the variouschunking
+    methods present, Norm Walsh provided a lot of feedback</li>
+  <li>exclude-result-prefixes and namespaces output should now work
+  asexpected</li>
+  <li>added support of embedded stylesheet as described in section 2.7 of
+    thespec</li>
 </ul><h3>0.14.0: July 5 2001</h3><ul><li>lot of bug fixes, and code cleanup</li>
   <li>completion of the little XSLT-1.0 features left unimplemented</li>
   <li>Added and implemented the extension API suggested by Thomas Broyer</li>
   <li>the Windows MSC environment should be complete</li>
-  <li>tested and optimized with a really large document (DocBook Definitive
-    Guide) libxml/libxslt should really be faster on serious workloads</li>
+  <li>tested and optimized with a really large document (DocBook
+    DefinitiveGuide) libxml/libxslt should really be faster on serious
+    workloads</li>
 </ul><h3>0.13.0: June 26 2001</h3><ul><li>lots of cleanups</li>
   <li>fixed a C++ compilation problem</li>
   <li>couple of fixes to xsltSaveTo()</li>
-  <li>try to fix Docbook-xslt-1.4 and chunking, updated the regression test
-    with them</li>
+  <li>try to fix Docbook-xslt-1.4 and chunking, updated the regression
+    testwith them</li>
   <li>fixed pattern compilation and priorities problems</li>
   <li>Patches for Windows and MSC project mostly contributed by Yon Derek</li>
   <li>update to the Tutorial by John Fleck</li>
   <li>William fixed bugs in templates and for-each functions</li>
-  <li>added a new interface xsltRunStylesheet() for a more flexible output
-    (incomplete), added -o option to xsltproc</li>
+  <li>added a new interface xsltRunStylesheet() for a more flexible
+    output(incomplete), added -o option to xsltproc</li>
 </ul><h3>0.12.0: June 18 2001</h3><ul><li>fixed a dozen of bugs reported</li>
-  <li>HTML generation should be quite better (requires libxml-2.3.11 upgrade
-    too)</li>
+  <li>HTML generation should be quite better (requires libxml-2.3.11
+    upgradetoo)</li>
   <li>William fixed some problems with document()</li>
-  <li>Fix namespace nodes selection and copy (requires libxml-2.3.11 upgrade
-    too)</li>
-  <li>John Fleck added a<a href="tutorial/libxslttutorial.html">
-  tutorial</a></li>
+  <li>Fix namespace nodes selection and copy (requires libxml-2.3.11
+    upgradetoo)</li>
+  <li>John Fleck added a<a href="tutorial/libxslttutorial.html">tutorial</a></li>
   <li>Fixes for namespace handling when evaluating variables</li>
-  <li>XInclude global flag added to process XInclude on document() if
-    requested</li>
+  <li>XInclude global flag added to process XInclude on document()
+  ifrequested</li>
   <li>made xsltproc --version more detailed</li>
 </ul><h3>0.11.0: June 1 2001</h3><p>Mostly a bug fix release.</p><ul><li>integration of catalogs from xsltproc</li>
   <li>added --version to xsltproc for bug reporting</li>
@@ -422,8 +424,8 @@ to the <a href="http://cvs.gnome.org/viewcvs/libxslt/">CVS</a> code base.</p><p>
   <li>William fixed the XPath string functions when using unicode</li>
 </ul><h3>0.10.0: May 19 2001</h3><ul><li>cleanups to make stylesheet read-only (not 100% complete)</li>
   <li>fixed URI resolution in document()</li>
-  <li>force all XPath expression to be compiled at stylesheet parsing time,
-    even if unused ...</li>
+  <li>force all XPath expression to be compiled at stylesheet parsing
+    time,even if unused ...</li>
   <li>Fixed HTML default output detection</li>
   <li>Fixed double attribute generation #54446</li>
   <li>Fixed {{ handling in attributes #54451</li>
@@ -433,25 +435,25 @@ to the <a href="http://cvs.gnome.org/viewcvs/libxslt/">CVS</a> code base.</p><p>
   <li>William Brack and Bjorn Reese improved format-number()</li>
   <li>Fixed multiple sort, it should really work now</li>
   <li>added a --docbook option for SGML DocBook input (hackish)</li>
-  <li>a number of other bug fixes and regression test added as people were
-    submitting them</li>
+  <li>a number of other bug fixes and regression test added as people
+    weresubmitting them</li>
 </ul><h3>0.9.0: May 3 2001</h3><ul><li>lot of various bugfixes, extended the regression suite</li>
   <li>xsltproc should work with multiple params</li>
   <li>added an option to use xsltproc with HTML input</li>
-  <li>improved the stylesheet compilation, processing of complex stylesheets
-    should be faster</li>
-  <li>using the same stylesheet for concurrent processing on multithreaded
-    programs should work now</li>
+  <li>improved the stylesheet compilation, processing of complex
+    stylesheetsshould be faster</li>
+  <li>using the same stylesheet for concurrent processing on
+    multithreadedprograms should work now</li>
   <li>fixed another batch of namespace handling problems</li>
   <li>Implemented multiple level of sorting</li>
 </ul><h3>0.8.0: Apr 22 2001</h3><ul><li>fixed ansidecl.h problem</li>
   <li>fixed unparsed-entity-uri() and generate-id()</li>
   <li>sort semantic fixes and priority prob from William M. Brack</li>
-  <li>fixed namespace handling problems in XPath expression computations
-    (requires libxml-2.3.7)</li>
+  <li>fixed namespace handling problems in XPath expression
+    computations(requires libxml-2.3.7)</li>
   <li>fixes to current() and key()</li>
-  <li>other, smaller fixes, lots of testing with N Walsh DocBook HTML
-    stylesheets</li>
+  <li>other, smaller fixes, lots of testing with N Walsh DocBook
+    HTMLstylesheets</li>
 </ul><h3>0.7.0: Apr 10 2001</h3><ul><li>cleanup using stricter compiler flags</li>
   <li>command line parameter passing</li>
   <li>fix to xsltApplyTemplates from William M. Brack</li>
@@ -461,13 +463,13 @@ to the <a href="http://cvs.gnome.org/viewcvs/libxslt/">CVS</a> code base.</p><p>
   <li>document() extension should function properly</li>
   <li>fixed a number or reported bugs</li>
 </ul><h3>0.5.0: Mar 10 2001</h3><ul><li>fifth beta</li>
-  <li>some optimization work, for the moment 2 XSLT transform cannot use the
-    same stylesheet at the same time (to be fixed)</li>
+  <li>some optimization work, for the moment 2 XSLT transform cannot use
+    thesame stylesheet at the same time (to be fixed)</li>
   <li>fixed problems with handling of tree results</li>
   <li>fixed a reported strip-spaces problem</li>
   <li>added more reported/fixed bugs to the test suite</li>
-  <li>incorporated William M. Brack fix for imports and global variables as
-    well as patch for with-param support in apply-templates</li>
+  <li>incorporated William M. Brack fix for imports and global variables
+    aswell as patch for with-param support in apply-templates</li>
   <li>a bug fix on for-each</li>
 </ul><h3>0.4.0: Mar 1 2001</h3><ul><li>fourth beta test, released at the same time of libxml2-2.3.3</li>
   <li>bug fixes</li>
@@ -479,17 +481,17 @@ to the <a href="http://cvs.gnome.org/viewcvs/libxslt/">CVS</a> code base.</p><p>
   <li>some optimization</li>
   <li>added DocBook XSL based testsuite</li>
 </ul><h3>0.2.0: Feb 15 2001</h3><ul><li>second beta version, released at the same time as libxml2-2.3.1</li>
-  <li>getting close to feature completion, lot of bug fixes, some in the HTML
-    and XPath support of libxml</li>
-  <li>start becoming usable for real work. This version can now regenerate
-    the XML 2e HTML from the original XML sources and the associated
-    stylesheets (in <a href="http://www.w3.org/TR/REC-xml#b4d250b6c21">section I of the XML
-    REC</a>)</li>
-  <li>Still misses extension element/function/prefixes support. Support of
-    key() and document() is not complete</li>
+  <li>getting close to feature completion, lot of bug fixes, some in the
+    HTMLand XPath support of libxml</li>
+  <li>start becoming usable for real work. This version can now regeneratethe
+    XML 2e HTML from the original XML sources and the associatedstylesheets
+    (in <a href="http://www.w3.org/TR/REC-xml#b4d250b6c21">section I of the
+    XMLREC</a>)</li>
+  <li>Still misses extension element/function/prefixes support. Support
+    ofkey() and document() is not complete</li>
 </ul><h3>0.1.0: Feb 8 2001</h3><ul><li>first beta version, released at the same time as libxml2-2.3.0</li>
   <li>lots of bug fixes, first "testing" version, but incomplete</li>
 </ul><h3>0.0.1: Jan 25 2001</h3><ul><li>first alpha version released at the same time as libxml2-2.2.12</li>
-  <li>Framework in place, should work on simple examples, but far from being
-    feature complete</li>
+  <li>Framework in place, should work on simple examples, but far from
+    beingfeature complete</li>
 </ul><p><a href="bugs.html">Daniel Veillard</a></p></td></tr></table></td></tr></table></td></tr></table></td></tr></table></td></tr></table></body></html>
index 97d3475..b48387f 100644 (file)
@@ -8,56 +8,52 @@ H2 {font-family: Verdana,Arial,Helvetica}
 H3 {font-family: Verdana,Arial,Helvetica}
 A:link, A:visited, A:active { text-decoration: underline }
     </style><title>Python and bindings</title></head><body bgcolor="#8b7765" text="#000000" link="#a06060" vlink="#000000"><table border="0" width="100%" cellpadding="5" cellspacing="0" align="center"><tr><td width="120"><a href="http://swpat.ffii.org/"><img src="epatents.png" alt="Action against software patents" /></a></td><td width="180"><a href="http://www.gnome.org/"><img src="gnome2.png" alt="Gnome2 Logo" /></a><a href="http://www.w3.org/Status"><img src="w3c.png" alt="W3C logo" /></a><a href="http://www.redhat.com"><img src="redhat.gif" alt="Red Hat Logo" /></a><div align="left"><a href="http://xmlsoft.org/XSLT/"><img src="Libxslt-Logo-180x168.gif" alt="Made with Libxslt Logo" /></a></div></td><td><table border="0" width="90%" cellpadding="2" cellspacing="0" align="center" bgcolor="#000000"><tr><td><table width="100%" border="0" cellspacing="1" cellpadding="3" bgcolor="#fffacd"><tr><td align="center"><h1>The XSLT C library for Gnome</h1><h2>Python and bindings</h2></td></tr></table></td></tr></table></td></tr></table><table border="0" cellpadding="4" cellspacing="0" width="100%" align="center"><tr><td bgcolor="#8b7765"><table border="0" cellspacing="0" cellpadding="2" width="100%"><tr><td valign="top" width="200" bgcolor="#8b7765"><table border="0" cellspacing="0" cellpadding="1" width="100%" bgcolor="#000000"><tr><td><table width="100%" border="0" cellspacing="1" cellpadding="3"><tr><td colspan="1" bgcolor="#eecfa1" align="center"><center><b>Main Menu</b></center></td></tr><tr><td bgcolor="#fffacd"><form action="search.php" enctype="application/x-www-form-urlencoded" method="get"><input name="query" type="text" size="20" value="" /><input name="submit" type="submit" value="Search ..." /></form><ul><li><a href="index.html">Home</a></li><li><a href="http://xmlsoft.org/wiki">Wiki</a></li><li><a href="intro.html">Introduction</a></li><li><a href="docs.html">Documentation</a></li><li><a href="bugs.html">Reporting bugs and getting help</a></li><li><a href="help.html">How to help</a></li><li><a href="downloads.html">Downloads</a></li><li><a href="FAQ.html">FAQ</a></li><li><a href="news.html">News</a></li><li><a href="xsltproc2.html">The xsltproc tool</a></li><li><a href="docbook.html">DocBook</a></li><li><a href="API.html">The programming API</a></li><li><a href="python.html">Python and bindings</a></li><li><a href="internals.html">Library internals</a></li><li><a href="extensions.html">Writing extensions</a></li><li><a href="contribs.html">Contributions</a></li><li><a href="EXSLT/index.html" style="font-weight:bold">libexslt</a></li><li><a href="xslt.html">flat page</a>, <a href="site.xsl">stylesheet</a></li><li><a href="html/index.html" style="font-weight:bold">API Menu</a></li><li><a href="ChangeLog.html">ChangeLog</a></li></ul></td></tr></table><table width="100%" border="0" cellspacing="1" cellpadding="3"><tr><td colspan="1" bgcolor="#eecfa1" align="center"><center><b>Related links</b></center></td></tr><tr><td bgcolor="#fffacd"><ul><li><a href="tutorial/libxslttutorial.html">Tutorial</a>,
-          <a href="tutorial2/libxslt_pipes.html">Tutorial2</a></li><li><a href="xsltproc.html">Man page for xsltproc</a></li><li><a href="http://mail.gnome.org/archives/xslt/">Mail archive</a></li><li><a href="http://xmlsoft.org/">XML libxml2</a></li><li><a href="ftp://xmlsoft.org/">FTP</a></li><li><a href="http://www.zlatkovic.com/projects/libxml/">Windows binaries</a></li><li><a href="http://garypennington.net/libxml2/">Solaris binaries</a></li><li><a href="http://www.explain.com.au/oss/libxml2xslt.html">MacOsX binaries</a></li><li><a href="http://bugzilla.gnome.org/buglist.cgi?product=libxslt">Bug Tracker</a></li><li><a href="http://www.zend.com/php5/articles/php5-xmlphp.php#Heading17">XSLT with PHP</a></li><li><a href="http://www.mod-xslt2.com/">Apache module</a></li><li><a href="http://sourceforge.net/projects/libxml2-pas/">Pascal bindings</a></li><li><a href="http://xsldbg.sourceforge.net/">Xsldbg Debugger</a></li></ul></td></tr></table><table width="100%" border="0" cellspacing="1" cellpadding="3"><tr><td colspan="1" bgcolor="#eecfa1" align="center"><center><b>API Indexes</b></center></td></tr><tr><td bgcolor="#fffacd"><ul><li><a href="APIchunk0.html">Alphabetic</a></li><li><a href="APIconstructors.html">Constructors</a></li><li><a href="APIfunctions.html">Functions/Types</a></li><li><a href="APIfiles.html">Modules</a></li><li><a href="APIsymbols.html">Symbols</a></li></ul></td></tr></table></td></tr></table></td><td valign="top" bgcolor="#8b7765"><table border="0" cellspacing="0" cellpadding="1" width="100%"><tr><td><table border="0" cellspacing="0" cellpadding="1" width="100%" bgcolor="#000000"><tr><td><table border="0" cellpadding="3" cellspacing="1" width="100%"><tr><td bgcolor="#fffacd"><p>There is a number of language bindings and wrappers available for libxml2,
-the list below is not exhaustive. Please contact the <a href="http://mail.gnome.org/mailman/listinfo/xml-bindings">xml-bindings@gnome.org</a>
-(<a href="http://mail.gnome.org/archives/xml-bindings/">archives</a>) in
-order to get updates to this list or to discuss the specific topic of libxml2
-or libxslt wrappers or bindings:</p><ul><li><a href="http://mail.gnome.org/archives/xml/2001-March/msg00014.html">Matt
-    Sergeant</a> developped <a href="http://axkit.org/download/">XML::LibXML
-    and XML::LibXSLT</a>, Perl wrappers for libxml2/libxslt as part of the <a href="http://axkit.com/">AxKit XML application server</a></li>
-  <li><a href="mailto:dkuhlman@cutter.rexx.com">Dave Kuhlman</a> provides and
-    earlier version of the libxml/libxslt <a href="http://www.rexx.com/~dkuhlman">wrappers for Python</a></li>
-  <li>Petr Kozelka provides <a href="http://sourceforge.net/projects/libxml2-pas">Pascal units to glue
-    libxml2</a> with Kylix, Delphi and other Pascal compilers</li>
-  <li>Wai-Sun "Squidster" Chia provides <a href="http://www.rubycolor.org/arc/redist/">bindings for Ruby</a>  and
-    libxml2 bindings are also available in Ruby through the <a href="http://libgdome-ruby.berlios.de/">libgdome-ruby</a> module
-    maintained by Tobias Peters.</li>
-  <li>Steve Ball and contributors maintains <a href="http://tclxml.sourceforge.net/">libxml2 and libxslt bindings for
-    Tcl</a></li>
-  <li><a href="mailto:xmlwrapp@pmade.org">Peter Jones</a> maintains C++
-    bindings for libxslt within <a href="http://pmade.org/pjones/software/xmlwrapp/">xmlwrapp</a></li>
-  <li><a href="phillim2@comcast.net">Mike Phillips</a> provides a module
-    using <a href="http://siasl.dyndns.org/projects/projects.html">libxslt
-    for PHP</a>.</li>
-  <li><a href="http://savannah.gnu.org/projects/classpathx/">LibxmlJ</a> is
-    an effort to create a 100% JAXP-compatible Java wrapper for libxml2 and
-    libxslt as part of GNU ClasspathX project.</li>
-  <li>Patrick McPhee provides Rexx bindings fof libxml2 and libxslt, look for
-    <a href="http://www.interlog.com/~ptjm/software.html">RexxXML</a>.</li>
-  <li><a href="http://www.satimage.fr/software/en/xml_suite.html">Satimage</a>
-    provides <a href="http://www.satimage.fr/software/en/downloads_osaxen.html">XMLLib
-    osax</a>. This is an osax for Mac OS X with a set of commands to
-    implement in AppleScript the XML DOM, XPATH and XSLT.</li>
-</ul><p>The libxslt Python module depends on the <a href="http://xmlsoft.org/python.html">libxml2 Python</a> module.</p><p>The distribution includes a set of Python bindings, which are garanteed to
-be maintained as part of the library in the future, though the Python
-interface have not yet reached the completeness of the C API.</p><p><a href="mailto:stephane.bidoul@softwareag.com">Stéphane Bidoul</a>
-maintains <a href="http://users.skynet.be/sbi/libxml-python/">a Windows port
-of the Python bindings</a>.</p><p>Note to people interested in building bindings, the API is formalized as
-<a href="libxslt-api.xml">an XML API description file</a> which allows to
-automate a large part of the Python bindings, this includes function
-descriptions, enums, structures, typedefs, etc... The Python script used to
-build the bindings is python/generator.py in the source distribution.</p><p>To install the Python bindings there are 2 options:</p><ul><li>If you use an RPM based distribution, simply install the <a href="http://rpmfind.net/linux/rpm2html/search.php?query=libxml2-python">libxml2-python
-    RPM</a> and the <a href="http://rpmfind.net/linux/rpm2html/search.php?query=libxslt-python">libxslt-python
-    RPM</a>.</li>
-  <li>Otherwise use the <a href="ftp://xmlsoft.org/libxml2/python/">libxml2-python
-    module distribution</a> corresponding to your installed version of
-    libxml2 and libxslt. Note that to install it you will need both libxml2
-    and libxslt installed and run "python setup.py build install" in the
-    module tree.</li>
-</ul><p>The distribution includes a set of examples and regression tests for the
-python bindings in the <code>python/tests</code> directory. Here are some
-excepts from those tests:</p><h3>basic.py:</h3><p>This is a basic test of XSLT interfaces: loading a stylesheet and a
-document, transforming the document and saving the result.</p><pre>import libxml2
+          <a href="tutorial2/libxslt_pipes.html">Tutorial2</a></li><li><a href="xsltproc.html">Man page for xsltproc</a></li><li><a href="http://mail.gnome.org/archives/xslt/">Mail archive</a></li><li><a href="http://xmlsoft.org/">XML libxml2</a></li><li><a href="ftp://xmlsoft.org/">FTP</a></li><li><a href="http://www.zlatkovic.com/projects/libxml/">Windows binaries</a></li><li><a href="http://garypennington.net/libxml2/">Solaris binaries</a></li><li><a href="http://www.explain.com.au/oss/libxml2xslt.html">MacOsX binaries</a></li><li><a href="http://bugzilla.gnome.org/buglist.cgi?product=libxslt">Bug Tracker</a></li><li><a href="http://www.zend.com/php5/articles/php5-xmlphp.php#Heading17">XSLT with PHP</a></li><li><a href="http://www.mod-xslt2.com/">Apache module</a></li><li><a href="http://sourceforge.net/projects/libxml2-pas/">Pascal bindings</a></li><li><a href="http://xsldbg.sourceforge.net/">Xsldbg Debugger</a></li></ul></td></tr></table><table width="100%" border="0" cellspacing="1" cellpadding="3"><tr><td colspan="1" bgcolor="#eecfa1" align="center"><center><b>API Indexes</b></center></td></tr><tr><td bgcolor="#fffacd"><ul><li><a href="APIchunk0.html">Alphabetic</a></li><li><a href="APIconstructors.html">Constructors</a></li><li><a href="APIfunctions.html">Functions/Types</a></li><li><a href="APIfiles.html">Modules</a></li><li><a href="APIsymbols.html">Symbols</a></li></ul></td></tr></table></td></tr></table></td><td valign="top" bgcolor="#8b7765"><table border="0" cellspacing="0" cellpadding="1" width="100%"><tr><td><table border="0" cellspacing="0" cellpadding="1" width="100%" bgcolor="#000000"><tr><td><table border="0" cellpadding="3" cellspacing="1" width="100%"><tr><td bgcolor="#fffacd"><p>There is a number of language bindings and wrappers available for
+libxml2,the list below is not exhaustive. Please contact the <a href="http://mail.gnome.org/mailman/listinfo/xml-bindings">xml-bindings@gnome.org</a>(<a href="http://mail.gnome.org/archives/xml-bindings/">archives</a>) inorder to
+get updates to this list or to discuss the specific topic of libxml2or
+libxslt wrappers or bindings:</p><ul><li><a href="http://mail.gnome.org/archives/xml/2001-March/msg00014.html">MattSergeant</a>developped
+    <a href="http://axkit.org/download/">XML::LibXMLand XML::LibXSLT</a>,
+    Perl wrappers for libxml2/libxslt as part of the <a href="http://axkit.com/">AxKit XML application server</a></li>
+  <li><a href="mailto:dkuhlman@cutter.rexx.com">Dave Kuhlman</a>provides
+    andearlier version of the libxml/libxslt <a href="http://www.rexx.com/~dkuhlman">wrappers for Python</a></li>
+  <li>Petr Kozelka provides <a href="http://sourceforge.net/projects/libxml2-pas">Pascal units to
+    gluelibxml2</a>with Kylix, Delphi and other Pascal compilers</li>
+  <li>Wai-Sun "Squidster" Chia provides <a href="http://www.rubycolor.org/arc/redist/">bindings for
+    Ruby</a>andlibxml2 bindings are also available in Ruby through the <a href="http://libgdome-ruby.berlios.de/">libgdome-ruby</a>modulemaintained
+    by Tobias Peters.</li>
+  <li>Steve Ball and contributors maintains <a href="http://tclxml.sourceforge.net/">libxml2 and libxslt bindings
+    forTcl</a></li>
+  <li><a href="mailto:xmlwrapp@pmade.org">Peter Jones</a>maintains
+    C++bindings for libxslt within <a href="http://pmade.org/pjones/software/xmlwrapp/">xmlwrapp</a></li>
+  <li><a href="phillim2@comcast.net">Mike Phillips</a>provides a moduleusing
+    <a href="http://siasl.dyndns.org/projects/projects.html">libxsltfor
+    PHP</a>.</li>
+  <li><a href="http://savannah.gnu.org/projects/classpathx/">LibxmlJ</a>isan
+    effort to create a 100% JAXP-compatible Java wrapper for libxml2
+    andlibxslt as part of GNU ClasspathX project.</li>
+  <li>Patrick McPhee provides Rexx bindings fof libxml2 and libxslt, look
+    for<a href="http://www.interlog.com/~ptjm/software.html">RexxXML</a>.</li>
+  <li><a href="http://www.satimage.fr/software/en/xml_suite.html">Satimage</a>provides
+    <a href="http://www.satimage.fr/software/en/downloads_osaxen.html">XMLLibosax</a>.
+    This is an osax for Mac OS X with a set of commands toimplement in
+    AppleScript the XML DOM, XPATH and XSLT.</li>
+</ul><p>The libxslt Python module depends on the <a href="http://xmlsoft.org/python.html">libxml2 Python</a>module.</p><p>The distribution includes a set of Python bindings, which are garanteed
+tobe maintained as part of the library in the future, though the
+Pythoninterface have not yet reached the completeness of the C API.</p><p><a href="mailto:stephane.bidoul@softwareag.com">Stéphane
+Bidoul</a>maintains <a href="http://users.skynet.be/sbi/libxml-python/">a
+Windows portof the Python bindings</a>.</p><p>Note to people interested in building bindings, the API is formalized as<a href="libxslt-api.xml">an XML API description file</a>which allows toautomate
+a large part of the Python bindings, this includes functiondescriptions,
+enums, structures, typedefs, etc... The Python script used tobuild the
+bindings is python/generator.py in the source distribution.</p><p>To install the Python bindings there are 2 options:</p><ul><li>If you use an RPM based distribution, simply install the <a href="http://rpmfind.net/linux/rpm2html/search.php?query=libxml2-python">libxml2-pythonRPM</a>and
+    the <a href="http://rpmfind.net/linux/rpm2html/search.php?query=libxslt-python">libxslt-pythonRPM</a>.</li>
+  <li>Otherwise use the <a href="ftp://xmlsoft.org/libxml2/python/">libxml2-pythonmodule
+    distribution</a>corresponding to your installed version oflibxml2 and
+    libxslt. Note that to install it you will need both libxml2and libxslt
+    installed and run "python setup.py build install" in themodule tree.</li>
+</ul><p>The distribution includes a set of examples and regression tests for
+thepython bindings in the <code>python/tests</code>directory. Here are
+someexcepts from those tests:</p><h3>basic.py:</h3><p>This is a basic test of XSLT interfaces: loading a stylesheet and
+adocument, transforming the document and saving the result.</p><pre>import libxml2
 import libxslt
 
 styledoc = libxml2.parseFile("test.xsl")
@@ -67,28 +63,28 @@ result = style.applyStylesheet(doc, None)
 style.saveResultToFilename("foo", result, 0)
 style.freeStylesheet()
 doc.freeDoc()
-result.freeDoc()</pre><p>The Python module is called libxslt, you will also need the libxml2 module
-for the operations on XML trees. Let's have a look at the objects manipulated
-in that example and how is the processing done:</p><ul><li><code>styledoc</code> : is a libxml2 document tree. It is obtained by
-    parsing the XML file "test.xsl" containing the stylesheet.</li>
-  <li><code>style</code> : this is a precompiled stylesheet ready to be used
-    by the following transformations (note the plural form, multiple
-    transformations can resuse the same stylesheet).</li>
-  <li><code>doc</code> : this is the document to apply the transformation to.
-    In this case it is simply generated by parsing it from a file but any
-    other processing is possible as long as one get a libxml2 Doc. Note that
-    HTML tree are suitable for XSLT processing in libxslt. This is actually
-    how this page is generated !</li>
-  <li><code>result</code> : this is a document generated by applying the
-    stylesheet to the document. Note that some of the stylesheet informations
-    may be related to the serialization of that document and as in this
-    example a specific saveResultToFilename() method of the stylesheet should
-    be used to save it to a file (in that case to "foo").</li>
-</ul><p>Also note the need to explicitely deallocate documents with freeDoc()
-except for the stylesheet document which is freed when its compiled form is
-garbage collected.</p><h3>extfunc.py:</h3><p>This one is a far more complex test. It shows how to modify the behaviour
-of an XSLT transformation by passing parameters and how to extend the XSLT
-engine with functions defined in python:</p><pre>import libxml2
+result.freeDoc()</pre><p>The Python module is called libxslt, you will also need the libxml2
+modulefor the operations on XML trees. Let's have a look at the objects
+manipulatedin that example and how is the processing done:</p><ul><li><code>styledoc</code>: is a libxml2 document tree. It is obtained
+    byparsing the XML file "test.xsl" containing the stylesheet.</li>
+  <li><code>style</code>: this is a precompiled stylesheet ready to be usedby
+    the following transformations (note the plural form,
+    multipletransformations can resuse the same stylesheet).</li>
+  <li><code>doc</code>: this is the document to apply the transformation
+    to.In this case it is simply generated by parsing it from a file but
+    anyother processing is possible as long as one get a libxml2 Doc. Note
+    thatHTML tree are suitable for XSLT processing in libxslt. This is
+    actuallyhow this page is generated !</li>
+  <li><code>result</code>: this is a document generated by applying
+    thestylesheet to the document. Note that some of the stylesheet
+    informationsmay be related to the serialization of that document and as
+    in thisexample a specific saveResultToFilename() method of the stylesheet
+    shouldbe used to save it to a file (in that case to "foo").</li>
+</ul><p>Also note the need to explicitely deallocate documents with
+freeDoc()except for the stylesheet document which is freed when its compiled
+form isgarbage collected.</p><h3>extfunc.py:</h3><p>This one is a far more complex test. It shows how to modify the
+behaviourof an XSLT transformation by passing parameters and how to extend
+the XSLTengine with functions defined in python:</p><pre>import libxml2
 import libxslt
 import string
 
@@ -109,20 +105,20 @@ def f(ctx, str):
 
     return string.upper(str)
 
-libxslt.registerExtModuleFunction("foo", "http://example.com/foo", f)</pre><p>This code defines and register an extension function. Note that the
-function can be bound to any name (foo) and how the binding is also
-associated to a namespace name "http://example.com/foo". From an XSLT point
-of view the function just returns an upper case version of the string passed
-as a parameter. But the first part of the function also read some contextual
-information from the current XSLT processing environement, in that case it
-looks for the current insertion node in the resulting output (either the
-resulting document or the Result Value Tree being generated), and saves it to
-a global variable for checking that the access actually worked.</p><p>For more informations on the xpathParserContext and transformContext
-objects check the <a href="internals.html">libray internals description</a>.
-The pctxt is actually an object from a class derived from the
-libxml2.xpathParserContext() with just a couple more properties including the
-possibility to look up the XSLT transformation context from the XPath
-context.</p><pre>styledoc = libxml2.parseDoc("""
+libxslt.registerExtModuleFunction("foo", "http://example.com/foo", f)</pre><p>This code defines and register an extension function. Note that
+thefunction can be bound to any name (foo) and how the binding is
+alsoassociated to a namespace name "http://example.com/foo". From an XSLT
+pointof view the function just returns an upper case version of the string
+passedas a parameter. But the first part of the function also read some
+contextualinformation from the current XSLT processing environement, in that
+case itlooks for the current insertion node in the resulting output (either
+theresulting document or the Result Value Tree being generated), and saves it
+toa global variable for checking that the access actually worked.</p><p>For more informations on the xpathParserContext and
+transformContextobjects check the <a href="internals.html">libray internals
+description</a>.The pctxt is actually an object from a class derived from
+thelibxml2.xpathParserContext() with just a couple more properties including
+thepossibility to look up the XSLT transformation context from the
+XPathcontext.</p><pre>styledoc = libxml2.parseDoc("""
 &lt;xsl:stylesheet version='1.0'
   xmlns:xsl='http://www.w3.org/1999/XSL/Transform'
   xmlns:foo='http://example.com/foo'
@@ -133,21 +129,21 @@ context.</p><pre>styledoc = libxml2.parseDoc("""
     &lt;article&gt;&lt;xsl:value-of select='foo:foo($bar)'/&gt;&lt;/article&gt;
   &lt;/xsl:template&gt;
 &lt;/xsl:stylesheet&gt;
-""")</pre><p>Here is a simple example of how to read an XML document from a python
-string with libxml2. Note how this stylesheet:</p><ul><li>Uses a global parameter <code>bar</code></li>
+""")</pre><p>Here is a simple example of how to read an XML document from a
+pythonstring with libxml2. Note how this stylesheet:</p><ul><li>Uses a global parameter <code>bar</code></li>
   <li>Reference the extension function f</li>
-  <li>how the Namespace name "http://example.com/foo" has to be bound to a
-    prefix</li>
+  <li>how the Namespace name "http://example.com/foo" has to be bound to
+    aprefix</li>
   <li>how that prefix is excluded from the output</li>
   <li>how the function is called from the select</li>
 </ul><pre>style = libxslt.parseStylesheetDoc(styledoc)
 doc = libxml2.parseDoc("&lt;doc/&gt;")
 result = style.applyStylesheet(doc, { "bar": "'success'" })
 style.freeStylesheet()
-doc.freeDoc()</pre><p>that part is identical, to the basic example except that the
-transformation is passed a dictionnary of parameters. Note that the string
-passed "success" had to be quoted, otherwise it is interpreted as an XPath
-query for the childs of root named "success".</p><pre>root = result.children
+doc.freeDoc()</pre><p>that part is identical, to the basic example except that thetransformation
+is passed a dictionnary of parameters. Note that the stringpassed "success"
+had to be quoted, otherwise it is interpreted as an XPathquery for the childs
+of root named "success".</p><pre>root = result.children
 if root.name != "article":
     print "Unexpected root node name"
     sys.exit(1)
@@ -158,12 +154,14 @@ if nodeName != 'article':
     print "The function callback failed to access its context"
     sys.exit(1)
 
-result.freeDoc()</pre><p>That part just verifies that the transformation worked, that the parameter
-got properly passed to the engine, that the function f() got called and that
-it properly accessed the context to find the name of the insertion node.</p><h3>pyxsltproc.py:</h3><p>this module is a bit too long to be described there but it is basically a
-rewrite of the xsltproc command line interface of libxslt in Python. It
-provides nearly all the functionalities of xsltproc and can be used as a base
-module to write Python customized XSLT processors. One of the thing to notice
-are:</p><pre>libxml2.lineNumbersDefault(1)
-libxml2.substituteEntitiesDefault(1)</pre><p>those two calls in the main() function are needed to force the libxml2
-processor to generate DOM trees compliant with the XPath data model.</p><p><a href="bugs.html">Daniel Veillard</a></p></td></tr></table></td></tr></table></td></tr></table></td></tr></table></td></tr></table></body></html>
+result.freeDoc()</pre><p>That part just verifies that the transformation worked, that the
+parametergot properly passed to the engine, that the function f() got called
+and thatit properly accessed the context to find the name of the insertion
+node.</p><h3>pyxsltproc.py:</h3><p>this module is a bit too long to be described there but it is basically
+arewrite of the xsltproc command line interface of libxslt in Python.
+Itprovides nearly all the functionalities of xsltproc and can be used as a
+basemodule to write Python customized XSLT processors. One of the thing to
+noticeare:</p><pre>libxml2.lineNumbersDefault(1)
+libxml2.substituteEntitiesDefault(1)</pre><p>those two calls in the main() function are needed to force the
+libxml2processor to generate DOM trees compliant with the XPath data
+model.</p><p><a href="bugs.html">Daniel Veillard</a></p></td></tr></table></td></tr></table></td></tr></table></td></tr></table></td></tr></table></body></html>
index 21c0aaa..4131e71 100644 (file)
@@ -3,8 +3,8 @@
 <html>
 <head>
   <title>The XSLT C library for Gnome</title>
-  <meta name="GENERATOR" content="amaya 8.5, see http://www.w3.org/Amaya/">
-  <meta http-equiv="Content-Type" content="text/html">
+  <meta name="GENERATOR" content="amaya 8.8.5, see http://www.w3.org/Amaya/">
+  <meta http-equiv="content-type" content="text/html">
 </head>
 
 <body bgcolor="#ffffff">
 
 <h1 style="text-align: center">libxslt</h1>
 
-<p>Libxslt is the <a href="http://www.w3.org/TR/xslt">XSLT</a> C library
-developed for the Gnome project. XSLT itself is a an XML language to define
-transformation for XML. Libxslt is based on <a
-href="http://xmlsoft.org/">libxml2</a> the XML C library developed for the
-Gnome project. It also implements most of the <a
-href="http://www.exslt.org/">EXSLT</a> set of processor-portable extensions
-functions and some of Saxon's evaluate and expressions extensions.</p>
+<p>Libxslt is the <a href="http://www.w3.org/TR/xslt">XSLT</a>C
+librarydeveloped for the Gnome project. XSLT itself is a an XML language to
+definetransformation for XML. Libxslt is based on <a
+href="http://xmlsoft.org/">libxml2</a>the XML C library developed for
+theGnome project. It also implements most of the <a
+href="http://www.exslt.org/">EXSLT</a>set of processor-portable
+extensionsfunctions and some of Saxon's evaluate and expressions
+extensions.</p>
 
-<p>People can either embed the library in their application or use xsltproc
-the command line processing tool. This library is free software and can be
-reused in commercial applications (see the <a href="intro.html">intro</a>)</p>
+<p>People can either embed the library in their application or use
+xsltprocthe command line processing tool. This library is free software and
+can bereused in commercial applications (see the <a
+href="intro.html">intro</a>)</p>
 
 <p>External documents:</p>
 <ul>
-  <li>John Fleck wrote <a href="tutorial/libxslttutorial.html">a tutorial for
-    libxslt</a></li>
+  <li>John Fleck wrote <a href="tutorial/libxslttutorial.html">a tutorial
+    forlibxslt</a></li>
   <li><a href="xsltproc.html">xsltproc user manual</a></li>
   <li><a href="http://xmlsoft.org/">the libxml documentation</a></li>
 </ul>
@@ -38,399 +40,410 @@ reused in commercial applications (see the <a href="intro.html">intro</a>)</p>
 
 <h2><a name="Introducti">Introduction</a></h2>
 
-<p>This document describes <a href="http://xmlsoft.org/XSLT/">libxslt</a>,
-the <a href="http://www.w3.org/TR/xslt">XSLT</a> C library developed for the
-<a href="http://www.gnome.org/">Gnome</a> project.</p>
+<p>This document describes <a href="http://xmlsoft.org/XSLT/">libxslt</a>,the
+<a href="http://www.w3.org/TR/xslt">XSLT</a>C library developed for the<a
+href="http://www.gnome.org/">Gnome</a>project.</p>
 
 <p>Here are some key points about libxslt:</p>
 <ul>
   <li>Libxslt is a C implementation</li>
-  <li>Libxslt is based on libxml for XML parsing, tree manipulation and XPath
-    support</li>
-  <li>It is written in plain C, making as few assumptions as possible, and
-    sticking closely to ANSI C/POSIX for easy embedding. Should works on
-    Linux/Unix/Windows.</li>
+  <li>Libxslt is based on libxml for XML parsing, tree manipulation and
+    XPathsupport</li>
+  <li>It is written in plain C, making as few assumptions as possible,
+    andsticking closely to ANSI C/POSIX for easy embedding. Should works
+    onLinux/Unix/Windows.</li>
   <li>This library is released under the <a
-    href="http://www.opensource.org/licenses/mit-license.html">MIT
-  Licence</a></li>
-  <li>Though not designed primarily with performances in mind, libxslt seems
-    to be a relatively fast processor.</li>
+    href="http://www.opensource.org/licenses/mit-license.html">MITLicence</a></li>
+  <li>Though not designed primarily with performances in mind, libxslt
+    seemsto be a relatively fast processor.</li>
 </ul>
 
 <h2><a name="Documentat">Documentation</a></h2>
 
 <p>There are some on-line resources about using libxslt:</p>
 <ol>
-  <li>Check the <a href="html/libxslt-lib.html#LIBXSLT-LIB">API
-    documentation</a> automatically extracted from code comments (using the
-    program apibuild.py, developed for libxml, together with the xsl script
-    'newapi.xsl' and the libxslt xsltproc program).</li>
-  <li>Look at the <a href="http://mail.gnome.org/archives/xslt/">mailing-list
-    archive</a>.</li>
-  <li>Of course since libxslt is based on libxml, it's a good idea to at
-    least read <a href="http://xmlsoft.org/">libxml description</a></li>
+  <li>Check the <a
+    href="html/libxslt-lib.html#LIBXSLT-LIB">APIdocumentation</a>automatically
+    extracted from code comments (using theprogram apibuild.py, developed for
+    libxml, together with the xsl script'newapi.xsl' and the libxslt xsltproc
+    program).</li>
+  <li>Look at the <a
+    href="http://mail.gnome.org/archives/xslt/">mailing-listarchive</a>.</li>
+  <li>Of course since libxslt is based on libxml, it's a good idea to atleast
+    read <a href="http://xmlsoft.org/">libxml description</a></li>
 </ol>
 
 <h2><a name="Reporting">Reporting bugs and getting help</a></h2>
 
-<p>If you need help with the XSLT language itself, here are a number of
-useful resources:</p>
+<p>If you need help with the XSLT language itself, here are a number ofuseful
+resources:</p>
 <ul>
   <li>I strongly suggest to subscribe to <a
     href="http://www.mulberrytech.com/xsl/xsl-list">XSL-list</a>, check <a
-    href="http://www.biglist.com/lists/xsl-list/archives/">the XSL-list
-    archives</a></li>
+    href="http://www.biglist.com/lists/xsl-list/archives/">the
+    XSL-listarchives</a></li>
   <li>The <a href="http://www.dpawson.co.uk/xsl/xslfaq.html">XSL FAQ</a>.</li>
   <li>The <a
-    href="http://www.nwalsh.com/docs/tutorials/xsl/xsl/slides.html">tutorial</a>
-    written by Paul Grosso and Norman Walsh is a very good on-line
-    introdution to the language.</li>
+    href="http://www.nwalsh.com/docs/tutorials/xsl/xsl/slides.html">tutorial</a>written
+    by Paul Grosso and Norman Walsh is a very good on-lineintrodution to the
+    language.</li>
   <li>The <a
-    href="http://www.zvon.org/xxl/XSLTutorial/Books/Book1/index.html">only
-    Zvon XSLT tutorial</a> details a lot of constructs with examples.</li>
-  <li><a href="http://www.jenitennison.com/xslt/index.html">Jeni Tennison's
-    XSLT</a> pages provide links to a lot of answers</li>
-  <li>the <a href="http://incrementaldevelopment.com/xsltrick/">Gallery of
-    XSLT Tricks</a> provides non-standard use case of XSLT</li>
-  <li>And I suggest to buy Michael Kay "XSLT Programmer's Reference" book
-    published by <a href="http://www.wrox.com/">Wrox</a> if you plan to work
-    seriously with XSLT in the future.</li>
-</ul>
-
-<p>Well, bugs or missing features are always possible, and I will make a
-point of fixing them in a timely fashion. The best way to report a bug is to
-use the <a
-href="http://bugzilla.gnome.org/enter_bug.cgi?product=libxslt">Gnome bug
-tracking database</a> (make sure to use the "libxslt" module name). Before
-filing a bug, check the <a
-href="http://bugzilla.gnome.org/buglist.cgi?product=libxslt">list of existing
-libxslt bugs</a> to make sure it hasn't already been filed. I look at reports
-there regularly and it's good to have a reminder when a bug is still open. Be
-sure to specify that the bug is for the package libxslt.</p>
-
-<p>For small problems you can try to get help on IRC, the #xml channel on
-irc.gnome.org (port 6667) usually have a few person subscribed which may help
-(but there is no garantee and if a real issue is raised it should go on the
-mailing-list for archival).</p>
+    href="http://www.zvon.org/xxl/XSLTutorial/Books/Book1/index.html">onlyZvon
+    XSLT tutorial</a>details a lot of constructs with examples.</li>
+  <li><a href="http://www.jenitennison.com/xslt/index.html">Jeni
+    Tennison'sXSLT</a>pages provide links to a lot of answers</li>
+  <li>the <a href="http://incrementaldevelopment.com/xsltrick/">Gallery
+    ofXSLT Tricks</a>provides non-standard use case of XSLT</li>
+  <li>And I suggest to buy Michael Kay "XSLT Programmer's Reference"
+    bookpublished by <a href="http://www.wrox.com/">Wrox</a>if you plan to
+    workseriously with XSLT in the future.</li>
+</ul>
+
+<p>Well, bugs or missing features are always possible, and I will make apoint
+of fixing them in a timely fashion. The best way to report a bug is touse the
+<a href="http://bugzilla.gnome.org/enter_bug.cgi?product=libxslt">Gnome
+bugtracking database</a>(make sure to use the "libxslt" module name).
+Beforefiling a bug, check the <a
+href="http://bugzilla.gnome.org/buglist.cgi?product=libxslt">list of
+existinglibxslt bugs</a>to make sure it hasn't already been filed. I look at
+reportsthere regularly and it's good to have a reminder when a bug is still
+open. Besure to specify that the bug is for the package libxslt.</p>
+
+<p>For small problems you can try to get help on IRC, the #xml channel
+onirc.gnome.org (port 6667) usually have a few person subscribed which may
+help(but there is no garantee and if a real issue is raised it should go on
+themailing-list for archival).</p>
 
 <p>There is also a mailing-list <a
-href="mailto:xslt@gnome.org">xslt@gnome.org</a> for libxslt, with an <a
-href="http://mail.gnome.org/archives/xslt/">on-line archive</a>. To subscribe
-to this list, please visit the <a
-href="http://mail.gnome.org/mailman/listinfo/xslt">associated Web</a> page
-and follow the instructions.</p>
+href="mailto:xslt@gnome.org">xslt@gnome.org</a>for libxslt, with an <a
+href="http://mail.gnome.org/archives/xslt/">on-line archive</a>. To
+subscribeto this list, please visit the <a
+href="http://mail.gnome.org/mailman/listinfo/xslt">associated Web</a>pageand
+follow the instructions.</p>
 
 <p>Alternatively, you can just send the bug to the <a
-href="mailto:xslt@gnome.org">xslt@gnome.org</a> list, if it's really libxslt
-related I will approve it.. Please do not send me mail directly especially
-for portability problem, it makes things really harder to track and in some
-cases I'm not the best person to answer a given question, ask the list
-instead. <strong>Do not send code, I won't debug it</strong> (but patches are
-really appreciated!).</p>
-
-<p>Please note that with the current amount of virus and SPAM, sending mail
-to the list without being subscribed won't work. There is *far too many
-bounces* (in the order of a thousand a day !) I cannot approve them manually
-anymore. If your mail to the list bounced waiting for administrator approval,
-it is LOST ! Repost it and fix the problem triggering the error. Also please
-note that <span style="color: #FF0000; background-color: #FFFFFF">emails with
-a legal warning asking to not copy or redistribute freely the informations
-they contain</span> are <strong>NOT</strong> acceptable for the mailing-list,
-such mail will as much as possible be discarded automatically, and are less
-likely to be answered if they made it to the list, <strong>DO NOT</strong>
-post to the list from an email address where such legal requirements are
-automatically added, get private paying support if you can't share
-informations.</p>
-
-<p>Check the following too <span style="color: #E50000">before
-posting</span>:</p>
-<ul>
-  <li><a href="search.php">use the search engine</a> to get informations
-    related to your problem.</li>
-  <li>make sure you are <a href="ftp://xmlsoft.org/libxslt/">using a recent
-    version</a>, and that the problem still shows up in those</li>
-  <li>check the <a href="http://mail.gnome.org/archives/xslt/">list
-    archives</a> to see if the problem was reported already, in this case
-    there is probably a fix available, similarly check the <a
-    href="http://bugzilla.gnome.org/buglist.cgi?product=libxslt">registered
-    open bugs</a></li>
-  <li>make sure you can reproduce the bug with xsltproc, a very useful thing
-    to do is run the transformation with -v argument and redirect the
-    standard error to a file, then search in this file for the transformation
-    logs just preceding the possible problem</li>
-  <li>Please send the command showing the error as well as the input and
-    stylesheet (as an attachment)</li>
+href="mailto:xslt@gnome.org">xslt@gnome.org</a>list, if it's really
+libxsltrelated I will approve it.. Please do not send me mail directly
+especiallyfor portability problem, it makes things really harder to track and
+in somecases I'm not the best person to answer a given question, ask the
+listinstead. <strong>Do not send code, I won't debug it</strong>(but patches
+arereally appreciated!).</p>
+
+<p>Please note that with the current amount of virus and SPAM, sending mailto
+the list without being subscribed won't work. There is *far too manybounces*
+(in the order of a thousand a day !) I cannot approve them manuallyanymore.
+If your mail to the list bounced waiting for administrator approval,it is
+LOST ! Repost it and fix the problem triggering the error. Also pleasenote
+that <span style="color: #FF0000; background-color: #FFFFFF">emails witha
+legal warning asking to not copy or redistribute freely the informationsthey
+contain</span>are <strong>NOT</strong>acceptable for the mailing-list,such
+mail will as much as possible be discarded automatically, and are lesslikely
+to be answered if they made it to the list, <strong>DO NOT</strong>post to
+the list from an email address where such legal requirements areautomatically
+added, get private paying support if you can't shareinformations.</p>
+
+<p>Check the following too <span
+style="color: #E50000">beforeposting</span>:</p>
+<ul>
+  <li><a href="search.php">use the search engine</a>to get
+    informationsrelated to your problem.</li>
+  <li>make sure you are <a href="ftp://xmlsoft.org/libxslt/">using a
+    recentversion</a>, and that the problem still shows up in those</li>
+  <li>check the <a
+    href="http://mail.gnome.org/archives/xslt/">listarchives</a>to see if the
+    problem was reported already, in this casethere is probably a fix
+    available, similarly check the <a
+    href="http://bugzilla.gnome.org/buglist.cgi?product=libxslt">registeredopen
+    bugs</a></li>
+  <li>make sure you can reproduce the bug with xsltproc, a very useful
+    thingto do is run the transformation with -v argument and redirect
+    thestandard error to a file, then search in this file for the
+    transformationlogs just preceding the possible problem</li>
+  <li>Please send the command showing the error as well as the input
+    andstylesheet (as an attachment)</li>
 </ul>
 
 <p>Then send the bug with associated informations to reproduce it to the <a
-href="mailto:xslt@gnome.org">xslt@gnome.org</a> list; if it's really libxslt
-related I will approve it. Please do not send mail to me directly, it makes
-things really hard to track and in some cases I am not the best person to
-answer a given question, ask on the list.</p>
+href="mailto:xslt@gnome.org">xslt@gnome.org</a>list; if it's really
+libxsltrelated I will approve it. Please do not send mail to me directly, it
+makesthings really hard to track and in some cases I am not the best person
+toanswer a given question, ask on the list.</p>
 
 <p>To <span style="color: #E50000">be really clear about support</span>:</p>
 <ul>
-  <li>Support or help <span style="color: #E50000">request MUST be sent to
-    the list or on bugzilla</span> in case of problems, so that the Question
-    and Answers can be shared publicly. Failing to do so carries the implicit
-    message "I want free support but I don't want to share the benefits with
-    others" and is not welcome. I will automatically Carbon-Copy the
-    xslt@gnome.org mailing list for any technical reply made about libxml2 or
-    libxslt.</li>
-  <li>There is <span style="color: #E50000">no garantee for support</span>,
-    if your question remains unanswered after a week, repost it, making sure
-    you gave all the detail needed and the informations requested.</li>
-  <li>Failing to provide informations as requested or double checking first
-    for prior feedback also carries the implicit message "the time of the
-    library maintainers is less valuable than my time" and might not be
-    welcome.</li>
-</ul>
-
-<p>Of course, bugs reports with a suggested patch for fixing them will
-probably be processed faster.</p>
+  <li>Support or help <span style="color: #E50000">request MUST be sent tothe
+    list or on bugzilla</span>in case of problems, so that the Questionand
+    Answers can be shared publicly. Failing to do so carries the
+    implicitmessage "I want free support but I don't want to share the
+    benefits withothers" and is not welcome. I will automatically Carbon-Copy
+    thexslt@gnome.org mailing list for any technical reply made about libxml2
+    orlibxslt.</li>
+  <li>There is <span style="color: #E50000">no garantee for support</span>,if
+    your question remains unanswered after a week, repost it, making sureyou
+    gave all the detail needed and the informations requested.</li>
+  <li>Failing to provide informations as requested or double checking
+    firstfor prior feedback also carries the implicit message "the time of
+    thelibrary maintainers is less valuable than my time" and might not
+    bewelcome.</li>
+</ul>
+
+<p>Of course, bugs reports with a suggested patch for fixing them
+willprobably be processed faster.</p>
 
 <p>If you're looking for help, a quick look at <a
-href="http://mail.gnome.org/archives/xslt/">the list archive</a> may actually
-provide the answer, I usually send source samples when answering libxslt
-usage questions. The <a
-href="html/libxslt-lib.html#LIBXSLT-LIB">auto-generated documentation</a> is
-not as polished as I would like (I need to learn more about Docbook), but
-it's a good starting point.</p>
+href="http://mail.gnome.org/archives/xslt/">the list archive</a>may
+actuallyprovide the answer, I usually send source samples when answering
+libxsltusage questions. The <a
+href="html/libxslt-lib.html#LIBXSLT-LIB">auto-generated
+documentation</a>isnot as polished as I would like (I need to learn more
+about Docbook), butit's a good starting point.</p>
 
 <h2><a name="help">How to help</a></h2>
 
-<p>You can help the project in various ways, the best thing to do first is to
-subscribe to the mailing-list as explained before, check the <a
+<p>You can help the project in various ways, the best thing to do first is
+tosubscribe to the mailing-list as explained before, check the <a
 href="http://mail.gnome.org/archives/xslt/">archives </a>and the <a
-href="http://bugzilla.gnome.org/buglist.cgi?product=libxslt">Gnome bug
-database:</a>:</p>
+href="http://bugzilla.gnome.org/buglist.cgi?product=libxslt">Gnome
+bugdatabase:</a>:</p>
 <ol>
   <li>provide patches when you find problems</li>
-  <li>provide the diffs when you port libxslt to a new platform. They may not
-    be integrated in all cases but help pinpointing portability problems
-  and</li>
-  <li>provide documentation fixes (either as patches to the code comments or
-    as HTML diffs).</li>
+  <li>provide the diffs when you port libxslt to a new platform. They may
+    notbe integrated in all cases but help pinpointing portability
+  problemsand</li>
+  <li>provide documentation fixes (either as patches to the code comments
+    oras HTML diffs).</li>
   <li>provide new documentations pieces (translations, examples, etc ...)</li>
   <li>Check the TODO file and try to close one of the items</li>
-  <li>take one of the points raised in the archive or the bug database and
-    provide a fix. <a href="mailto:daniel@veillard.com">Get in touch with me
-    </a>before to avoid synchronization problems and check that the suggested
-    fix will fit in nicely :-)</li>
+  <li>take one of the points raised in the archive or the bug database
+    andprovide a fix. <a href="mailto:daniel@veillard.com">Get in touch with
+    me</a>before to avoid synchronization problems and check that the
+    suggestedfix will fit in nicely :-)</li>
 </ol>
 
 <h2><a name="Downloads">Downloads</a></h2>
 
 <p>The latest versions of libxslt can be found on the <a
-href="ftp://xmlsoft.org/libxslt/">xmlsoft.org</a> server and on mirrors (<a
+href="ftp://xmlsoft.org/libxslt/">xmlsoft.org</a>server and on mirrors (<a
 href="ftp://fr.rpmfind.net/pub/libxml/">France</a>) or on the <a
-href="ftp://ftp.gnome.org/pub/GNOME/MIRRORS.html">Gnome FTP server</a> as a
-<a href="ftp://ftp.gnome.org/pub/GNOME/sources/libxslt/1.1/">source
-archive</a>, Antonin Sprinzl also provides <a
-href="ftp://gd.tuwien.ac.at/pub/libxml/">a mirror in Austria</a>. (NOTE that
-you need the <a href="http://rpmfind.net/linux/RPM/libxml2.html">libxml2</a>,
-<a href="http://rpmfind.net/linux/RPM/libxml2-devel.html">libxml2-devel</a>,
-<a href="http://rpmfind.net/linux/RPM/libxslt.html">libxslt</a> and <a
-href="http://rpmfind.net/linux/RPM/libxslt-devel.html">libxslt-devel</a>
-packages installed to compile applications using libxslt.) <a
-href="mailto:igor@zlatkovic.com">Igor Zlatkovic</a> is now the maintainer of
-the Windows port, <a
-href="http://www.zlatkovic.com/projects/libxml/index.html">he provides
-binaries</a>. <a href="mailto:Gary.Pennington@sun.com">Gary Pennington</a>
-provides <a href="http://garypennington.net/libxml2/">Solaris binaries</a>.
-<a href="mailto:Steve.Ball@explain.com.au">Steve Ball</a> provides <a
-href="http://www.explain.com.au/oss/libxml2xslt.html">Mac Os X
-binaries</a>.</p>
+href="ftp://ftp.gnome.org/pub/GNOME/MIRRORS.html">Gnome FTP server</a>as a<a
+href="ftp://ftp.gnome.org/pub/GNOME/sources/libxslt/1.1/">sourcearchive</a>,
+Antonin Sprinzl also provides <a href="ftp://gd.tuwien.ac.at/pub/libxml/">a
+mirror in Austria</a>. (NOTE thatyou need the <a
+href="http://rpmfind.net/linux/RPM/libxml2.html">libxml2</a>,<a
+href="http://rpmfind.net/linux/RPM/libxml2-devel.html">libxml2-devel</a>,<a
+href="http://rpmfind.net/linux/RPM/libxslt.html">libxslt</a>and <a
+href="http://rpmfind.net/linux/RPM/libxslt-devel.html">libxslt-devel</a>packages
+installed to compile applications using libxslt.) <a
+href="mailto:igor@zlatkovic.com">Igor Zlatkovic</a>is now the maintainer
+ofthe Windows port, <a
+href="http://www.zlatkovic.com/projects/libxml/index.html">he
+providesbinaries</a>. <a href="mailto:Gary.Pennington@sun.com">Gary
+Pennington</a>provides <a href="http://garypennington.net/libxml2/">Solaris
+binaries</a>.<a href="mailto:Steve.Ball@explain.com.au">Steve
+Ball</a>provides <a href="http://www.explain.com.au/oss/libxml2xslt.html">Mac
+Os Xbinaries</a>.</p>
 
 <p><a name="Contribs">Contribs:</a></p>
 
-<p>I do accept external contributions, especially if compiling on another
-platform, get in touch with me to upload the package. I will keep them in the
-<a href="ftp://xmlsoft.org/libxml2/contribs/">contrib directory</a></p>
+<p>I do accept external contributions, especially if compiling on
+anotherplatform, get in touch with me to upload the package. I will keep them
+in the<a href="ftp://xmlsoft.org/libxml2/contribs/">contrib directory</a></p>
 
 <p>Libxslt is also available from CVS:</p>
 <ul>
-  <li><p>The <a href="http://cvs.gnome.org/viewcvs/libxslt/">Gnome CVS
-    base</a>. Check the <a
-    href="http://developer.gnome.org/tools/cvs.html">Gnome CVS Tools</a>
-    page; the CVS module is <b>libxslt</b>.</p>
+  <li><p>The <a href="http://cvs.gnome.org/viewcvs/libxslt/">Gnome
+    CVSbase</a>. Check the <a
+    href="http://developer.gnome.org/tools/cvs.html">Gnome CVS Tools</a>page;
+    the CVS module is <b>libxslt</b>.</p>
   </li>
-  <li><a href="ftp://xmlsoft.org/libxml2/libxslt-cvs-snapshot.tar.gz">snapshots from
-    CVS</a> updated every hour are also provided</li>
+  <li><a
+    href="ftp://xmlsoft.org/libxml2/libxslt-cvs-snapshot.tar.gz">snapshots
+    fromCVS</a>updated every hour are also provided</li>
 </ul>
 
 <h2><a name="FAQ">FAQ</a></h2>
 <ol>
   <li><em>Troubles compiling or linking programs using libxslt</em>
-    <p>Usually the problem comes from the fact that the compiler doesn't get
-    the right compilation or linking flags. There is a small shell script
-    <code>xslt-config</code> which is installed as part of libxslt usual
-    install process which provides those flags. Use</p>
+    <p>Usually the problem comes from the fact that the compiler doesn't
+    getthe right compilation or linking flags. There is a small shell
+    script<code>xslt-config</code>which is installed as part of libxslt
+    usualinstall process which provides those flags. Use</p>
     <p><code>xslt-config --cflags</code></p>
     <p>to get the compilation flags and</p>
     <p><code>xslt-config --libs</code></p>
-    <p>to get the linker flags. Usually this is done directly from the
-    Makefile as:</p>
+    <p>to get the linker flags. Usually this is done directly from
+    theMakefile as:</p>
     <p><code>CFLAGS=`xslt-config --cflags`</code></p>
     <p><code>LIBS=`xslt-config --libs`</code></p>
-    <p>Note also that if you use the EXSLT extensions from the program then
-    you should prepend <code>-lexslt</code> to the LIBS options</p>
+    <p>Note also that if you use the EXSLT extensions from the program
+    thenyou should prepend <code>-lexslt</code>to the LIBS options</p>
   </li>
   <li><em>passing parameters on the xsltproc command line doesn't work</em>
     <p><em>xsltproc --param test alpha foo.xsl foo.xml</em></p>
     <p><em>the param does not get passed and ends up as ""</em></p>
     <p>In a nutshell do a double escaping at the shell prompt:</p>
     <p>xsltproc --param test "'alpha'" foo.xsl foo.xml</p>
-    <p>i.e. the string value is surrounded by " and ' then terminated by '
-    and ". Libxslt interpret the parameter values as XPath expressions, so
-    the string -&gt;<code>alpha</code>&lt;- is intepreted as the node set
-    matching this string. You really want -&gt;<code>'alpha'</code>&lt;- to
-    be passed to the processor. And to allow this you need to escape the
-    quotes at the shell level using -&gt;<code>"'alpha'"</code>&lt;- .</p>
+    <p>i.e. the string value is surrounded by " and ' then terminated by 'and
+    ". Libxslt interpret the parameter values as XPath expressions, sothe
+    string -&gt;<code>alpha</code>&lt;- is intepreted as the node setmatching
+    this string. You really want -&gt;<code>'alpha'</code>&lt;- tobe passed
+    to the processor. And to allow this you need to escape thequotes at the
+    shell level using -&gt;<code>"'alpha'"</code>&lt;- .</p>
     <p>or use</p>
     <p>xsltproc --stringparam test alpha foo.xsl foo.xml</p>
   </li>
   <li><em>Is there C++ bindings ?</em>
     <p>Yes for example <a
-    href="http://pmade.org/pjones/software/xmlwrapp/">xmlwrapp</a> , see <a
+    href="http://pmade.org/pjones/software/xmlwrapp/">xmlwrapp</a>, see <a
     href="python.html">the related pages about bindings</a></p>
   </li>
 </ol>
 
 <h2><a name="News">News</a></h2>
 
-<p>The <a href="ChangeLog.html">change log</a> describes the recents commits
-to the <a href="http://cvs.gnome.org/viewcvs/libxslt/">CVS</a> code base.</p>
+<p>The <a href="ChangeLog.html">change log</a>describes the recents commitsto
+the <a href="http://cvs.gnome.org/viewcvs/libxslt/">CVS</a>code base.</p>
 
 <p>Those are the public releases made:</p>
 
+<h3>1.1.17: Jun 6 2006</h3>
+<ul>
+  <li>portability fixes: python detection</li>
+  <li>bug fixes: some regression tests, attribute/namespaces output (Kasimier
+    Buchcik), problem in mixed xsl:value-of and xsl:text uses (Kasimier)</li>
+  <li>improvements: internal refactoring (Kasimier Buchcik), use of the XPath
+    object cache in libxml2-2.6.25 (Kasimier)</li>
+</ul>
+
 <h3>1.1.16: May 01 2006</h3>
 <ul>
-  <li>portability fixes: EXSLT date/time on Solaris and IRIX (Albert Chin),
-      HP-UX  build (Albert Chin), 
-  <li>build fixes: Python detection(Joseph Sacco), plugin configurei
-      (Joel Reed)</li>
-  <li>bug fixes: pattern compilation fix(William Brack), EXSLT date/time
-      fix (Thomas Broyer), EXSLT function bug, potential loop on variable
-      eval, startup race (Christopher Palmer), debug statement left in python
-      (Nic Ferrier), various cleanup based on Coverity reports), error on
-      Out of memory condition (Charles Hardin), various namespace prefixes
-      fixes (Kasimier Buchcik), </li>
-  <li>improvement: speed up sortingi, start of internals refactoring (Kasimier
-      Buchcik)</li>
-  <li>documentation: man page fixes and updates (Daniel Leidert)
+  <li>portability fixes: EXSLT date/time on Solaris and IRIX (Albert
+    Chin),HP-UX  build (Albert Chin),</li>
+  <li>build fixes: Python detection(Joseph Sacco), plugin configurei(Joel
+    Reed)</li>
+  <li>bug fixes: pattern compilation fix(William Brack), EXSLT date/timefix
+    (Thomas Broyer), EXSLT function bug, potential loop on variableeval,
+    startup race (Christopher Palmer), debug statement left in python(Nic
+    Ferrier), various cleanup based on Coverity reports), error onOut of
+    memory condition (Charles Hardin), various namespace prefixesfixes
+    (Kasimier Buchcik),</li>
+  <li>improvement: speed up sortingi, start of internals refactoring
+    (KasimierBuchcik)</li>
+  <li>documentation: man page fixes and updates (Daniel Leidert)</li>
 </ul>
 
 <h3>1.1.15: Sep 04 2005</h3>
 <ul>
-  <li>build fixes: Windows build cleanups and updates (Igor Zlatkovic),
-    remove jhbuild warnings</li>
-  <li>bug fixes: negative number formatting (William Brack), number
-    formatting per mille definition (William Brack), XInclude default values
-    (William), text copy bugs (William), bug related to xmlXPathContext size,
-    reuse libxml2 memory management for text nodes, dictionnary text bug,
-    forbid variables in match (needs libxml2-2.6.21)</li>
+  <li>build fixes: Windows build cleanups and updates (Igor Zlatkovic),remove
+    jhbuild warnings</li>
+  <li>bug fixes: negative number formatting (William Brack), numberformatting
+    per mille definition (William Brack), XInclude default values(William),
+    text copy bugs (William), bug related to xmlXPathContext size,reuse
+    libxml2 memory management for text nodes, dictionnary text bug,forbid
+    variables in match (needs libxml2-2.6.21)</li>
   <li>improvements: EXSLT dyn:map (Mark Vakoc),</li>
-  <li>documentation: EXSLT date and time functions namespace in man (Jonathan
-    Wakely)</li>
+  <li>documentation: EXSLT date and time functions namespace in man
+    (JonathanWakely)</li>
 </ul>
 
 <h3>1.1.14: Apr 02 2005</h3>
 <ul>
-  <li>bug fixes: text node on stylesheet document without a dictionary
-    (William Brack), more checking of XSLT syntax, calling xsltInit()
-    multiple times, mode values interning raised by Mark Vakoc, bug in
-    pattern matching with ancestors, bug in patterna matching with cascading
-    select, xinclude and document() problem, build outside of source tree
-    (Mike Castle)</li>
-  <li>improvement: added a --nodict mode to xsltproc to check problems for
-    docuemtns without dictionnaries</li>
+  <li>bug fixes: text node on stylesheet document without a
+    dictionary(William Brack), more checking of XSLT syntax, calling
+    xsltInit()multiple times, mode values interning raised by Mark Vakoc, bug
+    inpattern matching with ancestors, bug in patterna matching with
+    cascadingselect, xinclude and document() problem, build outside of source
+    tree(Mike Castle)</li>
+  <li>improvement: added a --nodict mode to xsltproc to check problems
+    fordocuemtns without dictionnaries</li>
 </ul>
 
 <h3>1.1.13: Mar 13 2005</h3>
 <ul>
-  <li>build fixes: 64bits cleanup (William Brack), python 2.4 test (William),
-    LIBXSLT_VERSION_EXTRA on Windows (William), Windows makefiles fixes (Joel
-    Reed), libgcrypt-devel requires for RPM spec.</li>
-  <li>bug fixes: exslt day-of-week-in-month (Sal Paradise), xsl:call-template
-    should not change the current template rule (William Brack), evaluation
-    of global variables (William Brack), RVT's in XPath predicates (William),
-    namespace URI on template names (Mark Vakoc), stat() for Windows patch
-    (Aleksey Gurtovoy), pattern expression fixes (William Brack), out of
-    memory detection misses (William), parserOptions propagation (William),
-    exclude-result-prefixes fix (William), // patten fix (William).</li>
-  <li>extensions: module support (Joel Reed), dictionnary based speedups
-    trying to get rid of xmlStrEqual as much as possible.</li>
+  <li>build fixes: 64bits cleanup (William Brack), python 2.4 test
+    (William),LIBXSLT_VERSION_EXTRA on Windows (William), Windows makefiles
+    fixes (JoelReed), libgcrypt-devel requires for RPM spec.</li>
+  <li>bug fixes: exslt day-of-week-in-month (Sal Paradise),
+    xsl:call-templateshould not change the current template rule (William
+    Brack), evaluationof global variables (William Brack), RVT's in XPath
+    predicates (William),namespace URI on template names (Mark Vakoc), stat()
+    for Windows patch(Aleksey Gurtovoy), pattern expression fixes (William
+    Brack), out ofmemory detection misses (William), parserOptions
+    propagation (William),exclude-result-prefixes fix (William), // patten
+    fix (William).</li>
+  <li>extensions: module support (Joel Reed), dictionnary based
+    speedupstrying to get rid of xmlStrEqual as much as possible.</li>
   <li>documentation: added Wiki (Joel Reed)</li>
 </ul>
 
 <h3>1.1.12: Oct 29 2004</h3>
 <ul>
   <li>build fixes: warnings removal (William).</li>
-  <li>bug fixes: attribute document pointer fix (Mark Vakoc), exslt date
-    negative periods (William Brack), generated tree structure fixes,
-    namespace lookup fix, use reentrant gmtime_r (William Brack),
-    exslt:funtion namespace fix (William), potential NULL pointer reference
-    (Dennis Dams, William), force string interning on generated
-  documents.</li>
-  <li>documentation: update of the second tutorial (Panagiotis Louridas), add
-    exslt doc in rpm packages, fix the xsltproc man page.</li>
+  <li>bug fixes: attribute document pointer fix (Mark Vakoc), exslt
+    datenegative periods (William Brack), generated tree structure
+    fixes,namespace lookup fix, use reentrant gmtime_r (William
+    Brack),exslt:funtion namespace fix (William), potential NULL pointer
+    reference(Dennis Dams, William), force string interning on
+    generateddocuments.</li>
+  <li>documentation: update of the second tutorial (Panagiotis Louridas),
+    addexslt doc in rpm packages, fix the xsltproc man page.</li>
 </ul>
 
 <h3>1.1.11: Sep 29 2004</h3>
 <ul>
-  <li>bug fixes: xsl:include problems (William Brack), UTF8 number pattern
-    (William), date-time validation (William), namespace fix (William),
-    various Exslt date fixes (William), error callback fixes, leak with
-    namespaced global variable, attempt to fix a weird problem #153137</li>
+  <li>bug fixes: xsl:include problems (William Brack), UTF8 number
+    pattern(William), date-time validation (William), namespace fix
+    (William),various Exslt date fixes (William), error callback fixes, leak
+    withnamespaced global variable, attempt to fix a weird problem
+  #153137</li>
   <li>improvements: exslt:date-sum tests (Derek Poon)</li>
   <li>documentation: second tutorial by Panagiotis Lourida</li>
 </ul>
 
 <h3>1.1.10: Aug 31 2004</h3>
 <ul>
-  <li>build fix: NUL in c file blocking compilation on Solaris, Windows build
-    (Igor Zlatkovic)</li>
+  <li>build fix: NUL in c file blocking compilation on Solaris, Windows
+    build(Igor Zlatkovic)</li>
   <li>fix: key initialization problem (William Brack)</li>
   <li>documentation: fixed missing man page description for --path</li>
 </ul>
 
 <h3>1.1.9: Aug 22 2004</h3>
 <ul>
-  <li>build fixes: missing tests (William Brack), Python dependancies, Python
-    on 64bits boxes, --with-crypto flag (Rob Richards),</li>
-  <li>fixes: RVT key handling (William), Python binding (William and Sitsofe
-    Wheeler), key and XPath troubles (William), template priority on imports
-    (William), str:tokenize with empty strings (William), #default namespace
-    alias behaviour (William), doc ordering missing for main document
-    (William), 64bit bug (Andreas Schwab)</li>
-  <li>improvements: EXSLT date:sum added (Joel Reed), hook for document
-    loading for David Hyatt, xsltproc --nodtdattr to avoid defaulting DTD
-    attributes, extend xsltproc --version with CVS stamp (William).</li>
+  <li>build fixes: missing tests (William Brack), Python dependancies,
+    Pythonon 64bits boxes, --with-crypto flag (Rob Richards),</li>
+  <li>fixes: RVT key handling (William), Python binding (William and
+    SitsofeWheeler), key and XPath troubles (William), template priority on
+    imports(William), str:tokenize with empty strings (William), #default
+    namespacealias behaviour (William), doc ordering missing for main
+    document(William), 64bit bug (Andreas Schwab)</li>
+  <li>improvements: EXSLT date:sum added (Joel Reed), hook for
+    documentloading for David Hyatt, xsltproc --nodtdattr to avoid defaulting
+    DTDattributes, extend xsltproc --version with CVS stamp (William).</li>
   <li>Documentation: web page problem reported by Oliver Stoeneberg</li>
 </ul>
 
 <h3>1.1.8: July 5 2004</h3>
 <ul>
-  <li>build fixes: Windows runtime options (Oliver Stoeneberg), Windows
-    binary package layout (Igor Zlatkovic), libgcrypt version test and link
-    (William)</li>
+  <li>build fixes: Windows runtime options (Oliver Stoeneberg), Windowsbinary
+    package layout (Igor Zlatkovic), libgcrypt version test and
+  link(William)</li>
   <li>documentation: fix libxslt namespace name in doc (William)</li>
-  <li>bug fixes: undefined namespace message (William Brack), search engine
-    (William), multiple namespace fixups (William), namespace fix for key
-    evaluation (William), Python memory debug bindings,</li>
+  <li>bug fixes: undefined namespace message (William Brack), search
+    engine(William), multiple namespace fixups (William), namespace fix for
+    keyevaluation (William), Python memory debug bindings,</li>
   <li>improvements: crypto extensions for exslt (Joel Reed, William)</li>
 </ul>
 
 <h3>1.1.7: May 17 2004</h3>
 <ul>
   <li>build fix: warning about localtime_r on Solaris</li>
-  <li>bug fix: UTF8 string tokenize (William Brack), subtle memory
-    corruption, linefeed after comment at document level (William),
-    disable-output-escaping problem (William), pattern compilation in deep
-    imported stylesheets (William), namespace extension prefix bug,
-    libxslt.m4 bug (Edward Rudd), namespace lookup for attribute, namespaced
-    DOCTYPE name</li>
+  <li>bug fix: UTF8 string tokenize (William Brack), subtle memorycorruption,
+    linefeed after comment at document level
+    (William),disable-output-escaping problem (William), pattern compilation
+    in deepimported stylesheets (William), namespace extension prefix
+    bug,libxslt.m4 bug (Edward Rudd), namespace lookup for attribute,
+    namespacedDOCTYPE name</li>
 </ul>
 
 <h3>1.1.6: Apr 18 2004</h3>
@@ -443,81 +456,81 @@ to the <a href="http://cvs.gnome.org/viewcvs/libxslt/">CVS</a> code base.</p>
   <li>performance: use dictionnary lookup for variables</li>
   <li>remove use of _private from source documents</li>
   <li>cleanup of "make tests" output</li>
-  <li>bugfixes: AVT in local variables, use localtime_r to avoid thread
-    troubles (William), dictionary handling bug (William), limited number of
-    stubstitutions in AVT (William), tokenize fix for UTF-8 (William),
-    superfluous namespace (William), xsltproc error code on
-    &lt;xsl:message&gt; halt, OpenVMS fix, dictionnary reference counting
-    change.</li>
+  <li>bugfixes: AVT in local variables, use localtime_r to avoid
+    threadtroubles (William), dictionary handling bug (William), limited
+    number ofstubstitutions in AVT (William), tokenize fix for UTF-8
+    (William),superfluous namespace (William), xsltproc error code
+    on&lt;xsl:message&gt; halt, OpenVMS fix, dictionnary reference
+    countingchange.</li>
 </ul>
 
 <h3>1.1.4: Feb 23 2004</h3>
 <ul>
-  <li>bugfixes: attributes without doc (Mariano Suárez-Alvarez), problem with
-    Yelp, extension problem</li>
+  <li>bugfixes: attributes without doc (Mariano Suárez-Alvarez), problem
+    withYelp, extension problem</li>
   <li>display extension modules (Steve Little)</li>
   <li>Windows compilation patch (Mark Vadoc), Mingw (Mikhail Grushinskiy)</li>
 </ul>
 
 <h3>1.1.3: Feb 16 2004</h3>
 <ul>
-  <li>Rewrote the Attribute Value Template code, new XPath compilation
-    interfaces, dictionnary reuses for XSLT with potential for serious
-    performance improvements.</li>
-  <li>bug fixes: portability (William Brack), key() in node-set() results
-    (William), comment before doctype (William), math and node-set() problems
-    (William), cdata element and default namespace (William), behaviour on
-    unknown XSLT elements (Stefan Kost), priority of "//foo" patterns
-    (William), xsl:element and xsl:attribute QName check (William), comments
-    with -- (William), attribute namespace (William), check for ?&gt; in PI
-    (William)</li>
+  <li>Rewrote the Attribute Value Template code, new XPath
+    compilationinterfaces, dictionnary reuses for XSLT with potential for
+    seriousperformance improvements.</li>
+  <li>bug fixes: portability (William Brack), key() in node-set()
+    results(William), comment before doctype (William), math and node-set()
+    problems(William), cdata element and default namespace (William),
+    behaviour onunknown XSLT elements (Stefan Kost), priority of "//foo"
+    patterns(William), xsl:element and xsl:attribute QName check (William),
+    commentswith -- (William), attribute namespace (William), check for ?&gt;
+    in PI(William)</li>
   <li>Documentations: cleanup (John Fleck and William)</li>
-  <li>Python: patch for OS-X (Gianni Ceccarelli), enums export (Stephane
-    bidoul)</li>
+  <li>Python: patch for OS-X (Gianni Ceccarelli), enums export
+    (Stephanebidoul)</li>
 </ul>
 
 <h3>1.1.2: Dec 24 2003</h3>
 <ul>
-  <li>Documentation fixes (John Fleck, William Brack), EXSLT documentation
-    (William Brack)</li>
+  <li>Documentation fixes (John Fleck, William Brack), EXSLT
+    documentation(William Brack)</li>
   <li>Windows compilation fixes for MSVC and Mingw (Igor Zlatkovic)</li>
-  <li>Bug fixes: exslt:date returning NULL strings (William Brack),
-    namespaces output (William Brack),  key and namespace definition problem,
-    passing options down to the document() parser, xsl:number fixes (William
-    Brack)</li>
+  <li>Bug fixes: exslt:date returning NULL strings (William Brack),namespaces
+    output (William Brack),  key and namespace definition problem,passing
+    options down to the document() parser, xsl:number fixes
+  (WilliamBrack)</li>
 </ul>
 
 <h3>1.1.1: Dec 10 2003</h3>
 <ul>
   <li>code cleanup (William Brack)</li>
   <li>Windows: Makefile improvements (Igor Zlatkovic)</li>
-  <li>documentation improvements: William Brack, libexslt man page (Jonathan
-    Wakely)</li>
+  <li>documentation improvements: William Brack, libexslt man page
+    (JonathanWakely)</li>
   <li>param in EXSLT functions (Shaun McCance)</li>
   <li>XSLT debugging improvements (Mark Vakoc)</li>
-  <li>bug fixes: number formatting (Bjorn Reese), exslt:tokenize (William
-    Brack), key selector parsing with | reported by Oleg Paraschenko,
-    xsl:element with computed namespaces (William Brack), xslt:import/include
-    recursion detection (William Brack), exslt:function used in keys (William
-    Brack), bug when CDATA_SECTION are foun in the tree (William Brack),
-    entities handling when using XInclude.</li>
+  <li>bug fixes: number formatting (Bjorn Reese), exslt:tokenize
+    (WilliamBrack), key selector parsing with | reported by Oleg
+    Paraschenko,xsl:element with computed namespaces (William Brack),
+    xslt:import/includerecursion detection (William Brack), exslt:function
+    used in keys (WilliamBrack), bug when CDATA_SECTION are foun in the tree
+    (William Brack),entities handling when using XInclude.</li>
 </ul>
 
 <h3>1.1.0: Nov 4 2003</h3>
 <ul>
   <li>Removed DocBook SGML broken support</li>
   <li>fix xsl:key to work with PIs</li>
-  <li>Makefile and build improvement (Graham Wilson), build cleanup (William
-    Brack), macro fix (Justin Fletcher), build outside of source tree (Roumen
-    Petrov)</li>
-  <li>xsltproc option display fix (Alexey Efimov), --load-trace (Crutcher
-    Dunnavant)</li>
+  <li>Makefile and build improvement (Graham Wilson), build cleanup
+    (WilliamBrack), macro fix (Justin Fletcher), build outside of source tree
+    (RoumenPetrov)</li>
+  <li>xsltproc option display fix (Alexey Efimov), --load-trace
+    (CrutcherDunnavant)</li>
   <li>Python: never use stdout for error</li>
   <li>extension memory error fix (Karl Eichwalder)</li>
   <li>header path fixes (Steve Ball)</li>
   <li>added saxon:line-number() to libexslt (Brett Kail)</li>
-  <li>Fix some tortuous template problems when using predicates (William
-    Brack)</li>
+  <li>Fix some tortuous template problems when using predicates
+  (WilliamBrack)</li>
   <li>Debugger status patch (Kasimier Buchcik)</li>
   <li>Use new libxml2-2.6.x APIs for faster processing</li>
   <li>Make sure xsl:sort is empty</li>
@@ -546,14 +559,14 @@ to the <a href="http://cvs.gnome.org/viewcvs/libxslt/">CVS</a> code base.</p>
 
 <h3>1.0.32: Aug 9 2003</h3>
 <ul>
-  <li>bugfixes: xsltSaveResultToFile() python binding (Chris Jaeger), EXSLT
-    function (William Brack), RVT for globals (William Brack), EXSLT date
-    (William Brack),
-    <p>speed of large text output, xsl:copy with attributes, strip-space and
-    namespaces prefix, fix for --path xsltproc option, EXST:tokenize (Shaun
-    McCance), EXSLT:seconds (William Brack), sort with multiple keys (William
-    Brack), checking of { and } for attribute value templates (William
-    Brack)</p>
+  <li>bugfixes: xsltSaveResultToFile() python binding (Chris Jaeger),
+    EXSLTfunction (William Brack), RVT for globals (William Brack), EXSLT
+    date(William Brack),
+    <p>speed of large text output, xsl:copy with attributes, strip-space
+    andnamespaces prefix, fix for --path xsltproc option, EXST:tokenize
+    (ShaunMcCance), EXSLT:seconds (William Brack), sort with multiple keys
+    (WilliamBrack), checking of { and } for attribute value templates
+    (WilliamBrack)</p>
   </li>
   <li>Python bindings for extension elements (Sean Treadway)</li>
   <li>EXSLT:split added (Shaun McCance)</li>
@@ -563,16 +576,16 @@ to the <a href="http://cvs.gnome.org/viewcvs/libxslt/">CVS</a> code base.</p>
 
 <h3>1.0.31: Jul 6 2003</h3>
 <ul>
-  <li>bugfixes: xsl:copy on namespace nodes, AVT for xsl:sort order, fix for
-    the debugger (Keith Isdale), output filename limitation, trio.h and
-    triodef.h added (Albert Chin), EXSLT node-set (Peter Breitenlohner),
-    xsltChoose and whitespace (Igor Zlatkovic),
-    <p>stylesheet compilation (Igor Zlatkovic), NaN and sort (William Brack),
-    RVT bug introduced in 1.0.30</p>
+  <li>bugfixes: xsl:copy on namespace nodes, AVT for xsl:sort order, fix
+    forthe debugger (Keith Isdale), output filename limitation, trio.h
+    andtriodef.h added (Albert Chin), EXSLT node-set (Peter
+    Breitenlohner),xsltChoose and whitespace (Igor Zlatkovic),
+    <p>stylesheet compilation (Igor Zlatkovic), NaN and sort (William
+    Brack),RVT bug introduced in 1.0.30</p>
   </li>
   <li>avoid generating &amp;quot; (fix in libxml2-2.5.8)</li>
-  <li>fix 64bit cleaness problem and compilation troubles introduced in
-  1.0.30</li>
+  <li>fix 64bit cleaness problem and compilation troubles introduced
+  in1.0.30</li>
   <li>Windows makefile generation (Igor Zlatkovic)</li>
   <li>HP-UX portability fix</li>
 </ul>
@@ -580,20 +593,20 @@ to the <a href="http://cvs.gnome.org/viewcvs/libxslt/">CVS</a> code base.</p>
 <h3>1.0.30: May 4 2003</h3>
 <ul>
   <li>Fixes and new APIs to handle Result Value Trees and avoid leaks</li>
-  <li>Fixes for: EXSLT math pow() function (Charles Bozeman), global
-    parameter and global variables mismatch, a segfault on pattern
-    compilation errors, namespace copy in xsl:copy-of, python generator
-    problem, OpenVMS trio update, premature call to xsltFreeStackElem (Igor),
-    current node when templates applies to attributes</li>
+  <li>Fixes for: EXSLT math pow() function (Charles Bozeman), globalparameter
+    and global variables mismatch, a segfault on patterncompilation errors,
+    namespace copy in xsl:copy-of, python generatorproblem, OpenVMS trio
+    update, premature call to xsltFreeStackElem (Igor),current node when
+    templates applies to attributes</li>
 </ul>
 
 <h3>1.0.29: Apr 1 2003</h3>
 <ul>
   <li>performance improvements especially for large flat documents</li>
-  <li>bug fixes: Result Value Tree handling, XML IDs, keys(), extra namespace
-    declarations with xsl:elements.</li>
-  <li>portability: python and trio fixes (Albert Chin), python on Solaris
-    (Ben Phillips)</li>
+  <li>bug fixes: Result Value Tree handling, XML IDs, keys(), extra
+    namespacedeclarations with xsl:elements.</li>
+  <li>portability: python and trio fixes (Albert Chin), python on Solaris(Ben
+    Phillips)</li>
 </ul>
 
 <h3>1.0.28: Mar 24 2003</h3>
@@ -601,43 +614,44 @@ to the <a href="http://cvs.gnome.org/viewcvs/libxslt/">CVS</a> code base.</p>
   <li>fixed node() in patterns semantic.</li>
   <li>fixed a memory access problem in format-number()</li>
   <li>fixed stack overflow in recursive global variable or params</li>
-  <li>cleaned up Result Value Tree handling, and fixed a couple of old bugs
-    in the process</li>
+  <li>cleaned up Result Value Tree handling, and fixed a couple of old bugsin
+    the process</li>
 </ul>
 
 <h3>1.0.27: Feb 24 2003</h3>
 <ul>
-  <li>bug fixes: spurious xmlns:nsX="" generation, serialization bug (in
-    libxml2), a namespace copy problem, errors in the RPM spec prereqs</li>
+  <li>bug fixes: spurious xmlns:nsX="" generation, serialization bug
+    (inlibxml2), a namespace copy problem, errors in the RPM spec prereqs</li>
   <li>Windows path canonicalization and document cache fix (Igor)</li>
 </ul>
 
 <h3>1.0.26: Feb 10 2003</h3>
 <ul>
-  <li>Fixed 3 serious bugs in document() and stylesheet compilation which
-    could lead to a crash</li>
+  <li>Fixed 3 serious bugs in document() and stylesheet compilation
+    whichcould lead to a crash</li>
 </ul>
 
 <h3>1.0.25: Feb 5 2003</h3>
 <ul>
-  <li>Bug fix: double-free for standalone stylesheets introduced in 1.0.24, C
-    syntax pbm, 3 bugs reported by Eric van der Vlist</li>
-  <li>Some XPath and XInclude related problems were actually fixed in
-    libxml2-2.5.2</li>
+  <li>Bug fix: double-free for standalone stylesheets introduced in 1.0.24,
+    Csyntax pbm, 3 bugs reported by Eric van der Vlist</li>
+  <li>Some XPath and XInclude related problems were actually fixed
+    inlibxml2-2.5.2</li>
   <li>Documentation: emphasize taht --docbook is not for XML docs.</li>
 </ul>
 
 <h3>1.0.24: Jan 14 2003</h3>
 <ul>
-  <li>bug fixes: imported global varables, python bindings (Stéphane Bidoul),
-    EXSLT memory leak (Charles Bozeman), namespace generation on
-    xsl:attribute, space handling with imports (Daniel Stodden),
-    extension-element-prefixes (Josh Parsons), comments within xsl:text (Matt
-    Sergeant), superfluous xmlns generation, XInclude related bug for
-    numbering, EXSLT strings (Alexey Efimov), attribute-sets computation on
-    imports, extension module init and shutdown callbacks not called</li>
-  <li>HP-UX portability (Alexey Efimov), Windows makefiles (Igor and Stephane
-    Bidoul), VMS makefile updates (Craig A. Berry)</li>
+  <li>bug fixes: imported global varables, python bindings (Stéphane
+    Bidoul),EXSLT memory leak (Charles Bozeman), namespace generation
+    onxsl:attribute, space handling with imports (Daniel
+    Stodden),extension-element-prefixes (Josh Parsons), comments within
+    xsl:text (MattSergeant), superfluous xmlns generation, XInclude related
+    bug fornumbering, EXSLT strings (Alexey Efimov), attribute-sets
+    computation onimports, extension module init and shutdown callbacks not
+    called</li>
+  <li>HP-UX portability (Alexey Efimov), Windows makefiles (Igor and
+    StephaneBidoul), VMS makefile updates (Craig A. Berry)</li>
   <li>adds xsltGetProfileInformation() (Michael Rothwell)</li>
   <li>fix the API generation scripts</li>
   <li>API to provide the sorting routines (Richard Jinks)</li>
@@ -651,10 +665,10 @@ to the <a href="http://cvs.gnome.org/viewcvs/libxslt/">CVS</a> code base.</p>
 <ul>
   <li>Windows build cleanup (Igor)</li>
   <li>Unix build and RPM packaging cleanup</li>
-  <li>Improvement of the python bindings: extension functions and activating
-    EXSLT</li>
-  <li>various bug fixes: number formatting, portability for bounded string
-    functions, CData nodes, key(), @*[...] patterns</li>
+  <li>Improvement of the python bindings: extension functions and
+    activatingEXSLT</li>
+  <li>various bug fixes: number formatting, portability for bounded
+    stringfunctions, CData nodes, key(), @*[...] patterns</li>
   <li>Documentation improvements (John Fleck)</li>
   <li>added libxslt.m4 (Thomas Schraitle)</li>
 </ul>
@@ -662,22 +676,22 @@ to the <a href="http://cvs.gnome.org/viewcvs/libxslt/">CVS</a> code base.</p>
 <h3>1.0.22: Oct 18 2002</h3>
 <ul>
   <li>Updates on the Windows Makefiles</li>
-  <li>Added a security module, and a related set of new options to
-  xsltproc</li>
+  <li>Added a security module, and a related set of new options
+  toxsltproc</li>
   <li>Allowed per transformation error handler.</li>
-  <li>Fixed a few bugs: node() semantic, URI escaping, media-type, attribute
-    lists</li>
+  <li>Fixed a few bugs: node() semantic, URI escaping, media-type,
+    attributelists</li>
 </ul>
 
 <h3>1.0.21: Sep 26 2002</h3>
 <ul>
-  <li>Bug fixes: match="node()", date:difference() (Igor and Charlie
-    Bozeman), disable-output-escaping</li>
+  <li>Bug fixes: match="node()", date:difference() (Igor and CharlieBozeman),
+    disable-output-escaping</li>
   <li>Python bindings: style.saveResultToString() from Ralf Mattes</li>
   <li>Logos from Marc Liyanage</li>
   <li>Mem leak fix from Nathan Myers</li>
-  <li>Makefile: DESTDIR fix from Christophe Merlet, AMD x86_64 (Mandrake),
-    Windows (Igor), Python detection</li>
+  <li>Makefile: DESTDIR fix from Christophe Merlet, AMD x86_64
+    (Mandrake),Windows (Igor), Python detection</li>
   <li>Documentation improvements: John Fleck</li>
 </ul>
 
@@ -686,8 +700,8 @@ to the <a href="http://cvs.gnome.org/viewcvs/libxslt/">CVS</a> code base.</p>
   <li>Windows makefile updates (Igor) and x86-64 (Frederic Crozat)</li>
   <li>fixed HTML meta tag saving for Mac/IE users</li>
   <li>possible leak patches from Nathan Myers</li>
-  <li>try to handle document('') as best as possible depending in the
-  cases</li>
+  <li>try to handle document('') as best as possible depending in
+  thecases</li>
   <li>Fixed the DocBook stylesheets handling problem</li>
   <li>Fixed a few XSLT reported errors</li>
 </ul>
@@ -700,27 +714,26 @@ to the <a href="http://cvs.gnome.org/viewcvs/libxslt/">CVS</a> code base.</p>
   <li>document('') fix: bug pointed by Eric van der Vlist</li>
   <li>xsl:message with terminate="yes" fixes: William Brack</li>
   <li>xsl:sort order support added: Ken Neighbors</li>
-  <li>a few other bug fixes, some of them requiring the latest version of
-    libxml2</li>
+  <li>a few other bug fixes, some of them requiring the latest version
+    oflibxml2</li>
 </ul>
 
 <h3>1.0.18: May 27 2002</h3>
 <ul>
-  <li>a number of bug fixes: attributes, extra namespace declarations
-    (DocBook), xsl:include crash (Igor), documentation (Christian Cornelssen,
-    Charles Bozeman and Geert Kloosterman),  element-available (Richard
-  Jinks)</li>
-  <li>xsltproc can now list teh registered extensions thanks to Mark
-  Vakoc</li>
-  <li>there is a new API to save directly to a string
-    xsltSaveResultToString() by Morus Walter</li>
+  <li>a number of bug fixes: attributes, extra namespace
+    declarations(DocBook), xsl:include crash (Igor), documentation (Christian
+    Cornelssen,Charles Bozeman and Geert Kloosterman),  element-available
+    (RichardJinks)</li>
+  <li>xsltproc can now list teh registered extensions thanks to MarkVakoc</li>
+  <li>there is a new API to save directly to a stringxsltSaveResultToString()
+    by Morus Walter</li>
   <li>specific error registration function for the python API</li>
 </ul>
 
 <h3>1.0.17: April 29 2002</h3>
 <ul>
-  <li>cleanup in code, XSLT debugger support and Makefiles for Windows by
-  Igor</li>
+  <li>cleanup in code, XSLT debugger support and Makefiles for Windows
+  byIgor</li>
   <li>a C++ portability fix by Mark Vakoc</li>
   <li>EXSLT date improvement and regression tests by Charles Bozeman</li>
   <li>attempt to fix a bug in xsltProcessUserParamInternal</li>
@@ -728,18 +741,18 @@ to the <a href="http://cvs.gnome.org/viewcvs/libxslt/">CVS</a> code base.</p>
 
 <h3>1.0.16: April 15 2002</h3>
 <ul>
-  <li>Bug fixes: strip-space, URL in HTML output, error when xsltproc can't
-    save</li>
+  <li>Bug fixes: strip-space, URL in HTML output, error when xsltproc
+    can'tsave</li>
   <li>portability fixes: OSF/1, IEEE on alphas, Windows, Python bindings</li>
 </ul>
 
 <h3>1.0.15: Mar 25 2002</h3>
 <ul>
-  <li>Bugfixes: XPath, python Makefile, recursive attribute sets, @foo[..]
-    templates</li>
+  <li>Bugfixes: XPath, python Makefile, recursive attribute sets,
+    @foo[..]templates</li>
   <li>Debug of memory alocation with valgind</li>
-  <li>serious profiling leading to significant improvement for DocBook
-    processing</li>
+  <li>serious profiling leading to significant improvement for
+    DocBookprocessing</li>
   <li>revamp of the Windows build</li>
 </ul>
 
@@ -747,16 +760,16 @@ to the <a href="http://cvs.gnome.org/viewcvs/libxslt/">CVS</a> code base.</p>
 <ul>
   <li>Improvement in the XPath engine (libxml2-2.4.18)</li>
   <li>Nasty bug fix related to exslt:node-set</li>
-  <li>Fixed the python Makefiles, cleanup of doc comments, Windows
-    portability fixes</li>
+  <li>Fixed the python Makefiles, cleanup of doc comments, Windowsportability
+    fixes</li>
 </ul>
 
 <h3>1.0.13: Mar 8 2002</h3>
 <ul>
   <li>a number of bug fixes including "namespace node have no parents"</li>
   <li>Improvement of the Python bindings</li>
-  <li>Charles Bozeman provided fixes and regression tests for exslt date
-    functions.</li>
+  <li>Charles Bozeman provided fixes and regression tests for exslt
+    datefunctions.</li>
 </ul>
 
 <h3>1.0.12: Feb 11 2002</h3>
@@ -768,10 +781,9 @@ to the <a href="http://cvs.gnome.org/viewcvs/libxslt/">CVS</a> code base.</p>
 <h3>1.0.11: Feb 8 2002</h3>
 <ul>
   <li>Change of Licence to the <a
-    href="http://www.opensource.org/licenses/mit-license.html">MIT
-  Licence</a></li>
-  <li>Added a beta version of the Python bindings, including support to
-    extend the engine with functions written in Python</li>
+    href="http://www.opensource.org/licenses/mit-license.html">MITLicence</a></li>
+  <li>Added a beta version of the Python bindings, including support toextend
+    the engine with functions written in Python</li>
   <li>A number of bug fixes</li>
   <li>Charlie Bozeman provided more EXSLT functions</li>
   <li>Portability fixes</li>
@@ -782,8 +794,7 @@ to the <a href="http://cvs.gnome.org/viewcvs/libxslt/">CVS</a> code base.</p>
   <li>Windows fixes for Win32 from Igor</li>
   <li>Fixed the Solaris compilation trouble (Albert)</li>
   <li>Documentation changes and updates: John Fleck</li>
-  <li>Added a stringparam option to avoid escaping hell at the shell
-  level</li>
+  <li>Added a stringparam option to avoid escaping hell at the shelllevel</li>
   <li>A few bug fixes</li>
 </ul>
 
@@ -792,23 +803,22 @@ to the <a href="http://cvs.gnome.org/viewcvs/libxslt/">CVS</a> code base.</p>
   <li>Makefile patches from Peter Williams</li>
   <li>attempt to fix the compilation problem associated to prelinking</li>
   <li>obsoleted libxsltbreakpoint now deprecated and frozen to 1.0.8 API</li>
-  <li>xsltproc return codes are now significant, John Fleck updated the
-    documentation</li>
-  <li>patch to allow as much as 40 steps in patterns (Marc Tardif), should be
-    made dynamic really</li>
-  <li>fixed a bug raised by Nik Clayton when using doctypes with HTML
-  output</li>
+  <li>xsltproc return codes are now significant, John Fleck updated
+    thedocumentation</li>
+  <li>patch to allow as much as 40 steps in patterns (Marc Tardif), should
+    bemade dynamic really</li>
+  <li>fixed a bug raised by Nik Clayton when using doctypes with
+  HTMLoutput</li>
   <li>patches from Keith Isdale to interface with xsltdebugger</li>
 </ul>
 
 <h3>1.0.8: Nov 26 2001</h3>
 <ul>
-  <li>fixed an annoying header problem, removed a few bugs and some code
-    cleanup</li>
+  <li>fixed an annoying header problem, removed a few bugs and some
+    codecleanup</li>
   <li>patches for Windows and update of Windows Makefiles by Igor</li>
   <li>OpenVMS port instructions from John A Fotheringham</li>
-  <li>fixed some Makefiles annoyance and libraries prelinking
-  informations</li>
+  <li>fixed some Makefiles annoyance and libraries prelinkinginformations</li>
 </ul>
 
 <h3>1.0.7: Nov 10 2001</h3>
@@ -821,29 +831,28 @@ to the <a href="http://cvs.gnome.org/viewcvs/libxslt/">CVS</a> code base.</p>
 
 <h3>1.0.6: Oct 30 2001</h3>
 <ul>
-  <li>bug fixes on number formatting (Thomas), date/time functions (Bruce
-    Miller)</li>
+  <li>bug fixes on number formatting (Thomas), date/time functions
+    (BruceMiller)</li>
   <li>update of the Windows Makefiles (Igor)</li>
   <li>fixed DOCTYPE generation rules for HTML output (me)</li>
 </ul>
 
 <h3>1.0.5: Oct 10 2001</h3>
 <ul>
-  <li>some portability fixes, including Windows makefile updates from
-  Igor</li>
+  <li>some portability fixes, including Windows makefile updates fromIgor</li>
   <li>fixed a dozen bugs on XSLT and EXSLT (me and Thomas Broyer)</li>
-  <li>support for Saxon's evaluate and expressions extensions added (initial
-    contribution from Darren Graves)</li>
+  <li>support for Saxon's evaluate and expressions extensions added
+    (initialcontribution from Darren Graves)</li>
   <li>better handling of XPath evaluation errors</li>
 </ul>
 
 <h3>1.0.4: Sep 12 2001</h3>
 <ul>
   <li>Documentation updates from John fleck</li>
-  <li>bug fixes (DocBook  FO generation should be fixed)  and portability
-    improvements</li>
-  <li>Thomas Broyer improved the existing EXSLT support and added String,
-    Time and Date core functions support</li>
+  <li>bug fixes (DocBook  FO generation should be fixed)  and
+    portabilityimprovements</li>
+  <li>Thomas Broyer improved the existing EXSLT support and added String,Time
+    and Date core functions support</li>
 </ul>
 
 <h3>1.0.3:  Aug 23 2001</h3>
@@ -874,17 +883,17 @@ to the <a href="http://cvs.gnome.org/viewcvs/libxslt/">CVS</a> code base.</p>
 <h3>1.0.0: July 10 2001</h3>
 <ul>
   <li>a lot of cleanup, a lot of regression tests added or fixed</li>
-  <li>added a documentation for <a href="extensions.html">writing
-    extensions</a></li>
+  <li>added a documentation for <a
+    href="extensions.html">writingextensions</a></li>
   <li>fixed some variable evaluation problems (with William)</li>
-  <li>added profiling of stylesheet execution accessible as the xsltproc
-    --profile option</li>
-  <li>fixed element-available() and the implementation of the various
-    chunking methods present, Norm Walsh provided a lot of feedback</li>
-  <li>exclude-result-prefixes and namespaces output should now work as
-    expected</li>
-  <li>added support of embedded stylesheet as described in section 2.7 of the
-    spec</li>
+  <li>added profiling of stylesheet execution accessible as the
+    xsltproc--profile option</li>
+  <li>fixed element-available() and the implementation of the variouschunking
+    methods present, Norm Walsh provided a lot of feedback</li>
+  <li>exclude-result-prefixes and namespaces output should now work
+  asexpected</li>
+  <li>added support of embedded stylesheet as described in section 2.7 of
+    thespec</li>
 </ul>
 
 <h3>0.14.0: July 5 2001</h3>
@@ -893,8 +902,9 @@ to the <a href="http://cvs.gnome.org/viewcvs/libxslt/">CVS</a> code base.</p>
   <li>completion of the little XSLT-1.0 features left unimplemented</li>
   <li>Added and implemented the extension API suggested by Thomas Broyer</li>
   <li>the Windows MSC environment should be complete</li>
-  <li>tested and optimized with a really large document (DocBook Definitive
-    Guide) libxml/libxslt should really be faster on serious workloads</li>
+  <li>tested and optimized with a really large document (DocBook
+    DefinitiveGuide) libxml/libxslt should really be faster on serious
+    workloads</li>
 </ul>
 
 <h3>0.13.0: June 26 2001</h3>
@@ -902,29 +912,29 @@ to the <a href="http://cvs.gnome.org/viewcvs/libxslt/">CVS</a> code base.</p>
   <li>lots of cleanups</li>
   <li>fixed a C++ compilation problem</li>
   <li>couple of fixes to xsltSaveTo()</li>
-  <li>try to fix Docbook-xslt-1.4 and chunking, updated the regression test
-    with them</li>
+  <li>try to fix Docbook-xslt-1.4 and chunking, updated the regression
+    testwith them</li>
   <li>fixed pattern compilation and priorities problems</li>
   <li>Patches for Windows and MSC project mostly contributed by Yon Derek</li>
   <li>update to the Tutorial by John Fleck</li>
   <li>William fixed bugs in templates and for-each functions</li>
-  <li>added a new interface xsltRunStylesheet() for a more flexible output
-    (incomplete), added -o option to xsltproc</li>
+  <li>added a new interface xsltRunStylesheet() for a more flexible
+    output(incomplete), added -o option to xsltproc</li>
 </ul>
 
 <h3>0.12.0: June 18 2001</h3>
 <ul>
   <li>fixed a dozen of bugs reported</li>
-  <li>HTML generation should be quite better (requires libxml-2.3.11 upgrade
-    too)</li>
+  <li>HTML generation should be quite better (requires libxml-2.3.11
+    upgradetoo)</li>
   <li>William fixed some problems with document()</li>
-  <li>Fix namespace nodes selection and copy (requires libxml-2.3.11 upgrade
-    too)</li>
-  <li>John Fleck added a<a href="tutorial/libxslttutorial.html">
-  tutorial</a></li>
+  <li>Fix namespace nodes selection and copy (requires libxml-2.3.11
+    upgradetoo)</li>
+  <li>John Fleck added a<a
+  href="tutorial/libxslttutorial.html">tutorial</a></li>
   <li>Fixes for namespace handling when evaluating variables</li>
-  <li>XInclude global flag added to process XInclude on document() if
-    requested</li>
+  <li>XInclude global flag added to process XInclude on document()
+  ifrequested</li>
   <li>made xsltproc --version more detailed</li>
 </ul>
 
@@ -944,8 +954,8 @@ to the <a href="http://cvs.gnome.org/viewcvs/libxslt/">CVS</a> code base.</p>
 <ul>
   <li>cleanups to make stylesheet read-only (not 100% complete)</li>
   <li>fixed URI resolution in document()</li>
-  <li>force all XPath expression to be compiled at stylesheet parsing time,
-    even if unused ...</li>
+  <li>force all XPath expression to be compiled at stylesheet parsing
+    time,even if unused ...</li>
   <li>Fixed HTML default output detection</li>
   <li>Fixed double attribute generation #54446</li>
   <li>Fixed {{ handling in attributes #54451</li>
@@ -955,8 +965,8 @@ to the <a href="http://cvs.gnome.org/viewcvs/libxslt/">CVS</a> code base.</p>
   <li>William Brack and Bjorn Reese improved format-number()</li>
   <li>Fixed multiple sort, it should really work now</li>
   <li>added a --docbook option for SGML DocBook input (hackish)</li>
-  <li>a number of other bug fixes and regression test added as people were
-    submitting them</li>
+  <li>a number of other bug fixes and regression test added as people
+    weresubmitting them</li>
 </ul>
 
 <h3>0.9.0: May 3 2001</h3>
@@ -964,10 +974,10 @@ to the <a href="http://cvs.gnome.org/viewcvs/libxslt/">CVS</a> code base.</p>
   <li>lot of various bugfixes, extended the regression suite</li>
   <li>xsltproc should work with multiple params</li>
   <li>added an option to use xsltproc with HTML input</li>
-  <li>improved the stylesheet compilation, processing of complex stylesheets
-    should be faster</li>
-  <li>using the same stylesheet for concurrent processing on multithreaded
-    programs should work now</li>
+  <li>improved the stylesheet compilation, processing of complex
+    stylesheetsshould be faster</li>
+  <li>using the same stylesheet for concurrent processing on
+    multithreadedprograms should work now</li>
   <li>fixed another batch of namespace handling problems</li>
   <li>Implemented multiple level of sorting</li>
 </ul>
@@ -977,11 +987,11 @@ to the <a href="http://cvs.gnome.org/viewcvs/libxslt/">CVS</a> code base.</p>
   <li>fixed ansidecl.h problem</li>
   <li>fixed unparsed-entity-uri() and generate-id()</li>
   <li>sort semantic fixes and priority prob from William M. Brack</li>
-  <li>fixed namespace handling problems in XPath expression computations
-    (requires libxml-2.3.7)</li>
+  <li>fixed namespace handling problems in XPath expression
+    computations(requires libxml-2.3.7)</li>
   <li>fixes to current() and key()</li>
-  <li>other, smaller fixes, lots of testing with N Walsh DocBook HTML
-    stylesheets</li>
+  <li>other, smaller fixes, lots of testing with N Walsh DocBook
+    HTMLstylesheets</li>
 </ul>
 
 <h3>0.7.0: Apr 10 2001</h3>
@@ -1003,13 +1013,13 @@ to the <a href="http://cvs.gnome.org/viewcvs/libxslt/">CVS</a> code base.</p>
 <h3>0.5.0: Mar 10 2001</h3>
 <ul>
   <li>fifth beta</li>
-  <li>some optimization work, for the moment 2 XSLT transform cannot use the
-    same stylesheet at the same time (to be fixed)</li>
+  <li>some optimization work, for the moment 2 XSLT transform cannot use
+    thesame stylesheet at the same time (to be fixed)</li>
   <li>fixed problems with handling of tree results</li>
   <li>fixed a reported strip-spaces problem</li>
   <li>added more reported/fixed bugs to the test suite</li>
-  <li>incorporated William M. Brack fix for imports and global variables as
-    well as patch for with-param support in apply-templates</li>
+  <li>incorporated William M. Brack fix for imports and global variables
+    aswell as patch for with-param support in apply-templates</li>
   <li>a bug fix on for-each</li>
 </ul>
 
@@ -1033,15 +1043,14 @@ to the <a href="http://cvs.gnome.org/viewcvs/libxslt/">CVS</a> code base.</p>
 <h3>0.2.0: Feb 15 2001</h3>
 <ul>
   <li>second beta version, released at the same time as libxml2-2.3.1</li>
-  <li>getting close to feature completion, lot of bug fixes, some in the HTML
-    and XPath support of libxml</li>
-  <li>start becoming usable for real work. This version can now regenerate
-    the XML 2e HTML from the original XML sources and the associated
-    stylesheets (in <a
-    href="http://www.w3.org/TR/REC-xml#b4d250b6c21">section I of the XML
-    REC</a>)</li>
-  <li>Still misses extension element/function/prefixes support. Support of
-    key() and document() is not complete</li>
+  <li>getting close to feature completion, lot of bug fixes, some in the
+    HTMLand XPath support of libxml</li>
+  <li>start becoming usable for real work. This version can now regeneratethe
+    XML 2e HTML from the original XML sources and the associatedstylesheets
+    (in <a href="http://www.w3.org/TR/REC-xml#b4d250b6c21">section I of the
+    XMLREC</a>)</li>
+  <li>Still misses extension element/function/prefixes support. Support
+    ofkey() and document() is not complete</li>
 </ul>
 
 <h3>0.1.0: Feb 8 2001</h3>
@@ -1053,19 +1062,19 @@ to the <a href="http://cvs.gnome.org/viewcvs/libxslt/">CVS</a> code base.</p>
 <h3>0.0.1: Jan 25 2001</h3>
 <ul>
   <li>first alpha version released at the same time as libxml2-2.2.12</li>
-  <li>Framework in place, should work on simple examples, but far from being
-    feature complete</li>
+  <li>Framework in place, should work on simple examples, but far from
+    beingfeature complete</li>
 </ul>
 
 <h2><a name="xsltproc">The xsltproc tool</a></h2>
 
-<p>This program is the simplest way to use libxslt: from the command line. It
-is also used for doing the regression tests of the library.</p>
+<p>This program is the simplest way to use libxslt: from the command line.
+Itis also used for doing the regression tests of the library.</p>
 
-<p>It takes as first argument the path or URL to an XSLT stylesheet, the next
-arguments are filenames or URIs of the inputs to be processed. The output of
-the processing is redirected on the standard output. There is actually a few
-more options available:</p>
+<p>It takes as first argument the path or URL to an XSLT stylesheet, the
+nextarguments are filenames or URIs of the inputs to be processed. The output
+ofthe processing is redirected on the standard output. There is actually a
+fewmore options available:</p>
 <pre>orchis:~ -&gt; xsltproc
 Usage: xsltproc [options] stylesheet file [file ...]
    Options:
@@ -1092,83 +1101,82 @@ orchis:~ -&gt;</pre>
 
 <p><img src="duck.png" align="right" alt="The duck picture"></p>
 
-<p><a href="http://www.oasis-open.org/committees/docbook/">DocBook</a> is an
-XML/SGML vocabulary particularly well suited to books and papers about
-computer hardware and software.</p>
+<p><a href="http://www.oasis-open.org/committees/docbook/">DocBook</a>is
+anXML/SGML vocabulary particularly well suited to books and papers
+aboutcomputer hardware and software.</p>
 
-<p>xsltproc and libxslt are not specifically dependant on DocBook, but since
-a lot of people use xsltproc and libxml2 for DocBook formatting, here are a
-few pointers and informations which may be helpful:</p>
+<p>xsltproc and libxslt are not specifically dependant on DocBook, but sincea
+lot of people use xsltproc and libxml2 for DocBook formatting, here are afew
+pointers and informations which may be helpful:</p>
 <ul>
-  <li>The <a href="http://www.oasis-open.org/committees/docbook/">DocBook
-    homepage at Oasis</a> you should find pointers there on all the lastest
-    versions of the DTDs and XSLT stylesheets</li>
-  <li><a href="http://www.docbook.org/">DocBook: The Definitive Guide</a> is
-    the official reference documentation for DocBook.</li>
+  <li>The <a
+    href="http://www.oasis-open.org/committees/docbook/">DocBookhomepage at
+    Oasis</a>you should find pointers there on all the lastestversions of the
+    DTDs and XSLT stylesheets</li>
+  <li><a href="http://www.docbook.org/">DocBook: The Definitive
+    Guide</a>isthe official reference documentation for DocBook.</li>
   <li><a
-    href="https://sourceforge.net/docman/index.php?group_id=21935">DocBook
-    Open Repository</a> contains a lot of informations about DocBook</li>
-  <li>Bob Stayton provides a <a href="http://www.sagehill.net/">lot of
-    resources</a> and consulting services around DocBook.</li>
-  <li>Here is a <a href="/buildDocBookCatalog">shell script</a> to generate
-    XML Catalogs for DocBook 4.1.2 . If it can write to the /etc/xml/
-    directory, it will set-up /etc/xml/catalog and /etc/xml/docbook based on
-    the resources found on the system. Otherwise it will just create
-    ~/xmlcatalog and ~/dbkxmlcatalog and doing:
+    href="https://sourceforge.net/docman/index.php?group_id=21935">DocBookOpen
+    Repository</a>contains a lot of informations about DocBook</li>
+  <li>Bob Stayton provides a <a href="http://www.sagehill.net/">lot
+    ofresources</a>and consulting services around DocBook.</li>
+  <li>Here is a <a href="/buildDocBookCatalog">shell script</a>to generateXML
+    Catalogs for DocBook 4.1.2 . If it can write to the /etc/xml/directory,
+    it will set-up /etc/xml/catalog and /etc/xml/docbook based onthe
+    resources found on the system. Otherwise it will just create~/xmlcatalog
+    and ~/dbkxmlcatalog and doing:
     <p><code>export XMLCATALOG=$HOME/xmlcatalog</code></p>
-    <p>should allow to process DocBook documentations without requiring
-    network accesses for the DTd or stylesheets</p>
+    <p>should allow to process DocBook documentations without
+    requiringnetwork accesses for the DTd or stylesheets</p>
   </li>
-  <li>I have uploaded <a href="ftp://xmlsoft.org/libxml2/test/dbk412catalog.tar.gz">a
-    small tarball</a> containing XML Catalogs for DocBook 4.1.2 which seems
-    to work fine for me too</li>
+  <li>I have uploaded <a
+    href="ftp://xmlsoft.org/libxml2/test/dbk412catalog.tar.gz">asmall
+    tarball</a>containing XML Catalogs for DocBook 4.1.2 which seemsto work
+    fine for me too</li>
   <li>Informations on installing a <a
-    href="http://ourworld.compuserve.com/homepages/hoenicka_markus/ntsgml.html">Windows
-    DocBook processing setup</a> based on Cygwin (using the binaries from the
-    official Windows port should be possible too)</li>
+    href="http://ourworld.compuserve.com/homepages/hoenicka_markus/ntsgml.html">WindowsDocBook
+    processing setup</a>based on Cygwin (using the binaries from theofficial
+    Windows port should be possible too)</li>
   <li>Alexander Kirillov's page on <a
-    href="http://www.math.sunysb.edu/~kirillov/dbxml/">Using DocBook XML
-    4.1.2</a> (RPM packages)</li>
-  <li>Tim Waugh's <a href="http://cyberelk.net/tim/xmlto/">xmlto front-end
-    conversion script</a></li>
+    href="http://www.math.sunysb.edu/~kirillov/dbxml/">Using DocBook
+    XML4.1.2</a>(RPM packages)</li>
+  <li>Tim Waugh's <a href="http://cyberelk.net/tim/xmlto/">xmlto
+    front-endconversion script</a></li>
   <li>Linux Documentation Project <a
-    href="http://www.linuxdoc.org/HOWTO/mini/DocBook-Install/">
-    DocBook-Install-mini-HOWTO</a></li>
+    href="http://www.linuxdoc.org/HOWTO/mini/DocBook-Install/">DocBook-Install-mini-HOWTO</a></li>
   <li>ScrollKeeper the open documentation cataloging project has a <a
-    href="http://scrollkeeper.sourceforge.net/docbook.shtml">DocBook
-    section</a></li>
+    href="http://scrollkeeper.sourceforge.net/docbook.shtml">DocBooksection</a></li>
   <li>Dan York presentation on <a
-    href="http://www.lodestar2.com/people/dyork/talks/2001/xugo/docbook/index.html">Publishing
-    using DocBook XML</a></li>
+    href="http://www.lodestar2.com/people/dyork/talks/2001/xugo/docbook/index.html">Publishingusing
+    DocBook XML</a></li>
 </ul>
 
-<p>Do not use the --docbook option of xsltproc to process XML DocBook
-documents, this option is only intended to provide some (limited) support of
-the SGML version of DocBook.</p>
+<p>Do not use the --docbook option of xsltproc to process XML
+DocBookdocuments, this option is only intended to provide some (limited)
+support ofthe SGML version of DocBook.</p>
 
-<p>Points which are not DocBook specific but still worth mentionning
-again:</p>
+<p>Points which are not DocBook specific but still worth mentionningagain:</p>
 <ul>
-  <li>if you think DocBook processing time is too slow, make sure you have
-    XML Catalogs pointing to a local installation of the DTD of DocBook.
-    Check the <a href="http://xmlsoft.org/catalog.html">XML Catalog page</a>
-    to understand more on this subject.</li>
+  <li>if you think DocBook processing time is too slow, make sure you haveXML
+    Catalogs pointing to a local installation of the DTD of DocBook.Check the
+    <a href="http://xmlsoft.org/catalog.html">XML Catalog page</a>to
+    understand more on this subject.</li>
   <li>before processing a new document, use the command
     <p><code>xmllint --valid --noout path_to_document</code></p>
-    <p>to make sure that your input is valid DocBook. And fixes the errors
-    before processing further. Note that XSLT processing may work correctly
-    with some forms of validity errors left, but in general it can give
-    troubles on output.</p>
+    <p>to make sure that your input is valid DocBook. And fixes the
+    errorsbefore processing further. Note that XSLT processing may work
+    correctlywith some forms of validity errors left, but in general it can
+    givetroubles on output.</p>
   </li>
 </ul>
 
 <h2><a name="API">The programming API</a></h2>
 
-<p>Okay this section is clearly incomplete. But integrating libxslt into your
-application should be relatively easy. First check the few steps described
-below, then for more detailed informations, look at the<a
-href="html/libxslt-lib.html"> generated pages</a> for the API and the source
-of libxslt/xsltproc.c  and the  <a
+<p>Okay this section is clearly incomplete. But integrating libxslt into
+yourapplication should be relatively easy. First check the few steps
+describedbelow, then for more detailed informations, look at the<a
+href="html/libxslt-lib.html">generated pages</a>for the API and the sourceof
+libxslt/xsltproc.c  and the  <a
 href="tutorial/libxslttutorial.html">tutorial</a>.</p>
 
 <p>Basically doing an XSLT transformation can be done in a few steps:</p>
@@ -1180,101 +1188,100 @@ href="tutorial/libxslttutorial.html">tutorial</a>.</p>
   <li>parse the stylesheet with xsltParseStylesheetFile()</li>
   <li>parse the document with xmlParseFile()</li>
   <li>apply the stylesheet using xsltApplyStylesheet()</li>
-  <li>save the result using xsltSaveResultToFile() if needed set
-    xmlIndentTreeOutput to 1</li>
+  <li>save the result using xsltSaveResultToFile() if needed
+    setxmlIndentTreeOutput to 1</li>
 </ol>
 
-<p>Steps 2,3, and 5 will probably need to be changed depending on you
-processing needs and environment for example if reading/saving from/to
-memory, or if you want to apply XInclude processing to the stylesheet or
-input documents.</p>
+<p>Steps 2,3, and 5 will probably need to be changed depending on
+youprocessing needs and environment for example if reading/saving
+from/tomemory, or if you want to apply XInclude processing to the stylesheet
+orinput documents.</p>
 
 <h2><a name="Python">Python and bindings</a></h2>
 
-<p>There is a number of language bindings and wrappers available for libxml2,
-the list below is not exhaustive. Please contact the <a
-href="http://mail.gnome.org/mailman/listinfo/xml-bindings">xml-bindings@gnome.org</a>
-(<a href="http://mail.gnome.org/archives/xml-bindings/">archives</a>) in
-order to get updates to this list or to discuss the specific topic of libxml2
-or libxslt wrappers or bindings:</p>
+<p>There is a number of language bindings and wrappers available for
+libxml2,the list below is not exhaustive. Please contact the <a
+href="http://mail.gnome.org/mailman/listinfo/xml-bindings">xml-bindings@gnome.org</a>(<a
+href="http://mail.gnome.org/archives/xml-bindings/">archives</a>) inorder to
+get updates to this list or to discuss the specific topic of libxml2or
+libxslt wrappers or bindings:</p>
 <ul>
   <li><a
-    href="http://mail.gnome.org/archives/xml/2001-March/msg00014.html">Matt
-    Sergeant</a> developped <a href="http://axkit.org/download/">XML::LibXML
-    and XML::LibXSLT</a>, Perl wrappers for libxml2/libxslt as part of the <a
+    href="http://mail.gnome.org/archives/xml/2001-March/msg00014.html">MattSergeant</a>developped
+    <a href="http://axkit.org/download/">XML::LibXMLand XML::LibXSLT</a>,
+    Perl wrappers for libxml2/libxslt as part of the <a
     href="http://axkit.com/">AxKit XML application server</a></li>
-  <li><a href="mailto:dkuhlman@cutter.rexx.com">Dave Kuhlman</a> provides and
-    earlier version of the libxml/libxslt <a
+  <li><a href="mailto:dkuhlman@cutter.rexx.com">Dave Kuhlman</a>provides
+    andearlier version of the libxml/libxslt <a
     href="http://www.rexx.com/~dkuhlman">wrappers for Python</a></li>
   <li>Petr Kozelka provides <a
-    href="http://sourceforge.net/projects/libxml2-pas">Pascal units to glue
-    libxml2</a> with Kylix, Delphi and other Pascal compilers</li>
+    href="http://sourceforge.net/projects/libxml2-pas">Pascal units to
+    gluelibxml2</a>with Kylix, Delphi and other Pascal compilers</li>
   <li>Wai-Sun "Squidster" Chia provides <a
-    href="http://www.rubycolor.org/arc/redist/">bindings for Ruby</a>  and
-    libxml2 bindings are also available in Ruby through the <a
-    href="http://libgdome-ruby.berlios.de/">libgdome-ruby</a> module
-    maintained by Tobias Peters.</li>
+    href="http://www.rubycolor.org/arc/redist/">bindings for
+    Ruby</a>andlibxml2 bindings are also available in Ruby through the <a
+    href="http://libgdome-ruby.berlios.de/">libgdome-ruby</a>modulemaintained
+    by Tobias Peters.</li>
   <li>Steve Ball and contributors maintains <a
-    href="http://tclxml.sourceforge.net/">libxml2 and libxslt bindings for
-    Tcl</a></li>
-  <li><a href="mailto:xmlwrapp@pmade.org">Peter Jones</a> maintains C++
-    bindings for libxslt within <a
+    href="http://tclxml.sourceforge.net/">libxml2 and libxslt bindings
+    forTcl</a></li>
+  <li><a href="mailto:xmlwrapp@pmade.org">Peter Jones</a>maintains
+    C++bindings for libxslt within <a
     href="http://pmade.org/pjones/software/xmlwrapp/">xmlwrapp</a></li>
-  <li><a href="phillim2@comcast.net">Mike Phillips</a> provides a module
-    using <a href="http://siasl.dyndns.org/projects/projects.html">libxslt
-    for PHP</a>.</li>
-  <li><a href="http://savannah.gnu.org/projects/classpathx/">LibxmlJ</a> is
-    an effort to create a 100% JAXP-compatible Java wrapper for libxml2 and
-    libxslt as part of GNU ClasspathX project.</li>
-  <li>Patrick McPhee provides Rexx bindings fof libxml2 and libxslt, look for
-    <a href="http://www.interlog.com/~ptjm/software.html">RexxXML</a>.</li>
+  <li><a href="phillim2@comcast.net">Mike Phillips</a>provides a moduleusing
+    <a href="http://siasl.dyndns.org/projects/projects.html">libxsltfor
+    PHP</a>.</li>
+  <li><a href="http://savannah.gnu.org/projects/classpathx/">LibxmlJ</a>isan
+    effort to create a 100% JAXP-compatible Java wrapper for libxml2
+    andlibxslt as part of GNU ClasspathX project.</li>
+  <li>Patrick McPhee provides Rexx bindings fof libxml2 and libxslt, look
+    for<a href="http://www.interlog.com/~ptjm/software.html">RexxXML</a>.</li>
   <li><a
-    href="http://www.satimage.fr/software/en/xml_suite.html">Satimage</a>
-    provides <a
-    href="http://www.satimage.fr/software/en/downloads_osaxen.html">XMLLib
-    osax</a>. This is an osax for Mac OS X with a set of commands to
-    implement in AppleScript the XML DOM, XPATH and XSLT.</li>
+    href="http://www.satimage.fr/software/en/xml_suite.html">Satimage</a>provides
+    <a
+    href="http://www.satimage.fr/software/en/downloads_osaxen.html">XMLLibosax</a>.
+    This is an osax for Mac OS X with a set of commands toimplement in
+    AppleScript the XML DOM, XPATH and XSLT.</li>
 </ul>
 
 <p>The libxslt Python module depends on the <a
-href="http://xmlsoft.org/python.html">libxml2 Python</a> module.</p>
+href="http://xmlsoft.org/python.html">libxml2 Python</a>module.</p>
 
-<p>The distribution includes a set of Python bindings, which are garanteed to
-be maintained as part of the library in the future, though the Python
-interface have not yet reached the completeness of the C API.</p>
+<p>The distribution includes a set of Python bindings, which are garanteed
+tobe maintained as part of the library in the future, though the
+Pythoninterface have not yet reached the completeness of the C API.</p>
 
-<p><a href="mailto:stephane.bidoul@softwareag.com">Stéphane Bidoul</a>
-maintains <a href="http://users.skynet.be/sbi/libxml-python/">a Windows port
-of the Python bindings</a>.</p>
+<p><a href="mailto:stephane.bidoul@softwareag.com">Stéphane
+Bidoul</a>maintains <a href="http://users.skynet.be/sbi/libxml-python/">a
+Windows portof the Python bindings</a>.</p>
 
-<p>Note to people interested in building bindings, the API is formalized as
-<a href="libxslt-api.xml">an XML API description file</a> which allows to
-automate a large part of the Python bindings, this includes function
-descriptions, enums, structures, typedefs, etc... The Python script used to
-build the bindings is python/generator.py in the source distribution.</p>
+<p>Note to people interested in building bindings, the API is formalized as<a
+href="libxslt-api.xml">an XML API description file</a>which allows toautomate
+a large part of the Python bindings, this includes functiondescriptions,
+enums, structures, typedefs, etc... The Python script used tobuild the
+bindings is python/generator.py in the source distribution.</p>
 
 <p>To install the Python bindings there are 2 options:</p>
 <ul>
   <li>If you use an RPM based distribution, simply install the <a
-    href="http://rpmfind.net/linux/rpm2html/search.php?query=libxml2-python">libxml2-python
-    RPM</a> and the <a
-    href="http://rpmfind.net/linux/rpm2html/search.php?query=libxslt-python">libxslt-python
-    RPM</a>.</li>
-  <li>Otherwise use the <a href="ftp://xmlsoft.org/libxml2/python/">libxml2-python
-    module distribution</a> corresponding to your installed version of
-    libxml2 and libxslt. Note that to install it you will need both libxml2
-    and libxslt installed and run "python setup.py build install" in the
-    module tree.</li>
+    href="http://rpmfind.net/linux/rpm2html/search.php?query=libxml2-python">libxml2-pythonRPM</a>and
+    the <a
+    href="http://rpmfind.net/linux/rpm2html/search.php?query=libxslt-python">libxslt-pythonRPM</a>.</li>
+  <li>Otherwise use the <a
+    href="ftp://xmlsoft.org/libxml2/python/">libxml2-pythonmodule
+    distribution</a>corresponding to your installed version oflibxml2 and
+    libxslt. Note that to install it you will need both libxml2and libxslt
+    installed and run "python setup.py build install" in themodule tree.</li>
 </ul>
 
-<p>The distribution includes a set of examples and regression tests for the
-python bindings in the <code>python/tests</code> directory. Here are some
-excepts from those tests:</p>
+<p>The distribution includes a set of examples and regression tests for
+thepython bindings in the <code>python/tests</code>directory. Here are
+someexcepts from those tests:</p>
 
 <h3>basic.py:</h3>
 
-<p>This is a basic test of XSLT interfaces: loading a stylesheet and a
-document, transforming the document and saving the result.</p>
+<p>This is a basic test of XSLT interfaces: loading a stylesheet and
+adocument, transforming the document and saving the result.</p>
 <pre>import libxml2
 import libxslt
 
@@ -1287,36 +1294,36 @@ style.freeStylesheet()
 doc.freeDoc()
 result.freeDoc()</pre>
 
-<p>The Python module is called libxslt, you will also need the libxml2 module
-for the operations on XML trees. Let's have a look at the objects manipulated
-in that example and how is the processing done:</p>
-<ul>
-  <li><code>styledoc</code> : is a libxml2 document tree. It is obtained by
-    parsing the XML file "test.xsl" containing the stylesheet.</li>
-  <li><code>style</code> : this is a precompiled stylesheet ready to be used
-    by the following transformations (note the plural form, multiple
-    transformations can resuse the same stylesheet).</li>
-  <li><code>doc</code> : this is the document to apply the transformation to.
-    In this case it is simply generated by parsing it from a file but any
-    other processing is possible as long as one get a libxml2 Doc. Note that
-    HTML tree are suitable for XSLT processing in libxslt. This is actually
-    how this page is generated !</li>
-  <li><code>result</code> : this is a document generated by applying the
-    stylesheet to the document. Note that some of the stylesheet informations
-    may be related to the serialization of that document and as in this
-    example a specific saveResultToFilename() method of the stylesheet should
-    be used to save it to a file (in that case to "foo").</li>
-</ul>
-
-<p>Also note the need to explicitely deallocate documents with freeDoc()
-except for the stylesheet document which is freed when its compiled form is
-garbage collected.</p>
+<p>The Python module is called libxslt, you will also need the libxml2
+modulefor the operations on XML trees. Let's have a look at the objects
+manipulatedin that example and how is the processing done:</p>
+<ul>
+  <li><code>styledoc</code>: is a libxml2 document tree. It is obtained
+    byparsing the XML file "test.xsl" containing the stylesheet.</li>
+  <li><code>style</code>: this is a precompiled stylesheet ready to be usedby
+    the following transformations (note the plural form,
+    multipletransformations can resuse the same stylesheet).</li>
+  <li><code>doc</code>: this is the document to apply the transformation
+    to.In this case it is simply generated by parsing it from a file but
+    anyother processing is possible as long as one get a libxml2 Doc. Note
+    thatHTML tree are suitable for XSLT processing in libxslt. This is
+    actuallyhow this page is generated !</li>
+  <li><code>result</code>: this is a document generated by applying
+    thestylesheet to the document. Note that some of the stylesheet
+    informationsmay be related to the serialization of that document and as
+    in thisexample a specific saveResultToFilename() method of the stylesheet
+    shouldbe used to save it to a file (in that case to "foo").</li>
+</ul>
+
+<p>Also note the need to explicitely deallocate documents with
+freeDoc()except for the stylesheet document which is freed when its compiled
+form isgarbage collected.</p>
 
 <h3>extfunc.py:</h3>
 
-<p>This one is a far more complex test. It shows how to modify the behaviour
-of an XSLT transformation by passing parameters and how to extend the XSLT
-engine with functions defined in python:</p>
+<p>This one is a far more complex test. It shows how to modify the
+behaviourof an XSLT transformation by passing parameters and how to extend
+the XSLTengine with functions defined in python:</p>
 <pre>import libxml2
 import libxslt
 import string
@@ -1340,22 +1347,22 @@ def f(ctx, str):
 
 libxslt.registerExtModuleFunction("foo", "http://example.com/foo", f)</pre>
 
-<p>This code defines and register an extension function. Note that the
-function can be bound to any name (foo) and how the binding is also
-associated to a namespace name "http://example.com/foo". From an XSLT point
-of view the function just returns an upper case version of the string passed
-as a parameter. But the first part of the function also read some contextual
-information from the current XSLT processing environement, in that case it
-looks for the current insertion node in the resulting output (either the
-resulting document or the Result Value Tree being generated), and saves it to
-a global variable for checking that the access actually worked.</p>
-
-<p>For more informations on the xpathParserContext and transformContext
-objects check the <a href="internals.html">libray internals description</a>.
-The pctxt is actually an object from a class derived from the
-libxml2.xpathParserContext() with just a couple more properties including the
-possibility to look up the XSLT transformation context from the XPath
-context.</p>
+<p>This code defines and register an extension function. Note that
+thefunction can be bound to any name (foo) and how the binding is
+alsoassociated to a namespace name "http://example.com/foo". From an XSLT
+pointof view the function just returns an upper case version of the string
+passedas a parameter. But the first part of the function also read some
+contextualinformation from the current XSLT processing environement, in that
+case itlooks for the current insertion node in the resulting output (either
+theresulting document or the Result Value Tree being generated), and saves it
+toa global variable for checking that the access actually worked.</p>
+
+<p>For more informations on the xpathParserContext and
+transformContextobjects check the <a href="internals.html">libray internals
+description</a>.The pctxt is actually an object from a class derived from
+thelibxml2.xpathParserContext() with just a couple more properties including
+thepossibility to look up the XSLT transformation context from the
+XPathcontext.</p>
 <pre>styledoc = libxml2.parseDoc("""
 &lt;xsl:stylesheet version='1.0'
   xmlns:xsl='http://www.w3.org/1999/XSL/Transform'
@@ -1369,13 +1376,13 @@ context.</p>
 &lt;/xsl:stylesheet&gt;
 """)</pre>
 
-<p>Here is a simple example of how to read an XML document from a python
-string with libxml2. Note how this stylesheet:</p>
+<p>Here is a simple example of how to read an XML document from a
+pythonstring with libxml2. Note how this stylesheet:</p>
 <ul>
   <li>Uses a global parameter <code>bar</code></li>
   <li>Reference the extension function f</li>
-  <li>how the Namespace name "http://example.com/foo" has to be bound to a
-    prefix</li>
+  <li>how the Namespace name "http://example.com/foo" has to be bound to
+    aprefix</li>
   <li>how that prefix is excluded from the output</li>
   <li>how the function is called from the select</li>
 </ul>
@@ -1385,10 +1392,10 @@ result = style.applyStylesheet(doc, { "bar": "'success'" })
 style.freeStylesheet()
 doc.freeDoc()</pre>
 
-<p>that part is identical, to the basic example except that the
-transformation is passed a dictionnary of parameters. Note that the string
-passed "success" had to be quoted, otherwise it is interpreted as an XPath
-query for the childs of root named "success".</p>
+<p>that part is identical, to the basic example except that thetransformation
+is passed a dictionnary of parameters. Note that the stringpassed "success"
+had to be quoted, otherwise it is interpreted as an XPathquery for the childs
+of root named "success".</p>
 <pre>root = result.children
 if root.name != "article":
     print "Unexpected root node name"
@@ -1402,22 +1409,24 @@ if nodeName != 'article':
 
 result.freeDoc()</pre>
 
-<p>That part just verifies that the transformation worked, that the parameter
-got properly passed to the engine, that the function f() got called and that
-it properly accessed the context to find the name of the insertion node.</p>
+<p>That part just verifies that the transformation worked, that the
+parametergot properly passed to the engine, that the function f() got called
+and thatit properly accessed the context to find the name of the insertion
+node.</p>
 
 <h3>pyxsltproc.py:</h3>
 
-<p>this module is a bit too long to be described there but it is basically a
-rewrite of the xsltproc command line interface of libxslt in Python. It
-provides nearly all the functionalities of xsltproc and can be used as a base
-module to write Python customized XSLT processors. One of the thing to notice
-are:</p>
+<p>this module is a bit too long to be described there but it is basically
+arewrite of the xsltproc command line interface of libxslt in Python.
+Itprovides nearly all the functionalities of xsltproc and can be used as a
+basemodule to write Python customized XSLT processors. One of the thing to
+noticeare:</p>
 <pre>libxml2.lineNumbersDefault(1)
 libxml2.substituteEntitiesDefault(1)</pre>
 
-<p>those two calls in the main() function are needed to force the libxml2
-processor to generate DOM trees compliant with the XPath data model.</p>
+<p>those two calls in the main() function are needed to force the
+libxml2processor to generate DOM trees compliant with the XPath data
+model.</p>
 
 <h2><a name="Internals">Library internals</a></h2>
 
@@ -1433,8 +1442,7 @@ processor to generate DOM trees compliant with the XPath data model.</p>
   <li><a href="internals.html#processing">The processing itself</a></li>
   <li><a href="internals.html#XPath">XPath expressions compilation</a></li>
   <li><a href="internals.html#XPath1">XPath interpretation</a></li>
-  <li><a href="internals.html#Descriptio">Description of XPath
-  Objects</a></li>
+  <li><a href="internals.html#Descriptio">Description of XPathObjects</a></li>
   <li><a href="internals.html#XPath3">XPath functions</a></li>
   <li><a href="internals.html#stack">The variables stack frame</a></li>
   <li><a href="internals.html#Extension">Extension support</a></li>
@@ -1446,246 +1454,248 @@ processor to generate DOM trees compliant with the XPath data model.</p>
 
 <p>This document describes the processing of <a
 href="http://xmlsoft.org/XSLT/">libxslt</a>, the <a
-href="http://www.w3.org/TR/xslt">XSLT</a> C library developed for the <a
-href="http://www.gnome.org/">Gnome</a> project.</p>
+href="http://www.w3.org/TR/xslt">XSLT</a>C library developed for the <a
+href="http://www.gnome.org/">Gnome</a>project.</p>
 
-<p>Note: this documentation is by definition incomplete and I am not good at
-spelling, grammar, so patches and suggestions are <a
+<p>Note: this documentation is by definition incomplete and I am not good
+atspelling, grammar, so patches and suggestions are <a
 href="mailto:veillard@redhat.com">really welcome</a>.</p>
 
 <h3><a name="Basics1">Basics</a></h3>
 
-<p>XSLT is a transformation language. It takes an input document and a
-stylesheet document and generates an output document:</p>
+<p>XSLT is a transformation language. It takes an input document and
+astylesheet document and generates an output document:</p>
 
 <p align="center"><img src="processing.gif"
 alt="the XSLT processing model"></p>
 
 <p>Libxslt is written in C. It relies on <a
-href="http://www.xmlsoft.org/">libxml</a>, the XML C library for Gnome, for
-the following operations:</p>
+href="http://www.xmlsoft.org/">libxml</a>, the XML C library for Gnome,
+forthe following operations:</p>
 <ul>
   <li>parsing files</li>
-  <li>building the in-memory DOM structure associated with the documents
-    handled</li>
+  <li>building the in-memory DOM structure associated with the
+    documentshandled</li>
   <li>the XPath implementation</li>
-  <li>serializing back the result document to XML and HTML. (Text is handled
-    directly.)</li>
+  <li>serializing back the result document to XML and HTML. (Text is
+    handleddirectly.)</li>
 </ul>
 
 <h3><a name="Keep1">Keep it simple stupid</a></h3>
 
-<p>Libxslt is not very specialized. It is built under the assumption that all
-nodes from the source and output document can fit in the virtual memory of
-the system. There is a big trade-off there. It is fine for reasonably sized
-documents but may not be suitable for large sets of data. The gain is that it
-can be used in a relatively versatile way. The input or output may never be
-serialized, but the size of documents it can handle are limited by the size
-of the memory available.</p>
-
-<p>More specialized memory handling approaches are possible, like building
-the input tree from a serialization progressively as it is consumed,
-factoring repetitive patterns, or even on-the-fly generation of the output as
-the input is parsed but it is possible only for a limited subset of the
-stylesheets. In general the implementation of libxslt follows the following
-pattern:</p>
+<p>Libxslt is not very specialized. It is built under the assumption that
+allnodes from the source and output document can fit in the virtual memory
+ofthe system. There is a big trade-off there. It is fine for reasonably
+sizeddocuments but may not be suitable for large sets of data. The gain is
+that itcan be used in a relatively versatile way. The input or output may
+never beserialized, but the size of documents it can handle are limited by
+the sizeof the memory available.</p>
+
+<p>More specialized memory handling approaches are possible, like buildingthe
+input tree from a serialization progressively as it is consumed,factoring
+repetitive patterns, or even on-the-fly generation of the output asthe input
+is parsed but it is possible only for a limited subset of thestylesheets. In
+general the implementation of libxslt follows the followingpattern:</p>
 <ul>
   <li>KISS (keep it simple stupid)</li>
-  <li>when there is a clear bottleneck optimize on top of this simple
-    framework and refine only as much as is needed to reach the expected
-    result</li>
+  <li>when there is a clear bottleneck optimize on top of this
+    simpleframework and refine only as much as is needed to reach the
+    expectedresult</li>
 </ul>
 
-<p>The result is not that bad, clearly one can do a better job but more
-specialized too. Most optimization like building the tree on-demand would
-need serious changes to the libxml XPath framework. An easy step would be to
-serialize the output directly (or call a set of SAX-like output handler to
-keep this a flexible interface) and hence avoid the memory consumption of the
-result.</p>
+<p>The result is not that bad, clearly one can do a better job but
+morespecialized too. Most optimization like building the tree on-demand
+wouldneed serious changes to the libxml XPath framework. An easy step would
+be toserialize the output directly (or call a set of SAX-like output handler
+tokeep this a flexible interface) and hence avoid the memory consumption of
+theresult.</p>
 
 <h3><a name="libxml">The libxml nodes</a></h3>
 
-<p>DOM-like trees, as used and generated by libxml and libxslt, are
-relatively complex. Most node types follow the given structure except a few
-variations depending on the node type:</p>
+<p>DOM-like trees, as used and generated by libxml and libxslt, arerelatively
+complex. Most node types follow the given structure except a fewvariations
+depending on the node type:</p>
 
 <p align="center"><img src="node.gif" alt="description of a libxml node"></p>
 
-<p>Nodes carry a <strong>name</strong> and the node <strong>type</strong>
-indicates the kind of node it represents, the most common ones are:</p>
+<p>Nodes carry a <strong>name</strong>and the node
+<strong>type</strong>indicates the kind of node it represents, the most
+common ones are:</p>
 <ul>
   <li>document nodes</li>
   <li>element nodes</li>
   <li>text nodes</li>
 </ul>
 
-<p>For the XSLT processing, entity nodes should not be generated (i.e. they
-should be replaced by their content). Most nodes also contains the following
-"navigation" informations:</p>
+<p>For the XSLT processing, entity nodes should not be generated (i.e.
+theyshould be replaced by their content). Most nodes also contains the
+following"navigation" informations:</p>
 <ul>
   <li>the containing <strong>doc</strong>ument</li>
-  <li>the <strong>parent</strong> node</li>
-  <li>the first <strong>children</strong> node</li>
-  <li>the <strong>last</strong> children node</li>
+  <li>the <strong>parent</strong>node</li>
+  <li>the first <strong>children</strong>node</li>
+  <li>the <strong>last</strong>children node</li>
   <li>the <strong>prev</strong>ious sibling</li>
   <li>the following sibling (<strong>next</strong>)</li>
 </ul>
 
-<p>Elements nodes carries the list of attributes in the properties, an
-attribute itself holds the navigation pointers and the children list (the
-attribute value is not represented as a simple string to allow usage of
-entities references).</p>
+<p>Elements nodes carries the list of attributes in the properties,
+anattribute itself holds the navigation pointers and the children list
+(theattribute value is not represented as a simple string to allow usage
+ofentities references).</p>
 
-<p>The <strong>ns</strong> points to the namespace declaration for the
-namespace associated to the node, <strong>nsDef</strong> is the linked list
-of namespace declaration present on element nodes.</p>
+<p>The <strong>ns</strong>points to the namespace declaration for
+thenamespace associated to the node, <strong>nsDef</strong>is the linked
+listof namespace declaration present on element nodes.</p>
 
-<p>Most nodes also carry an <strong>_private</strong> pointer which can be
-used by the application to hold specific data on this node.</p>
+<p>Most nodes also carry an <strong>_private</strong>pointer which can beused
+by the application to hold specific data on this node.</p>
 
 <h3><a name="XSLT">The XSLT processing steps</a></h3>
 
-<p>There are a few steps which are clearly decoupled at the interface
-level:</p>
+<p>There are a few steps which are clearly decoupled at the
+interfacelevel:</p>
 <ol>
   <li>parse the stylesheet and generate a DOM tree</li>
-  <li>take the stylesheet tree and build a compiled version of it (the
-    compilation phase)</li>
+  <li>take the stylesheet tree and build a compiled version of it
+    (thecompilation phase)</li>
   <li>take the input and generate a DOM tree</li>
-  <li>process the stylesheet against the input tree and generate an output
-    tree</li>
+  <li>process the stylesheet against the input tree and generate an
+  outputtree</li>
   <li>serialize the output tree</li>
 </ol>
 
 <p>A few things should be noted here:</p>
 <ul>
   <li>the steps 1/ 3/ and 5/ are optional</li>
-  <li>the stylesheet obtained at 2/ can be reused by multiple processing 4/
-    (and this should also work in threaded programs)</li>
-  <li>the tree provided in 2/ should never be freed using xmlFreeDoc, but by
-    freeing the stylesheet.</li>
-  <li>the input tree 4/ is not modified except the _private field which may
-    be used for labelling keys if used by the stylesheet</li>
+  <li>the stylesheet obtained at 2/ can be reused by multiple processing
+    4/(and this should also work in threaded programs)</li>
+  <li>the tree provided in 2/ should never be freed using xmlFreeDoc, but
+    byfreeing the stylesheet.</li>
+  <li>the input tree 4/ is not modified except the _private field which maybe
+    used for labelling keys if used by the stylesheet</li>
 </ul>
 
 <h3><a name="XSLT1">The XSLT stylesheet compilation</a></h3>
 
-<p>This is the second step described. It takes a stylesheet tree, and
-"compiles" it. This associates to each node a structure stored in the
-_private field and containing information computed in the stylesheet:</p>
+<p>This is the second step described. It takes a stylesheet tree,
+and"compiles" it. This associates to each node a structure stored in
+the_private field and containing information computed in the stylesheet:</p>
 
 <p align="center"><img src="stylesheet.gif"
 alt="a compiled XSLT stylesheet"></p>
 
-<p>One xsltStylesheet structure is generated per document parsed for the
-stylesheet. XSLT documents allow includes and imports of other documents,
-imports are stored in the <strong>imports</strong> list (hence keeping the
-tree hierarchy of includes which is very important for a proper XSLT
-processing model) and includes are stored in the <strong>doclist</strong>
-list. An imported stylesheet has a parent link to allow browsing of the
-tree.</p>
-
-<p>The DOM tree associated to the document is stored in <strong>doc</strong>.
-It is preprocessed to remove ignorable empty nodes and all the nodes in the
-XSLT namespace are subject to precomputing. This usually consist of
-extracting all the context information from the context tree (attributes,
-namespaces, XPath expressions), and storing them in an xsltStylePreComp
-structure associated to the <strong>_private</strong> field of the node.</p>
-
-<p>A couple of notable exceptions to this are XSLT template nodes (more on
-this later) and attribute value templates. If they are actually templates,
-the value cannot be computed at compilation time. (Some preprocessing could
-be done like isolation and preparsing of the XPath subexpressions but it's
-not done, yet.)</p>
-
-<p>The xsltStylePreComp structure also allows storing of the precompiled form
-of an XPath expression that can be associated to an XSLT element (more on
-this later).</p>
+<p>One xsltStylesheet structure is generated per document parsed for
+thestylesheet. XSLT documents allow includes and imports of other
+documents,imports are stored in the <strong>imports</strong>list (hence
+keeping thetree hierarchy of includes which is very important for a proper
+XSLTprocessing model) and includes are stored in the
+<strong>doclist</strong>list. An imported stylesheet has a parent link to
+allow browsing of thetree.</p>
+
+<p>The DOM tree associated to the document is stored in
+<strong>doc</strong>.It is preprocessed to remove ignorable empty nodes and
+all the nodes in theXSLT namespace are subject to precomputing. This usually
+consist ofextracting all the context information from the context tree
+(attributes,namespaces, XPath expressions), and storing them in an
+xsltStylePreCompstructure associated to the <strong>_private</strong>field of
+the node.</p>
+
+<p>A couple of notable exceptions to this are XSLT template nodes (more
+onthis later) and attribute value templates. If they are actually
+templates,the value cannot be computed at compilation time. (Some
+preprocessing couldbe done like isolation and preparsing of the XPath
+subexpressions but it'snot done, yet.)</p>
+
+<p>The xsltStylePreComp structure also allows storing of the precompiled
+formof an XPath expression that can be associated to an XSLT element (more
+onthis later).</p>
 
 <h3><a name="XSLT2">The XSLT template compilation</a></h3>
 
-<p>A proper handling of templates lookup is one of the keys of fast XSLT
-processing. (Given a node in the source document this is the process of
-finding which templates should be applied to this node.) Libxslt follows the
-hint suggested in the <a href="http://www.w3.org/TR/xslt#patterns">5.2
-Patterns</a> section of the XSLT Recommendation, i.e. it doesn't evaluate it
-as an XPath expression but tokenizes it and compiles it as a set of rules to
-be evaluated on a candidate node. There usually is an indication of the node
-name in the last step of this evaluation and this is used as a key check for
-the match. As a result libxslt builds a relatively more complex set of
-structures for the templates:</p>
+<p>A proper handling of templates lookup is one of the keys of fast
+XSLTprocessing. (Given a node in the source document this is the process
+offinding which templates should be applied to this node.) Libxslt follows
+thehint suggested in the <a
+href="http://www.w3.org/TR/xslt#patterns">5.2Patterns</a>section of the XSLT
+Recommendation, i.e. it doesn't evaluate itas an XPath expression but
+tokenizes it and compiles it as a set of rules tobe evaluated on a candidate
+node. There usually is an indication of the nodename in the last step of this
+evaluation and this is used as a key check forthe match. As a result libxslt
+builds a relatively more complex set ofstructures for the templates:</p>
 
 <p align="center"><img src="templates.gif"
 alt="The templates related structure"></p>
 
-<p>Let's describe a bit more closely what is built. First the xsltStylesheet
-structure holds a pointer to the template hash table. All the XSLT patterns
-compiled in this stylesheet are indexed by the value of the the target
-element (or attribute, pi ...) name, so when a element or an attribute "foo"
-needs to be processed the lookup is done using the name as a key.</p>
-
-<p>Each of the patterns is compiled into an xsltCompMatch structure. It holds
-the set of rules based on the tokenization of the pattern stored in reverse
-order (matching is easier this way). It also holds some information about the
-previous matches used to speed up the process when one iterates over a set of
-siblings. (This optimization may be defeated by trashing when running
-threaded computation, it's unclear that this is a big deal in practice.)
-Predicate expressions are not compiled at this stage, they may be at run-time
-if needed, but in this case they are compiled as full XPath expressions (the
-use of some fixed predicate can probably be optimized, they are not yet).</p>
-
-<p>The xsltCompMatch are then stored in the hash table, the clash list is
-itself sorted by priority of the template to implement "naturally" the XSLT
-priority rules.</p>
-
-<p>Associated to the compiled pattern is the xsltTemplate itself containing
-the information required for the processing of the pattern including, of
-course, a pointer to the list of elements used for building the pattern
-result.</p>
-
-<p>Last but not least a number of patterns do not fit in the hash table
-because they are not associated to a name, this is the case for patterns
-applying to the root, any element, any attributes, text nodes, pi nodes, keys
-etc. Those are stored independently in the stylesheet structure as separate
-linked lists of xsltCompMatch.</p>
+<p>Let's describe a bit more closely what is built. First the
+xsltStylesheetstructure holds a pointer to the template hash table. All the
+XSLT patternscompiled in this stylesheet are indexed by the value of the the
+targetelement (or attribute, pi ...) name, so when a element or an attribute
+"foo"needs to be processed the lookup is done using the name as a key.</p>
+
+<p>Each of the patterns is compiled into an xsltCompMatch structure. It
+holdsthe set of rules based on the tokenization of the pattern stored in
+reverseorder (matching is easier this way). It also holds some information
+about theprevious matches used to speed up the process when one iterates over
+a set ofsiblings. (This optimization may be defeated by trashing when
+runningthreaded computation, it's unclear that this is a big deal in
+practice.)Predicate expressions are not compiled at this stage, they may be
+at run-timeif needed, but in this case they are compiled as full XPath
+expressions (theuse of some fixed predicate can probably be optimized, they
+are not yet).</p>
+
+<p>The xsltCompMatch are then stored in the hash table, the clash list
+isitself sorted by priority of the template to implement "naturally" the
+XSLTpriority rules.</p>
+
+<p>Associated to the compiled pattern is the xsltTemplate itself
+containingthe information required for the processing of the pattern
+including, ofcourse, a pointer to the list of elements used for building the
+patternresult.</p>
+
+<p>Last but not least a number of patterns do not fit in the hash
+tablebecause they are not associated to a name, this is the case for
+patternsapplying to the root, any element, any attributes, text nodes, pi
+nodes, keysetc. Those are stored independently in the stylesheet structure as
+separatelinked lists of xsltCompMatch.</p>
 
 <h3><a name="processing">The processing itself</a></h3>
 
-<p>The processing is defined by the XSLT specification (the basis of the
-algorithm is explained in <a
-href="http://www.w3.org/TR/xslt#section-Introduction">the Introduction</a>
-section). Basically it works by taking the root of the input document and
-applying the following algorithm:</p>
+<p>The processing is defined by the XSLT specification (the basis of
+thealgorithm is explained in <a
+href="http://www.w3.org/TR/xslt#section-Introduction">the
+Introduction</a>section). Basically it works by taking the root of the input
+document andapplying the following algorithm:</p>
 <ol>
-  <li>Finding the template applying to it. This is a lookup in the template
-    hash table, walking the hash list until the node satisfies all the steps
-    of the pattern, then checking the appropriate(s) global templates to see
-    if there isn't a higher priority rule to apply</li>
-  <li>If there is no template, apply the default rule (recurse on the
-    children)</li>
+  <li>Finding the template applying to it. This is a lookup in the
+    templatehash table, walking the hash list until the node satisfies all
+    the stepsof the pattern, then checking the appropriate(s) global
+    templates to seeif there isn't a higher priority rule to apply</li>
+  <li>If there is no template, apply the default rule (recurse on
+  thechildren)</li>
   <li>else walk the content list of the selected templates, for each of them:
     <ul>
-      <li>if the node is in the XSLT namespace then the node has a _private
-        field pointing to the preprocessed values, jump to the specific
-      code</li>
-      <li>if the node is in an extension namespace, look up the associated
-        behavior</li>
+      <li>if the node is in the XSLT namespace then the node has a
+        _privatefield pointing to the preprocessed values, jump to the
+        specificcode</li>
+      <li>if the node is in an extension namespace, look up the
+        associatedbehavior</li>
       <li>otherwise copy the node.</li>
     </ul>
-    <p>The closure is usually done through the XSLT
-    <strong>apply-templates</strong> construct recursing by applying the
-    adequate template on the input node children or on the result of an
-    associated XPath selection lookup.</p>
+    <p>The closure is usually done through the
+    XSLT<strong>apply-templates</strong>construct recursing by applying
+    theadequate template on the input node children or on the result of
+    anassociated XPath selection lookup.</p>
   </li>
 </ol>
 
-<p>Note that large parts of the input tree may not be processed by a given
-stylesheet and that on the opposite some may be processed multiple times.
-(This often is the case when a Table of Contents is built).</p>
+<p>Note that large parts of the input tree may not be processed by a
+givenstylesheet and that on the opposite some may be processed multiple
+times.(This often is the case when a Table of Contents is built).</p>
 
-<p>The module <code>transform.c</code> is the one implementing most of this
-logic. <strong>xsltApplyStylesheet()</strong> is the entry point, it
-allocates an xsltTransformContext containing the following:</p>
+<p>The module <code>transform.c</code>is the one implementing most of
+thislogic. <strong>xsltApplyStylesheet()</strong>is the entry point,
+itallocates an xsltTransformContext containing the following:</p>
 <ul>
   <li>a pointer to the stylesheet being processed</li>
   <li>a stack of templates</li>
@@ -1699,24 +1709,24 @@ allocates an xsltTransformContext containing the following:</p>
   <li>a couple of hash tables for extension elements and functions</li>
 </ul>
 
-<p>Then a new document gets allocated (HTML or XML depending on the type of
-output), the user parameters and global variables and parameters are
-evaluated. Then <strong>xsltProcessOneNode()</strong> which implements the
-1-2-3 algorithm is called on the root element of the input. Step 1/ is
-implemented by calling <strong>xsltGetTemplate()</strong>, step 2/ is
-implemented by <strong>xsltDefaultProcessOneNode()</strong> and step 3/ is
-implemented by <strong>xsltApplyOneTemplate()</strong>.</p>
+<p>Then a new document gets allocated (HTML or XML depending on the type
+ofoutput), the user parameters and global variables and parameters
+areevaluated. Then <strong>xsltProcessOneNode()</strong>which implements
+the1-2-3 algorithm is called on the root element of the input. Step 1/
+isimplemented by calling <strong>xsltGetTemplate()</strong>, step 2/
+isimplemented by <strong>xsltDefaultProcessOneNode()</strong>and step 3/
+isimplemented by <strong>xsltApplyOneTemplate()</strong>.</p>
 
 <h3><a name="XPath">XPath expression compilation</a></h3>
 
-<p>The XPath support is actually implemented in the libxml module (where it
-is reused by the XPointer implementation). XPath is a relatively classic
-expression language. The only uncommon feature is that it is working on XML
-trees and hence has specific syntax and types to handle them.</p>
+<p>The XPath support is actually implemented in the libxml module (where itis
+reused by the XPointer implementation). XPath is a relatively
+classicexpression language. The only uncommon feature is that it is working
+on XMLtrees and hence has specific syntax and types to handle them.</p>
 
-<p>XPath expressions are compiled using <strong>xmlXPathCompile()</strong>.
-It will take an expression string in input and generate a structure
-containing the parsed expression tree, for example the expression:</p>
+<p>XPath expressions are compiled using <strong>xmlXPathCompile()</strong>.It
+will take an expression string in input and generate a structurecontaining
+the parsed expression tree, for example the expression:</p>
 <pre>/doc/chapter[title='Introduction']</pre>
 
 <p>will be compiled as</p>
@@ -1734,180 +1744,179 @@ containing the parsed expression tree, for example the expression:</p>
               COLLECT  'child' 'name' 'node' title
                 NODE</pre>
 
-<p>This can be tested using the  <code>testXPath</code>  command (in the
-libxml codebase) using the <code>--tree</code> option.</p>
+<p>This can be tested using the  <code>testXPath</code>command (in thelibxml
+codebase) using the <code>--tree</code>option.</p>
 
-<p>Again, the KISS approach is used. No optimization is done. This could be
-an interesting thing to add. <a
-href="http://www-106.ibm.com/developerworks/library/x-xslt2/?dwzone=x?open&amp;l=132%2ct=gr%2c+p=saxon">Michael
-Kay describes</a> a lot of possible and interesting optimizations done in
-Saxon which would be possible at this level. I'm unsure they would provide
-much gain since the expressions tends to be relatively simple in general and
-stylesheets are still hand generated. Optimizations at the interpretation
-sounds likely to be more efficient.</p>
+<p>Again, the KISS approach is used. No optimization is done. This could bean
+interesting thing to add. <a
+href="http://www-106.ibm.com/developerworks/library/x-xslt2/?dwzone=x?open&amp;l=132%2ct=gr%2c+p=saxon">MichaelKay
+describes</a>a lot of possible and interesting optimizations done inSaxon
+which would be possible at this level. I'm unsure they would providemuch gain
+since the expressions tends to be relatively simple in general andstylesheets
+are still hand generated. Optimizations at the interpretationsounds likely to
+be more efficient.</p>
 
 <h3><a name="XPath1">XPath interpretation</a></h3>
 
-<p>The interpreter is implemented by <strong>xmlXPathCompiledEval()</strong>
-which is the front-end to <strong>xmlXPathCompOpEval()</strong> the function
-implementing the evaluation of the expression tree. This evaluation follows
-the KISS approach again. It's recursive and calls
-<strong>xmlXPathNodeCollectAndTest()</strong> to collect nodes set when
-evaluating a <code>COLLECT</code> node.</p>
+<p>The interpreter is implemented by
+<strong>xmlXPathCompiledEval()</strong>which is the front-end to
+<strong>xmlXPathCompOpEval()</strong>the functionimplementing the evaluation
+of the expression tree. This evaluation followsthe KISS approach again. It's
+recursive and calls<strong>xmlXPathNodeCollectAndTest()</strong>to collect
+nodes set whenevaluating a <code>COLLECT</code>node.</p>
 
-<p>An evaluation is done within the framework of an XPath context stored in
-an <strong>xmlXPathContext</strong> structure, in the framework of a
-transformation the context is maintained within the XSLT context. Its content
-follows the requirements from the XPath specification:</p>
+<p>An evaluation is done within the framework of an XPath context stored inan
+<strong>xmlXPathContext</strong>structure, in the framework of
+atransformation the context is maintained within the XSLT context. Its
+contentfollows the requirements from the XPath specification:</p>
 <ul>
   <li>the current document</li>
   <li>the current node</li>
   <li>a hash table of defined variables (but not used by XSLT)</li>
   <li>a hash table of defined functions</li>
-  <li>the proximity position (the place of the node in the current node
-  list)</li>
+  <li>the proximity position (the place of the node in the current
+  nodelist)</li>
   <li>the context size (the size of the current node list)</li>
-  <li>the array of namespace declarations in scope (there also is a namespace
-    hash table but it is not used in the XSLT transformation).</li>
+  <li>the array of namespace declarations in scope (there also is a
+    namespacehash table but it is not used in the XSLT transformation).</li>
 </ul>
 
-<p>For the purpose of XSLT an <strong>extra</strong> pointer has been added
-allowing to retrieve the XSLT transformation context. When an XPath
-evaluation is about to be performed, an XPath parser context is allocated
-containing and XPath object stack (this is actually an XPath evaluation
-context, this is a remain of the time where there was no separate parsing and
-evaluation phase in the XPath implementation). Here is an overview of the set
-of contexts associated to an XPath evaluation within an XSLT
-transformation:</p>
+<p>For the purpose of XSLT an <strong>extra</strong>pointer has been
+addedallowing to retrieve the XSLT transformation context. When an
+XPathevaluation is about to be performed, an XPath parser context is
+allocatedcontaining and XPath object stack (this is actually an XPath
+evaluationcontext, this is a remain of the time where there was no separate
+parsing andevaluation phase in the XPath implementation). Here is an overview
+of the setof contexts associated to an XPath evaluation within an
+XSLTtransformation:</p>
 
 <p align="center"><img src="contexts.gif"
 alt="The set of contexts associated "></p>
 
-<p>Clearly this is a bit too complex and confusing and should be refactored
-at the next set of binary incompatible releases of libxml. For example the
-xmlXPathCtxt has a lot of unused parts and should probably be merged with
-xmlXPathParserCtxt.</p>
+<p>Clearly this is a bit too complex and confusing and should be refactoredat
+the next set of binary incompatible releases of libxml. For example
+thexmlXPathCtxt has a lot of unused parts and should probably be merged
+withxmlXPathParserCtxt.</p>
 
 <h3><a name="Descriptio">Description of XPath Objects</a></h3>
 
-<p>An XPath expression manipulates XPath objects. XPath defines the default
-types boolean, numbers, strings and node sets. XSLT adds the result tree
-fragment type which is basically an unmodifiable node set.</p>
+<p>An XPath expression manipulates XPath objects. XPath defines the
+defaulttypes boolean, numbers, strings and node sets. XSLT adds the result
+treefragment type which is basically an unmodifiable node set.</p>
 
-<p>Implementation-wise, libxml follows again a KISS approach, the
-xmlXPathObject is a structure containing a type description and the various
-possibilities. (Using an enum could have gained some bytes.) In the case of
-node sets (or result tree fragments), it points to a separate xmlNodeSet
-object which contains the list of pointers to the document nodes:</p>
+<p>Implementation-wise, libxml follows again a KISS approach,
+thexmlXPathObject is a structure containing a type description and the
+variouspossibilities. (Using an enum could have gained some bytes.) In the
+case ofnode sets (or result tree fragments), it points to a separate
+xmlNodeSetobject which contains the list of pointers to the document
+nodes:</p>
 
 <p align="center"><img src="object.gif"
 alt="An Node set object pointing to "></p>
 
-<p>The <a href="http://xmlsoft.org/html/libxml-xpath.html">XPath API</a> (and
-its <a href="http://xmlsoft.org/html/libxml-xpathinternals.html">'internal'
-part</a>) includes a number of functions to create, copy, compare, convert or
-free XPath objects.</p>
+<p>The <a href="http://xmlsoft.org/html/libxml-xpath.html">XPath
+API</a>(andits <a
+href="http://xmlsoft.org/html/libxml-xpathinternals.html">'internal'part</a>)
+includes a number of functions to create, copy, compare, convert orfree XPath
+objects.</p>
 
 <h3><a name="XPath3">XPath functions</a></h3>
 
-<p>All the XPath functions available to the interpreter are registered in the
-function hash table linked from the XPath context. They all share the same
-signature:</p>
+<p>All the XPath functions available to the interpreter are registered in
+thefunction hash table linked from the XPath context. They all share the
+samesignature:</p>
 <pre>void xmlXPathFunc (xmlXPathParserContextPtr ctxt, int nargs);</pre>
 
-<p>The first argument is the XPath interpretation context, holding the
-interpretation stack. The second argument defines the number of objects
-passed on the stack for the function to consume (last argument is on top of
-the stack).</p>
+<p>The first argument is the XPath interpretation context, holding
+theinterpretation stack. The second argument defines the number of
+objectspassed on the stack for the function to consume (last argument is on
+top ofthe stack).</p>
 
 <p>Basically an XPath function does the following:</p>
 <ul>
-  <li>check <code>nargs</code> for proper handling of errors or functions
-    with variable numbers of parameters</li>
-  <li>pop the parameters from the stack using <code>obj =
-    valuePop(ctxt);</code></li>
+  <li>check <code>nargs</code>for proper handling of errors or functionswith
+    variable numbers of parameters</li>
+  <li>pop the parameters from the stack using <code>obj
+    =valuePop(ctxt);</code></li>
   <li>do the function specific computation</li>
-  <li>push the result parameter on the stack using <code>valuePush(ctxt,
-    res);</code></li>
-  <li>free up the input parameters with
-  <code>xmlXPathFreeObject(obj);</code></li>
+  <li>push the result parameter on the stack using
+    <code>valuePush(ctxt,res);</code></li>
+  <li>free up the input parameters
+  with<code>xmlXPathFreeObject(obj);</code></li>
   <li>return</li>
 </ul>
 
-<p>Sometime the work can be done directly by modifying in-situ the top object
-on the stack <code>ctxt-&gt;value</code>.</p>
+<p>Sometime the work can be done directly by modifying in-situ the top
+objecton the stack <code>ctxt-&gt;value</code>.</p>
 
 <h3><a name="stack">The XSLT variables stack frame</a></h3>
 
-<p>Not to be confused with XPath object stack, this stack holds the XSLT
-variables and parameters as they are defined through the recursive calls of
-call-template, apply-templates and default templates. This is used to define
-the scope of variables being called.</p>
+<p>Not to be confused with XPath object stack, this stack holds the
+XSLTvariables and parameters as they are defined through the recursive calls
+ofcall-template, apply-templates and default templates. This is used to
+definethe scope of variables being called.</p>
 
-<p>This part seems to be the most urgent attention right now, first it is
-done in a very inefficient way since the location of the variables and
-parameters within the stylesheet tree is still done at run time (it really
-should be done statically at compile time), and I am still unsure that my
-understanding of the template variables and parameter scope is actually
-right.</p>
+<p>This part seems to be the most urgent attention right now, first it isdone
+in a very inefficient way since the location of the variables andparameters
+within the stylesheet tree is still done at run time (it reallyshould be done
+statically at compile time), and I am still unsure that myunderstanding of
+the template variables and parameter scope is actuallyright.</p>
 
-<p>This part of the documentation is still to be written once this part of
-the code will be stable. <span
-style="background-color: #FF0000">TODO</span></p>
+<p>This part of the documentation is still to be written once this part ofthe
+code will be stable. <span style="background-color: #FF0000">TODO</span></p>
 
 <h3><a name="Extension">Extension support</a></h3>
 
-<p>There is a separate document explaining <a href="extensions.html">how the
-extension support works</a>.</p>
+<p>There is a separate document explaining <a href="extensions.html">how
+theextension support works</a>.</p>
 
 <h3><a name="Futher">Further reading</a></h3>
 
 <p>Michael Kay wrote <a
-href="http://www-106.ibm.com/developerworks/library/x-xslt2/?dwzone=x?open&amp;l=132%2ct=gr%2c+p=saxon">a
-really interesting article on Saxon internals</a> and the work he did on
-performance issues. I wishes I had read it before starting libxslt design (I
-would probably have avoided a few mistakes and progressed faster). A lot of
-the ideas in his papers should be implemented or at least tried in
-libxslt.</p>
+href="http://www-106.ibm.com/developerworks/library/x-xslt2/?dwzone=x?open&amp;l=132%2ct=gr%2c+p=saxon">areally
+interesting article on Saxon internals</a>and the work he did onperformance
+issues. I wishes I had read it before starting libxslt design (Iwould
+probably have avoided a few mistakes and progressed faster). A lot ofthe
+ideas in his papers should be implemented or at least tried inlibxslt.</p>
 
 <p>The <a href="http://xmlsoft.org/">libxml documentation</a>, especially <a
-href="http://xmlsoft.org/xmlio.html">the I/O interfaces</a> and the <a
+href="http://xmlsoft.org/xmlio.html">the I/O interfaces</a>and the <a
 href="http://xmlsoft.org/xmlmem.html">memory management</a>.</p>
 
 <h3><a name="TODOs">TODOs</a></h3>
 
-<p>redesign the XSLT stack frame handling. Far too much work is done at
-execution time. Similarly for the attribute value templates handling, at
-least the embedded subexpressions ought to be precompiled.</p>
+<p>redesign the XSLT stack frame handling. Far too much work is done
+atexecution time. Similarly for the attribute value templates handling,
+atleast the embedded subexpressions ought to be precompiled.</p>
 
-<p>Allow output to be saved to a SAX like output (this notion of SAX like API
-for output should be added directly to libxml).</p>
+<p>Allow output to be saved to a SAX like output (this notion of SAX like
+APIfor output should be added directly to libxml).</p>
 
-<p>Implement and test some of the optimization explained by Michael Kay
-especially:</p>
+<p>Implement and test some of the optimization explained by Michael
+Kayespecially:</p>
 <ul>
   <li>static slot allocation on the stack frame</li>
   <li>specific boolean interpretation of an XPath expression</li>
   <li>some of the sorting optimization</li>
-  <li>Lazy evaluation of location path. (this may require more changes but
-    sounds really interesting. XT does this too.)</li>
-  <li>Optimization of an expression tree (This could be done as a completely
-    independent module.)</li>
+  <li>Lazy evaluation of location path. (this may require more changes
+    butsounds really interesting. XT does this too.)</li>
+  <li>Optimization of an expression tree (This could be done as a
+    completelyindependent module.)</li>
 </ul>
 
 <p></p>
 
-<p>Error reporting, there is a lot of case where the XSLT specification
-specify that a given construct is an error are not checked adequately by
-libxslt. Basically one should do a complete pass on the XSLT spec again and
-add all tests to the stylesheet compilation. Using the DTD provided in the
-appendix and making direct checks using the libxml validation API sounds a
-good idea too (though one should take care of not raising errors for
-elements/attributes in different namespaces).</p>
+<p>Error reporting, there is a lot of case where the XSLT
+specificationspecify that a given construct is an error are not checked
+adequately bylibxslt. Basically one should do a complete pass on the XSLT
+spec again andadd all tests to the stylesheet compilation. Using the DTD
+provided in theappendix and making direct checks using the libxml validation
+API sounds agood idea too (though one should take care of not raising errors
+forelements/attributes in different namespaces).</p>
 
-<p>Double check all the places where the stylesheet compiled form might be
-modified at run time (extra removal of blanks nodes, hint on the
-xsltCompMatch).</p>
+<p>Double check all the places where the stylesheet compiled form might
+bemodified at run time (extra removal of blanks nodes, hint on
+thexsltCompMatch).</p>
 
 <p></p>
 
@@ -1920,69 +1929,67 @@ xsltCompMatch).</p>
   <li><a href="extensions.html#Keep">Extension modules</a></li>
   <li><a href="extensions.html#Registerin">Registering a module</a></li>
   <li><a href="extensions.html#module">Loading a module</a></li>
-  <li><a href="extensions.html#Registerin1">Registering an extension
-    function</a></li>
-  <li><a href="extensions.html#Implementi">Implementing an extension
-    function</a></li>
-  <li><a href="extensions.html#Examples">Examples for extension
-  functions</a></li>
-  <li><a href="extensions.html#Registerin2">Registering an extension
-    element</a></li>
-  <li><a href="extensions.html#Implementi1">Implementing an extension
-    element</a></li>
-  <li><a href="extensions.html#Example">Example for extension
-  elements</a></li>
+  <li><a href="extensions.html#Registerin1">Registering an
+    extensionfunction</a></li>
+  <li><a href="extensions.html#Implementi">Implementing an
+    extensionfunction</a></li>
+  <li><a href="extensions.html#Examples">Examples for
+  extensionfunctions</a></li>
+  <li><a href="extensions.html#Registerin2">Registering an
+    extensionelement</a></li>
+  <li><a href="extensions.html#Implementi1">Implementing an
+    extensionelement</a></li>
+  <li><a href="extensions.html#Example">Example for extensionelements</a></li>
   <li><a href="extensions.html#shutdown">The shutdown of a module</a></li>
   <li><a href="extensions.html#Future">Future work</a></li>
 </ul>
 
 <h3><a name="Introducti1">Introduction</a></h3>
 
-<p>This document describes the work needed to write extensions to the
-standard XSLT library for use with <a
-href="http://xmlsoft.org/XSLT/">libxslt</a>, the <a
-href="http://www.w3.org/TR/xslt">XSLT</a> C library developed for the <a
-href="http://www.gnome.org/">Gnome</a> project.</p>
+<p>This document describes the work needed to write extensions to thestandard
+XSLT library for use with <a href="http://xmlsoft.org/XSLT/">libxslt</a>, the
+<a href="http://www.w3.org/TR/xslt">XSLT</a>C library developed for the <a
+href="http://www.gnome.org/">Gnome</a>project.</p>
 
-<p>Before starting reading this document it is highly recommended to get
-familiar with <a href="internals.html">the libxslt internals</a>.</p>
+<p>Before starting reading this document it is highly recommended to
+getfamiliar with <a href="internals.html">the libxslt internals</a>.</p>
 
-<p>Note: this documentation is by definition incomplete and I am not good at
-spelling, grammar, so patches and suggestions are <a
+<p>Note: this documentation is by definition incomplete and I am not good
+atspelling, grammar, so patches and suggestions are <a
 href="mailto:veillard@redhat.com">really welcome</a>.</p>
 
 <h3><a name="Basics">Basics</a></h3>
 
-<p>The <a href="http://www.w3.org/TR/xslt">XSLT specification</a> provides
-two <a href="http://www.w3.org/TR/xslt">ways to extend an XSLT engine</a>:</p>
+<p>The <a href="http://www.w3.org/TR/xslt">XSLT specification</a>providestwo
+<a href="http://www.w3.org/TR/xslt">ways to extend an XSLT engine</a>:</p>
 <ul>
-  <li>providing <a href="http://www.w3.org/TR/xslt">new extension
-    functions</a> which can be called from XPath expressions</li>
-  <li>providing <a href="http://www.w3.org/TR/xslt">new extension
-    elements</a> which can be inserted in stylesheets</li>
+  <li>providing <a href="http://www.w3.org/TR/xslt">new
+    extensionfunctions</a>which can be called from XPath expressions</li>
+  <li>providing <a href="http://www.w3.org/TR/xslt">new
+    extensionelements</a>which can be inserted in stylesheets</li>
 </ul>
 
-<p>In both cases the extensions need to be associated to a new namespace,
-i.e. an URI used as the name for the extension's namespace (there is no need
-to have a resource there for this to work).</p>
+<p>In both cases the extensions need to be associated to a new namespace,i.e.
+an URI used as the name for the extension's namespace (there is no needto
+have a resource there for this to work).</p>
 
-<p>libxslt provides a few extensions itself, either in the libxslt namespace
-"http://xmlsoft.org/XSLT/namespace" or in namespaces for other well known
-extensions provided by other XSLT processors like Saxon, Xalan or XT.</p>
+<p>libxslt provides a few extensions itself, either in the libxslt
+namespace"http://xmlsoft.org/XSLT/namespace" or in namespaces for other well
+knownextensions provided by other XSLT processors like Saxon, Xalan or XT.</p>
 
 <h3><a name="Keep">Extension modules</a></h3>
 
-<p>Since extensions are bound to a namespace name, usually sets of extensions
-coming from a given source are using the same namespace name defining in
-practice a group of extensions providing elements, functions or both. From
-the libxslt point of view those are considered as an "extension module", and
-most of the APIs work at a module point of view.</p>
+<p>Since extensions are bound to a namespace name, usually sets of
+extensionscoming from a given source are using the same namespace name
+defining inpractice a group of extensions providing elements, functions or
+both. Fromthe libxslt point of view those are considered as an "extension
+module", andmost of the APIs work at a module point of view.</p>
 
-<p>Registration of new functions or elements are bound to the activation of
-the module. This is currently done by declaring the namespace as an extension
-by using the attribute  <code>extension-element-prefixes</code> on the
-<code><a href="http://www.w3.org/TR/xslt">xsl:stylesheet</a></code>
-element.</p>
+<p>Registration of new functions or elements are bound to the activation
+ofthe module. This is currently done by declaring the namespace as an
+extensionby using the attribute  <code>extension-element-prefixes</code>on
+the<code><a
+href="http://www.w3.org/TR/xslt">xsl:stylesheet</a></code>element.</p>
 
 <p>An extension module is defined by 3 objects:</p>
 <ul>
@@ -1993,13 +2000,13 @@ element.</p>
 
 <h3><a name="Registerin">Registering a module</a></h3>
 
-<p>Currently a libxslt module has to be compiled within the application using
-libxslt. There is no code to load dynamically shared libraries associated to
-a namespace (this may be added but is likely to become a portability
-nightmare).</p>
+<p>Currently a libxslt module has to be compiled within the application
+usinglibxslt. There is no code to load dynamically shared libraries
+associated toa namespace (this may be added but is likely to become a
+portabilitynightmare).</p>
 
-<p>The current way to register a module is to link the code implementing it
-with the application and to call a registration function:</p>
+<p>The current way to register a module is to link the code implementing
+itwith the application and to call a registration function:</p>
 <pre>int xsltRegisterExtModule(const xmlChar *URI,
                           xsltExtInitFunction initFunc,
                           xsltExtShutdownFunction shutdownFunc);</pre>
@@ -2007,17 +2014,17 @@ with the application and to call a registration function:</p>
 <p>The associated header is read by:</p>
 <pre>#include&lt;libxslt/extensions.h&gt;</pre>
 
-<p>which also defines the type for the initialization and shutdown
-functions</p>
+<p>which also defines the type for the initialization and
+shutdownfunctions</p>
 
 <h3><a name="module">Loading a module</a></h3>
 
-<p>Once the module URI has been registered and if the XSLT processor detects
-that a given stylesheet needs the functionalities of an extended module, this
-one is initialized.</p>
+<p>Once the module URI has been registered and if the XSLT processor
+detectsthat a given stylesheet needs the functionalities of an extended
+module, thisone is initialized.</p>
 
-<p>The xsltExtInitFunction type defines the interface for an initialization
-function:</p>
+<p>The xsltExtInitFunction type defines the interface for an
+initializationfunction:</p>
 <pre>/**
  * xsltExtInitFunction:
  * @ctxt:  an XSLT transformation context
@@ -2034,24 +2041,24 @@ typedef void *(*xsltExtInitFunction)(xsltTransformContextPtr ctxt,
 
 <p>There are 3 things to notice:</p>
 <ul>
-  <li>The function gets passed the namespace name URI as an argument. This
-    allows a single function to provide the initialization for multiple
-    logical modules.</li>
-  <li>It also gets passed a transformation context. The initialization is
-    done at run time before any processing occurs on the stylesheet but it
-    will be invoked separately each time for each transformation.</li>
-  <li>It returns a pointer.  This can be used to store module specific
-    information which can be retrieved later when a function or an element
-    from the extension is used.  An obvious example is a connection to a
-    database which should be kept and reused along with the transformation.
-    NULL is a perfectly valid return; there is no way to indicate a failure
-    at this level</li>
+  <li>The function gets passed the namespace name URI as an argument.
+    Thisallows a single function to provide the initialization for
+    multiplelogical modules.</li>
+  <li>It also gets passed a transformation context. The initialization isdone
+    at run time before any processing occurs on the stylesheet but itwill be
+    invoked separately each time for each transformation.</li>
+  <li>It returns a pointer.  This can be used to store module
+    specificinformation which can be retrieved later when a function or an
+    elementfrom the extension is used.  An obvious example is a connection to
+    adatabase which should be kept and reused along with the
+    transformation.NULL is a perfectly valid return; there is no way to
+    indicate a failureat this level</li>
 </ul>
 
 <p>What this function is expected to do is:</p>
 <ul>
-  <li>prepare the context for this module (like opening the database
-    connection)</li>
+  <li>prepare the context for this module (like opening the
+    databaseconnection)</li>
   <li>register the extensions specific to this module</li>
 </ul>
 
@@ -2063,16 +2070,16 @@ typedef void *(*xsltExtInitFunction)(xsltTransformContextPtr ctxt,
                             const xmlChar *URI,
                             xmlXPathEvalFunc function);</pre>
 
-<p>The registration is bound to a single transformation instance referred by
-ctxt, name is the UTF8 encoded name for the NCName of the function, and URI
-is the namespace name for the extension (no checking is done, a module could
-register functions or elements from a different namespace, but it is not
-recommended).</p>
+<p>The registration is bound to a single transformation instance referred
+byctxt, name is the UTF8 encoded name for the NCName of the function, and
+URIis the namespace name for the extension (no checking is done, a module
+couldregister functions or elements from a different namespace, but it is
+notrecommended).</p>
 
 <h3><a name="Implementi">Implementing an extension function</a></h3>
 
-<p>The implementation of the function must have the signature of a libxml
-XPath function:</p>
+<p>The implementation of the function must have the signature of a
+libxmlXPath function:</p>
 <pre>/**
  * xmlXPathEvalFunc:
  * @ctxt: an XPath parser context
@@ -2086,67 +2093,67 @@ typedef void (*xmlXPathEvalFunc)(xmlXPathParserContextPtr ctxt,
                                  int nargs);</pre>
 
 <p>The context passed to an XPath function is not an XSLT context but an <a
-href="internals.html#XPath1">XPath context</a>. However it is possible to
-find one from the other:</p>
+href="internals.html#XPath1">XPath context</a>. However it is possible tofind
+one from the other:</p>
 <ul>
   <li>The function xsltXPathGetTransformContext provides this lookup facility:
     <pre>xsltTransformContextPtr
          xsltXPathGetTransformContext
                           (xmlXPathParserContextPtr ctxt);</pre>
   </li>
-  <li>The <code>xmlXPathContextPtr</code> associated to an
-    <code>xsltTransformContext</code> is stored in the <code>xpathCtxt</code>
-    field.</li>
+  <li>The <code>xmlXPathContextPtr</code>associated to
+    an<code>xsltTransformContext</code>is stored in the
+    <code>xpathCtxt</code>field.</li>
 </ul>
 
-<p>The first thing an extension function may want to do is to check the
-arguments passed on the stack, the <code>nargs</code> parameter will tell how
-many of them were provided on the XPath expression. The macro valuePop will
-extract them from the XPath stack:</p>
+<p>The first thing an extension function may want to do is to check
+thearguments passed on the stack, the <code>nargs</code>parameter will tell
+howmany of them were provided on the XPath expression. The macro valuePop
+willextract them from the XPath stack:</p>
 <pre>#include &lt;libxml/xpath.h&gt;
 #include &lt;libxml/xpathInternals.h&gt;
 
 xmlXPathObjectPtr obj = valuePop(ctxt); </pre>
 
-<p>Note that <code>ctxt</code> is the XPath context not the XSLT one. It is
-then possible to examine the content of the value. Check <a
-href="internals.html#Descriptio">the description of XPath objects</a> if
-necessary. The following is a common sequence checking whether the argument
-passed is a string and converting it using the built-in XPath
-<code>string()</code> function if this is not the case:</p>
+<p>Note that <code>ctxt</code>is the XPath context not the XSLT one. It
+isthen possible to examine the content of the value. Check <a
+href="internals.html#Descriptio">the description of XPath
+objects</a>ifnecessary. The following is a common sequence checking whether
+the argumentpassed is a string and converting it using the built-in
+XPath<code>string()</code>function if this is not the case:</p>
 <pre>if (obj-&gt;type != XPATH_STRING) {
     valuePush(ctxt, obj);
     xmlXPathStringFunction(ctxt, 1);
     obj = valuePop(ctxt);
 }</pre>
 
-<p>Most common XPath functions are available directly at the C level and are
-exported either in <code>&lt;libxml/xpath.h&gt;</code> or in
-<code>&lt;libxml/xpathInternals.h&gt;</code>.</p>
+<p>Most common XPath functions are available directly at the C level and
+areexported either in <code>&lt;libxml/xpath.h&gt;</code>or
+in<code>&lt;libxml/xpathInternals.h&gt;</code>.</p>
 
-<p>The extension function may also need to retrieve the data associated to
-this module instance (the database connection in the previous example) this
-can be done using the xsltGetExtData:</p>
+<p>The extension function may also need to retrieve the data associated
+tothis module instance (the database connection in the previous example)
+thiscan be done using the xsltGetExtData:</p>
 <pre>void * xsltGetExtData(xsltTransformContextPtr ctxt,
                       const xmlChar *URI);</pre>
 
-<p>Again the URI to be provided is the one which was used when registering
-the module.</p>
+<p>Again the URI to be provided is the one which was used when registeringthe
+module.</p>
 
 <p>Once the function finishes, don't forget to:</p>
 <ul>
-  <li>push the return value on the stack using <code>valuePush(ctxt,
-    obj)</code></li>
-  <li>deallocate the parameters passed to the function using
-    <code>xmlXPathFreeObject(obj)</code></li>
+  <li>push the return value on the stack using
+    <code>valuePush(ctxt,obj)</code></li>
+  <li>deallocate the parameters passed to the function
+    using<code>xmlXPathFreeObject(obj)</code></li>
 </ul>
 
 <h3><a name="Examples">Examples for extension functions</a></h3>
 
-<p>The module libxslt/functions.c contains the sources of the XSLT built-in
-functions, including document(), key(), generate-id(), etc. as well as a full
-example module at the end. Here is the test function implementation for the
-libxslt:test function:</p>
+<p>The module libxslt/functions.c contains the sources of the XSLT
+built-infunctions, including document(), key(), generate-id(), etc. as well
+as a fullexample module at the end. Here is the test function implementation
+for thelibxslt:test function:</p>
 <pre>/**
  * xsltExtFunctionTest:
  * @ctxt:  the XPath Parser context
@@ -2186,19 +2193,20 @@ xsltExtFunctionTest(xmlXPathParserContextPtr ctxt, int nargs)
                            const xmlChar *URI,
                            xsltTransformFunction function);</pre>
 
-<p>It is similar to the mechanism used to register an extension function,
-except that the signature of an extension element implementation is
-different.</p>
+<p>It is similar to the mechanism used to register an extension
+function,except that the signature of an extension element implementation
+isdifferent.</p>
 
-<p>The registration is bound to a single transformation instance referred to
-by ctxt, name is the UTF8 encoded name for the NCName of the element, and URI
-is the namespace name for the extension (no checking is done, a module could
-register elements for a different namespace, but it is not recommended).</p>
+<p>The registration is bound to a single transformation instance referred
+toby ctxt, name is the UTF8 encoded name for the NCName of the element, and
+URIis the namespace name for the extension (no checking is done, a module
+couldregister elements for a different namespace, but it is not
+recommended).</p>
 
 <h3><a name="Implementi1">Implementing an extension element</a></h3>
 
-<p>The implementation of the element must have the signature of an XSLT
-transformation function:</p>
+<p>The implementation of the element must have the signature of an
+XSLTtransformation function:</p>
 <pre>/** 
  * xsltTransformFunction: 
  * @ctxt: the XSLT transformation context
@@ -2215,37 +2223,37 @@ typedef void (*xsltTransformFunction)
                            xmlNodePtr inst,
                            xsltStylePreCompPtr comp);</pre>
 
-<p>The first argument is the XSLT transformation context. The second and
-third arguments are xmlNodePtr i.e. internal memory <a
-href="internals.html#libxml">representation of  XML nodes</a>. They are
-respectively <code>node</code> from the the input document being transformed
-by the stylesheet and <code>inst</code> the extension element in the
-stylesheet. The last argument is <code>comp</code> a pointer to a precompiled
-representation of <code>inst</code> but usually for an extension function
-this value is <code>NULL</code> by default (it could be added and associated
-to the instruction in <code>inst-&gt;_private</code>).</p>
-
-<p>The same functions are available from a function implementing an extension
-element as in an extension function, including
-<code>xsltGetExtData()</code>.</p>
-
-<p>The goal of an extension element being usually to enrich the generated
-output, it is expected that they will grow the currently generated output
-tree. This can be done by grabbing ctxt-&gt;insert which is the current
-libxml node being generated (Note this can also be the intermediate value
-tree being built for example to initialize a variable, the processing should
-be similar). The functions for libxml tree manipulation from <a
-href="http://xmlsoft.org/html/libxml-tree.html">&lt;libxml/tree.h&gt;</a> can
-be employed to extend or modify the tree, but it is required to preserve the
-insertion node and its ancestors since there are existing pointers to those
-elements still in use in the XSLT template execution stack.</p>
+<p>The first argument is the XSLT transformation context. The second andthird
+arguments are xmlNodePtr i.e. internal memory <a
+href="internals.html#libxml">representation of  XML nodes</a>. They
+arerespectively <code>node</code>from the the input document being
+transformedby the stylesheet and <code>inst</code>the extension element in
+thestylesheet. The last argument is <code>comp</code>a pointer to a
+precompiledrepresentation of <code>inst</code>but usually for an extension
+functionthis value is <code>NULL</code>by default (it could be added and
+associatedto the instruction in <code>inst-&gt;_private</code>).</p>
+
+<p>The same functions are available from a function implementing an
+extensionelement as in an extension function,
+including<code>xsltGetExtData()</code>.</p>
+
+<p>The goal of an extension element being usually to enrich the
+generatedoutput, it is expected that they will grow the currently generated
+outputtree. This can be done by grabbing ctxt-&gt;insert which is the
+currentlibxml node being generated (Note this can also be the intermediate
+valuetree being built for example to initialize a variable, the processing
+shouldbe similar). The functions for libxml tree manipulation from <a
+href="http://xmlsoft.org/html/libxml-tree.html">&lt;libxml/tree.h&gt;</a>canbe
+employed to extend or modify the tree, but it is required to preserve
+theinsertion node and its ancestors since there are existing pointers to
+thoseelements still in use in the XSLT template execution stack.</p>
 
 <h3><a name="Example">Example for extension elements</a></h3>
 
-<p>The module libxslt/transform.c contains the sources of the XSLT built-in
-elements, including xsl:element, xsl:attribute, xsl:if, etc. There is a small
-but full example in functions.c providing the implementation for the
-libxslt:test element, it will output a comment in the result tree:</p>
+<p>The module libxslt/transform.c contains the sources of the XSLT
+built-inelements, including xsl:element, xsl:attribute, xsl:if, etc. There is
+a smallbut full example in functions.c providing the implementation for
+thelibxslt:test element, it will output a comment in the result tree:</p>
 <pre>/**
  * xsltExtElementTest:
  * @ctxt:  an XSLT processing context
@@ -2290,10 +2298,10 @@ xsltExtElementTest(xsltTransformContextPtr ctxt, xmlNodePtr node,
 
 <h3><a name="shutdown">The shutdown of a module</a></h3>
 
-<p>When the XSLT processor ends a transformation, the shutdown function (if
-it exists) for each of the modules initialized is called.  The
-xsltExtShutdownFunction type defines the interface for a shutdown
-function:</p>
+<p>When the XSLT processor ends a transformation, the shutdown function (ifit
+exists) for each of the modules initialized is called. 
+ThexsltExtShutdownFunction type defines the interface for a
+shutdownfunction:</p>
 <pre>/**
  * xsltExtShutdownFunction:
  * @ctxt:  an XSLT transformation context
@@ -2306,64 +2314,66 @@ typedef void (*xsltExtShutdownFunction) (xsltTransformContextPtr ctxt,
                                          const xmlChar *URI,
                                          void *data);</pre>
 
-<p>This is really similar to a module initialization function except a third
-argument is passed, it's the value that was returned by the initialization
-function. This allows the routine to deallocate resources from the module for
-example close the connection to the database to keep the same example.</p>
+<p>This is really similar to a module initialization function except a
+thirdargument is passed, it's the value that was returned by the
+initializationfunction. This allows the routine to deallocate resources from
+the module forexample close the connection to the database to keep the same
+example.</p>
 
 <h3><a name="Future">Future work</a></h3>
 
 <p>Well, some of the pieces missing:</p>
 <ul>
   <li>a way to load shared libraries to instantiate new modules</li>
-  <li>a better detection of extension functions usage and their registration
-    without having to use the extension prefix which ought to be reserved to
-    element extensions.</li>
+  <li>a better detection of extension functions usage and their
+    registrationwithout having to use the extension prefix which ought to be
+    reserved toelement extensions.</li>
   <li>more examples</li>
-  <li>implementations of the <a href="http://www.exslt.org/">EXSLT</a> common
-    extension libraries, Thomas Broyer nearly finished implementing them.</li>
+  <li>implementations of the <a
+    href="http://www.exslt.org/">EXSLT</a>commonextension libraries, Thomas
+    Broyer nearly finished implementing them.</li>
 </ul>
 
 <p></p>
 
 <h2><a name="Contributi">Contributions</a></h2>
 <ul>
-  <li>Bjorn Reese is the author of the number support and worked on the
-    XSLTMark support</li>
-  <li>William Brack was an early adopted, contributed a number of patches and
-    spent quite some time debugging non-trivial problems in early versions of
-    libxslt</li>
-  <li><a href="mailto:igor@zlatkovic.com">Igor  Zlatkovic</a> is now the
-    maintainer of the Windows port, <a
-    href="http://www.zlatkovic.com/projects/libxml/index.html">he provides
-    binaries</a></li>
-  <li>Thomas Broyer provided a lot of suggestions, and drafted most of the
-    extension API</li>
-  <li>John Fleck maintains <a href="tutorial/libxslttutorial.html">a tutorial
-    for libxslt</a></li>
+  <li>Bjorn Reese is the author of the number support and worked on
+    theXSLTMark support</li>
+  <li>William Brack was an early adopted, contributed a number of patches
+    andspent quite some time debugging non-trivial problems in early versions
+    oflibxslt</li>
+  <li><a href="mailto:igor@zlatkovic.com">Igor  Zlatkovic</a>is now
+    themaintainer of the Windows port, <a
+    href="http://www.zlatkovic.com/projects/libxml/index.html">he
+    providesbinaries</a></li>
+  <li>Thomas Broyer provided a lot of suggestions, and drafted most of
+    theextension API</li>
+  <li>John Fleck maintains <a href="tutorial/libxslttutorial.html">a
+    tutorialfor libxslt</a></li>
   <li><a
-    href="http://mail.gnome.org/archives/xml/2001-March/msg00014.html">Matt
-    Sergeant</a> developed <a
-    href="http://axkit.org/download/">XML::LibXSLT</a>, a perl wrapper for
-    libxml2/libxslt as part of the <a href="http://axkit.com/">AxKit XML
-    application server</a></li>
+    href="http://mail.gnome.org/archives/xml/2001-March/msg00014.html">MattSergeant</a>developed
+    <a href="http://axkit.org/download/">XML::LibXSLT</a>, a perl wrapper
+    forlibxml2/libxslt as part of the <a href="http://axkit.com/">AxKit
+    XMLapplication server</a></li>
   <li>there is a module for <a
-    href="http://acs-misc.sourceforge.net/nsxml.html">libxml/libxslt support
-    in OpenNSD/AOLServer</a></li>
-  <li><a href="mailto:dkuhlman@cutter.rexx.com">Dave Kuhlman</a> provides
-    libxml/libxslt <a href="http://www.rexx.com/~dkuhlman">wrappers for
-    Python</a></li>
-  <li><a href="mailto:Steve.Ball@explain.com.au">Steve Ball</a>, and
-    contributors maintain <a href="http://tclxml.sourceforge.net/">tcl
-    bindings for libxml2 and libxslt</a>, as well as <a
-    href="http://tclxml.sf.net/tkxmllint.html">tkxmllint</a> a GUI for
-    xmllint and <a href="http://tclxml.sf.net/tkxsltproc.html">tkxsltproc</a>
-    a GUI for xsltproc.</li>
-  <li>If you want to use libxslt in a Mac OS X/Cocoa or Objective-C
-    framework, Marc Liyanage provides <a
-    href="http://www.entropy.ch/software/macosx/#testxslt">an application
-    TestXSLT for XSLT and XML editing</a> including wrapper classes for the
-    XML parser and XSLT processor.</li>
+    href="http://acs-misc.sourceforge.net/nsxml.html">libxml/libxslt
+    supportin OpenNSD/AOLServer</a></li>
+  <li><a href="mailto:dkuhlman@cutter.rexx.com">Dave
+    Kuhlman</a>provideslibxml/libxslt <a
+    href="http://www.rexx.com/~dkuhlman">wrappers forPython</a></li>
+  <li><a href="mailto:Steve.Ball@explain.com.au">Steve Ball</a>,
+    andcontributors maintain <a
+    href="http://tclxml.sourceforge.net/">tclbindings for libxml2 and
+    libxslt</a>, as well as <a
+    href="http://tclxml.sf.net/tkxmllint.html">tkxmllint</a>a GUI forxmllint
+    and <a href="http://tclxml.sf.net/tkxsltproc.html">tkxsltproc</a>a GUI
+    for xsltproc.</li>
+  <li>If you want to use libxslt in a Mac OS X/Cocoa or Objective-Cframework,
+    Marc Liyanage provides <a
+    href="http://www.entropy.ch/software/macosx/#testxslt">an
+    applicationTestXSLT for XSLT and XML editing</a>including wrapper classes
+    for theXML parser and XSLT processor.</li>
 </ul>
 
 <p></p>
index face60f..48cd7d9 100644 (file)
@@ -8,11 +8,11 @@ H2 {font-family: Verdana,Arial,Helvetica}
 H3 {font-family: Verdana,Arial,Helvetica}
 A:link, A:visited, A:active { text-decoration: underline }
     </style><title>The xsltproc tool</title></head><body bgcolor="#8b7765" text="#000000" link="#a06060" vlink="#000000"><table border="0" width="100%" cellpadding="5" cellspacing="0" align="center"><tr><td width="120"><a href="http://swpat.ffii.org/"><img src="epatents.png" alt="Action against software patents" /></a></td><td width="180"><a href="http://www.gnome.org/"><img src="gnome2.png" alt="Gnome2 Logo" /></a><a href="http://www.w3.org/Status"><img src="w3c.png" alt="W3C logo" /></a><a href="http://www.redhat.com"><img src="redhat.gif" alt="Red Hat Logo" /></a><div align="left"><a href="http://xmlsoft.org/XSLT/"><img src="Libxslt-Logo-180x168.gif" alt="Made with Libxslt Logo" /></a></div></td><td><table border="0" width="90%" cellpadding="2" cellspacing="0" align="center" bgcolor="#000000"><tr><td><table width="100%" border="0" cellspacing="1" cellpadding="3" bgcolor="#fffacd"><tr><td align="center"><h1>The XSLT C library for Gnome</h1><h2>The xsltproc tool</h2></td></tr></table></td></tr></table></td></tr></table><table border="0" cellpadding="4" cellspacing="0" width="100%" align="center"><tr><td bgcolor="#8b7765"><table border="0" cellspacing="0" cellpadding="2" width="100%"><tr><td valign="top" width="200" bgcolor="#8b7765"><table border="0" cellspacing="0" cellpadding="1" width="100%" bgcolor="#000000"><tr><td><table width="100%" border="0" cellspacing="1" cellpadding="3"><tr><td colspan="1" bgcolor="#eecfa1" align="center"><center><b>Main Menu</b></center></td></tr><tr><td bgcolor="#fffacd"><form action="search.php" enctype="application/x-www-form-urlencoded" method="get"><input name="query" type="text" size="20" value="" /><input name="submit" type="submit" value="Search ..." /></form><ul><li><a href="index.html">Home</a></li><li><a href="http://xmlsoft.org/wiki">Wiki</a></li><li><a href="intro.html">Introduction</a></li><li><a href="docs.html">Documentation</a></li><li><a href="bugs.html">Reporting bugs and getting help</a></li><li><a href="help.html">How to help</a></li><li><a href="downloads.html">Downloads</a></li><li><a href="FAQ.html">FAQ</a></li><li><a href="news.html">News</a></li><li><a href="xsltproc2.html">The xsltproc tool</a></li><li><a href="docbook.html">DocBook</a></li><li><a href="API.html">The programming API</a></li><li><a href="python.html">Python and bindings</a></li><li><a href="internals.html">Library internals</a></li><li><a href="extensions.html">Writing extensions</a></li><li><a href="contribs.html">Contributions</a></li><li><a href="EXSLT/index.html" style="font-weight:bold">libexslt</a></li><li><a href="xslt.html">flat page</a>, <a href="site.xsl">stylesheet</a></li><li><a href="html/index.html" style="font-weight:bold">API Menu</a></li><li><a href="ChangeLog.html">ChangeLog</a></li></ul></td></tr></table><table width="100%" border="0" cellspacing="1" cellpadding="3"><tr><td colspan="1" bgcolor="#eecfa1" align="center"><center><b>Related links</b></center></td></tr><tr><td bgcolor="#fffacd"><ul><li><a href="tutorial/libxslttutorial.html">Tutorial</a>,
-          <a href="tutorial2/libxslt_pipes.html">Tutorial2</a></li><li><a href="xsltproc.html">Man page for xsltproc</a></li><li><a href="http://mail.gnome.org/archives/xslt/">Mail archive</a></li><li><a href="http://xmlsoft.org/">XML libxml2</a></li><li><a href="ftp://xmlsoft.org/">FTP</a></li><li><a href="http://www.zlatkovic.com/projects/libxml/">Windows binaries</a></li><li><a href="http://garypennington.net/libxml2/">Solaris binaries</a></li><li><a href="http://www.explain.com.au/oss/libxml2xslt.html">MacOsX binaries</a></li><li><a href="http://bugzilla.gnome.org/buglist.cgi?product=libxslt">Bug Tracker</a></li><li><a href="http://www.zend.com/php5/articles/php5-xmlphp.php#Heading17">XSLT with PHP</a></li><li><a href="http://www.mod-xslt2.com/">Apache module</a></li><li><a href="http://sourceforge.net/projects/libxml2-pas/">Pascal bindings</a></li><li><a href="http://xsldbg.sourceforge.net/">Xsldbg Debugger</a></li></ul></td></tr></table><table width="100%" border="0" cellspacing="1" cellpadding="3"><tr><td colspan="1" bgcolor="#eecfa1" align="center"><center><b>API Indexes</b></center></td></tr><tr><td bgcolor="#fffacd"><ul><li><a href="APIchunk0.html">Alphabetic</a></li><li><a href="APIconstructors.html">Constructors</a></li><li><a href="APIfunctions.html">Functions/Types</a></li><li><a href="APIfiles.html">Modules</a></li><li><a href="APIsymbols.html">Symbols</a></li></ul></td></tr></table></td></tr></table></td><td valign="top" bgcolor="#8b7765"><table border="0" cellspacing="0" cellpadding="1" width="100%"><tr><td><table border="0" cellspacing="0" cellpadding="1" width="100%" bgcolor="#000000"><tr><td><table border="0" cellpadding="3" cellspacing="1" width="100%"><tr><td bgcolor="#fffacd"><p>This program is the simplest way to use libxslt: from the command line. It
-is also used for doing the regression tests of the library.</p><p>It takes as first argument the path or URL to an XSLT stylesheet, the next
-arguments are filenames or URIs of the inputs to be processed. The output of
-the processing is redirected on the standard output. There is actually a few
-more options available:</p><pre>orchis:~ -&gt; xsltproc
+          <a href="tutorial2/libxslt_pipes.html">Tutorial2</a></li><li><a href="xsltproc.html">Man page for xsltproc</a></li><li><a href="http://mail.gnome.org/archives/xslt/">Mail archive</a></li><li><a href="http://xmlsoft.org/">XML libxml2</a></li><li><a href="ftp://xmlsoft.org/">FTP</a></li><li><a href="http://www.zlatkovic.com/projects/libxml/">Windows binaries</a></li><li><a href="http://garypennington.net/libxml2/">Solaris binaries</a></li><li><a href="http://www.explain.com.au/oss/libxml2xslt.html">MacOsX binaries</a></li><li><a href="http://bugzilla.gnome.org/buglist.cgi?product=libxslt">Bug Tracker</a></li><li><a href="http://www.zend.com/php5/articles/php5-xmlphp.php#Heading17">XSLT with PHP</a></li><li><a href="http://www.mod-xslt2.com/">Apache module</a></li><li><a href="http://sourceforge.net/projects/libxml2-pas/">Pascal bindings</a></li><li><a href="http://xsldbg.sourceforge.net/">Xsldbg Debugger</a></li></ul></td></tr></table><table width="100%" border="0" cellspacing="1" cellpadding="3"><tr><td colspan="1" bgcolor="#eecfa1" align="center"><center><b>API Indexes</b></center></td></tr><tr><td bgcolor="#fffacd"><ul><li><a href="APIchunk0.html">Alphabetic</a></li><li><a href="APIconstructors.html">Constructors</a></li><li><a href="APIfunctions.html">Functions/Types</a></li><li><a href="APIfiles.html">Modules</a></li><li><a href="APIsymbols.html">Symbols</a></li></ul></td></tr></table></td></tr></table></td><td valign="top" bgcolor="#8b7765"><table border="0" cellspacing="0" cellpadding="1" width="100%"><tr><td><table border="0" cellspacing="0" cellpadding="1" width="100%" bgcolor="#000000"><tr><td><table border="0" cellpadding="3" cellspacing="1" width="100%"><tr><td bgcolor="#fffacd"><p>This program is the simplest way to use libxslt: from the command line.
+Itis also used for doing the regression tests of the library.</p><p>It takes as first argument the path or URL to an XSLT stylesheet, the
+nextarguments are filenames or URIs of the inputs to be processed. The output
+ofthe processing is redirected on the standard output. There is actually a
+fewmore options available:</p><pre>orchis:~ -&gt; xsltproc
 Usage: xsltproc [options] stylesheet file [file ...]
    Options:
       --version or -V: show the version of libxml and libxslt used
index 12120ca..aff0e2f 100644 (file)
@@ -27,6 +27,7 @@ Group: Development/Libraries
 Requires: libxslt = %{version}
 Requires: libxml2-devel >= 2.5.6
 Requires: libgcrypt-devel
+Requires: pkgconfig
 
 %description devel
 This C library allows to transform XML files into other XML files
@@ -122,28 +123,3 @@ rm -fr %{buildroot}
 %changelog
 * @RELDATE@ Daniel Veillard <veillard@redhat.com>
 - upstream release @VERSION@ see http://xmlsoft.org/XSLT/news.html
-
-* Sun Nov  2 2003 Daniel Veillard <veillard@redhat.com>
-- cleanup, removal of the deprecated breakpoint library and
-  automated libxml2 dependancy level in the generated spec file.
-
-* Wed Oct 23 2002 Daniel Veillard <veillard@redhat.com>
-- revamped the spec file, cleaned up some rpm building problems
-
-* Wed Sep  4 2002 Daniel Veillard <veillard@redhat.com>
-
-- library paths fixed for x86-64
-
-* Fri Feb  8 2002 Daniel.Veillard <veillard@redhat.com>
-
-- added the python module
-- changed the Licence to MIT
-
-* Sat Nov 10 2001 Daniel.Veillard <daniel@veillard.com>
-
-- cleaned up the specfile
-
-* Mon Jan 22 2001 Daniel.Veillard <daniel@veillard.com>
-
-- created based on libxml2 spec file
-
index 385f895..1a50a44 100644 (file)
@@ -23,21 +23,21 @@ extern "C" {
  *
  * the version string like "1.2.3"
  */
-#define LIBXSLT_DOTTED_VERSION "1.1.16"
+#define LIBXSLT_DOTTED_VERSION "1.1.17"
 
 /**
  * LIBXSLT_VERSION:
  *
  * the version number: 1.2.3 value is 1002003
  */
-#define LIBXSLT_VERSION 10116
+#define LIBXSLT_VERSION 10117
 
 /**
  * LIBXSLT_VERSION_STRING:
  *
  * the version number string, 1.2.3 value is "1002003"
  */
-#define LIBXSLT_VERSION_STRING "10116"
+#define LIBXSLT_VERSION_STRING "10117"
 
 /**
  * LIBXSLT_VERSION_EXTRA: