# The EXSLT C library for Gnome

# libexslt

Libexslt is the EXSLT C library developed for libxslt (a part of the Gnome project). Much of the initial work on the library was done by Thomas Broyer. EXSLT itself is a community initiative to provide extensions to XSLT.

This library is free software and can be reused in commercial applications (see the intro)

Logo designed by Marc Liyanage.

## Introduction

This document describes libxslt, the XSLT C library developed for the Gnome project.

Here are some key points about libxslt:

- Libxslt is a C implementation
- Libxslt is based on libxml for XML parsing, tree manipulation and XPath support
- 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.
- This library is released under the MIT Licence
- Though not designed primarily with performances in mind, libxslt seems to be a relatively fast processor.

## Documentation

There are some on-line resources about using libxslt:

1. Check the API documentation 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).
2. Look at the mailing-list archive.
3. Of course since libxslt is based on libxml, it's a good idea to at least read libxml description

## Reporting bugs and getting help

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 Gnome bug tracking database (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. Be sure to specify that the bug is for the package libxslt.

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 guarantee and if a real issue is raised it should go on the mailing-list for archival).

There is also a mailing-list xslt@gnome.org for libxslt, with an on-line archive. To subscribe to this list, please visit the associated Web page and follow the instructions.

Alternatively, you can just send the bug to the xslt@gnome.org 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. Do not send code, I won't debug it (but patches are really appreciated!).

Check the following too before posting:

- use the search engine to get informations related to your problem.
- make sure you are using a recent version, and that the problem still shows up in those
- check the list archives to see if the problem was reported already, in this case there is probably a fix available, similarly check the registered open bugs
- 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
- Please send the command showing the error as well as the input and stylesheet (as an attachment)

Then send the bug with associated informations to reproduce it to the xslt@gnome.org 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.

To be really clear about support:

- Support or help request MUST be sent to the list or on bugzilla 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.
- There is no garantee for support, if your question remains unanswered after a week, repost it, making sure you gave all the detail needed and the informations requested.
- 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.

Of course, bugs reports with a suggested patch for fixing them will probably be processed faster.

If you're looking for help, a quick look at the list archive may actually provide the answer, I usually send source samples when answering libxslt usage questions. The auto-generated documentation is not as polished as I would like (I need to learn more about Docbook), but it's a good starting point.

## How to help

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 archives and the Gnome bug database::

1. provide patches when you find problems
2. 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
3. provide documentation fixes (either as patches to the code comments or as HTML diffs).
4. provide new documentations pieces (translations, examples, etc ...)
5. Check the TODO file and try to close one of the items
6. take one of the points raised in the archive or the bug database and provide a fix. Get in touch with me before to avoid synchronization problems and check that the suggested fix will fit in nicely :-)

## Downloads

The latest versions of libxslt can be found on xmlsoft.org (Seattle, France) or on the Gnome FTP server as a source archive, Antonin Sprinzl also provides a mirror in Austria. (NOTE that you need the libxml2, libxml2-devel, libxslt and libxslt-devel packages installed to compile applications using libxslt.) Igor Zlatkovic is now the maintainer of the Windows port, he provides binaries. Gary Pennington provides Solaris binaries. Steve Ball provides Mac Os X binaries.

Contribs:

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 contrib directory

Libxslt is also available from CVS:

- The Gnome CVS base. Check the Gnome CVS Tools page; the CVS module is libxslt.

- daily snapshots from CVS are also provided

Daniel Veillard