mirror of
https://gitlab.gnome.org/GNOME/libxslt
synced 2025-11-06 23:49:25 +03:00
465 lines
20 KiB
HTML
465 lines
20 KiB
HTML
<html>
|
|
<head>
|
|
<title>The XSLT C library for Gnome</title>
|
|
<meta name="GENERATOR" content="amaya V4.1">
|
|
<meta http-equiv="Content-Type" content="text/html">
|
|
</head>
|
|
|
|
<body bgcolor="#ffffff">
|
|
<p><a href="http://www.gnome.org/"><img src="smallfootonly.gif"
|
|
alt="Gnome Logo"></a><a href="http://www.redhat.com"><img src="redhat.gif"
|
|
alt="Red Hat Logo"></a></p>
|
|
|
|
<h1 align="center">The XSLT C library for Gnome</h1>
|
|
|
|
<h1 style="text-align: center">libxslt</h1>
|
|
|
|
<p></p>
|
|
<ul>
|
|
<li><a href="#Introducti">Introduction</a></li>
|
|
<li><a href="#Documentat">Documentation</a></li>
|
|
<li><a href="#Reporting">Reporting bugs and getting help</a></li>
|
|
<li><a href="#help">how to help</a></li>
|
|
<li><a href="#Downloads">Downloads</a></li>
|
|
<li><a href="#News">News</a></li>
|
|
<li><a href="#XML">The xsltproc command line tool</a></li>
|
|
<li><a href="#XSLT">The programming API</a></li>
|
|
</ul>
|
|
|
|
<p>External documents:</p>
|
|
<ul>
|
|
<li>John Fleck wrote <a href="tutorial/libxslttutorial.html">a tutorial for
|
|
libxslt</a></li>
|
|
<li><a href="internals.html">white paper on libxslt internals</a></li>
|
|
<li><a href="extensions.html">documentation on writing extensions for
|
|
libxslt</a></li>
|
|
<li><a href="http://xmlsoft.org/">the libxml documentation</a></li>
|
|
</ul>
|
|
|
|
<p></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 developped 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.gnu.org/copyleft/lesser.html">GNU LGPL</a> and a
|
|
derivative of the W3C IPR (check the Copyright and the IPR files in the
|
|
distribution). If you are not happy with this, drop me a mail.</li>
|
|
<li>Though not designed primarily with performances in mind, libxslt seems
|
|
to 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 <a
|
|
href="http://cvs.gnome.org/bonsai/rview.cgi?cvsroot=/cvs/gnome&dir=gtk-doc">gtk
|
|
doc</a>).</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>
|
|
</ol>
|
|
|
|
<h2><a name="Reporting">Reporting bugs and getting help</a></h2>
|
|
|
|
<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/buglist.cgi?product=libxslt">Gnome bug
|
|
tracking database</a> (make sure to use the "libxslt" module name). I look at
|
|
reports there regularly and it's good to have a reminder when a bug is still
|
|
open. Check the <a href="http://bugs.gnome.org/Reporting.html">instructions on
|
|
reporting bugs</a> and be sure to specify that the bug is for the package
|
|
libxslt.</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>Check the following too before posting:</p>
|
|
<ul>
|
|
<li>make sure you are <a href="ftp://xmlsoft.org/">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, similary check the <a href="http://bugzilla.gnome.org/buglist.cgi?product=libxml&product=libxslt&bug_status=UNCONFIRMED&bug_status=NEW&bug_status=ASSIGNED&bug_status=NEEDINFO&bug_status=REOPENED&bug_status=RESOLVED&bug_status=VERIFIED&email1=&emailtype1=substring&emailassigned_to1=1&emailreporter1=1&emailcc1=1&emaillongdesc1=1&email2=&emailtype2=substring&emailassigned_to2=1&emailreporter2=1&emailcc2=1&emaillongdesc2=1&changedin=&chfieldfrom=&chfieldto=Now&chfieldvalue=&short_desc=&short_desc_type=substring&long_desc=&long_desc_type=substring&bug_file_loc=&bug_file_loc_type=substring&status_whiteboard=&status_whiteboard_type=substring&keywords=&keywords_type=anywords&op_sys_details=&op_sys_details_type=substring&version_details=&version_details_type=substring&cmdtype=doit&newqueryname=&order=Reuse+same+sort+as+last+time&form_name=query">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 redirrect 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 attachement)</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>
|
|
|
|
<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
|
|
href="http://mail.gnome.org/archives/xslt/">archives </a>and the <a
|
|
href="http://bugs.gnome.org/db/pa/lgnome-xml.html">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>provice documentation fixes (either as patches to the code comments or
|
|
as 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>
|
|
</ol>
|
|
|
|
<h2><a name="Downloads">Downloads</a></h2>
|
|
|
|
<p>The latest versions of libxslt can be found on <a
|
|
href="ftp://xmlsoft.org/">xmlsoft.org</a> (<a
|
|
href="ftp://speakeasy.rpmfind.net/pub/libxml/">Seattle</a>, <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> either
|
|
as a <a href="ftp://ftp.gnome.org/pub/GNOME/unstable/sources/libxslt/">source
|
|
archive</a> or <a
|
|
href="ftp://ftp.gnome.org/pub/GNOME/contrib/redhat/SRPMS/">RPM packages</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:izlatkovic@daenet.de">Igor Zlatkovic</a> is now the maintainer
|
|
of the Windows port, <a
|
|
href="http://www.fh-frankfurt.de/~igor/projects/libxml/index.html">he provides
|
|
binaries</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/contribs/">contrib directory</a></p>
|
|
|
|
<p>Libxslt is also available from CVS:</p>
|
|
<ul>
|
|
<li><p>The <a
|
|
href="http://cvs.gnome.org/bonsai/rview.cgi?cvsroot=/cvs/gnome&dir=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>
|
|
</ul>
|
|
|
|
<h2><a name="News">News</a></h2>
|
|
|
|
<h3>CVS only : check the <a
|
|
href="http://cvs.gnome.org/lxr/source/libxslt/ChangeLog">Changelog</a> file
|
|
for a really accurate description</h3>
|
|
|
|
<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>fixed some variable evaluation problems (with William)</li>
|
|
<li>added profiling of stylesheed excution 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>
|
|
</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 Definitve
|
|
Guide) 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>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>
|
|
</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>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>Fixes for namespace handling when evaluating variables</li>
|
|
<li>XInclude global flag added to process XInclude on document() if
|
|
requested</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>
|
|
<li>fixed errors when handling ID in external parsed entities</li>
|
|
<li>document() should hopefully work correctly but ...</li>
|
|
<li>fixed bug with PI and comments processing</li>
|
|
<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>Fixed HTML default output detection</li>
|
|
<li>Fixed double attibute generation #54446</li>
|
|
<li>Fixed {{ handling in attributes #54451</li>
|
|
<li>More tests and speedups for DocBook document transformations</li>
|
|
<li>Fixed a really bad race like bug in xsltCopyTreeList()</li>
|
|
<li>added a documentation on the libxslt internals</li>
|
|
<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>
|
|
</ul>
|
|
|
|
<h3>0.9.0: May 3 2001</h3>
|
|
<ul>
|
|
<li>lot of various bugfixes, extended the regression suite</li>
|
|
<li>xsltproc shoudl 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 concurent processing on multithreaded
|
|
programs 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>fixes to current() and key()</li>
|
|
<li>other, smaller fixes, lots of testing with N Walsh DocBook HTML
|
|
stylesheets</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>
|
|
<li>added the XSLTMark in the regression tests as well as document()</li>
|
|
</ul>
|
|
|
|
<h3>0.6.0: Mar 22 2001</h3>
|
|
<ul>
|
|
<li>another beta</li>
|
|
<li>requires 2.3.5, which provide XPath expression compilation support</li>
|
|
<li>document() extension should fonction 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>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>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>
|
|
<li>some optimization</li>
|
|
<li>started implement extension support, not finished</li>
|
|
<li>implemented but not tested multiple file output</li>
|
|
</ul>
|
|
|
|
<h3>0.3.0: Feb 24 2001</h3>
|
|
<ul>
|
|
<li>third beta test, released at the same time of libxml2-2.3.2</li>
|
|
<li>lot of bug fixes</li>
|
|
<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>
|
|
</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>
|
|
</ul>
|
|
|
|
<h2>The xsltproc command line tool tool</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>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:~ -> xsltproc
|
|
Usage: xsltproc [options] stylesheet file [file ...]
|
|
Options:
|
|
--verbose or -v: show logs of what's happening
|
|
--timing: display the time used
|
|
--repeat: run the transformation 20 times
|
|
--debug: dump the tree of the result instead
|
|
--novalid: skip the Dtd loading phase
|
|
--noout: do not dump the result
|
|
--maxdepth val : increase the maximum depth
|
|
--html: the input document is(are) an HTML file(s)
|
|
--param name value
|
|
orchis:~ -></pre>
|
|
|
|
<h2>The programming API</h2>
|
|
|
|
<p>Okay this section is clearly incomplete. But integrating libxslt into your
|
|
application should be realatively 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:
|
|
<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>
|
|
|
|
<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, contibuted a number of patches and
|
|
spent quite some time debugging non-trivial problems in early versions of
|
|
libxslt</li>
|
|
<li><a href="mailto:izlatkovic@daenet.de">Igor Zlatkovic</a> is now the
|
|
maintainer of the Windows port, <a
|
|
href="http://www.fh-frankfurt.de/~igor/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> developped <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>
|
|
</ul>
|
|
|
|
<p>I'm still waiting for someone to contribute a simple XSLT processing module
|
|
for Apache :-)</p>
|
|
|
|
<p></p>
|
|
|
|
<p><a href="mailto:daniel@veillard.com">Daniel Veillard</a></p>
|
|
|
|
<p>$Id$</p>
|
|
</body>
|
|
</html>
|