[XML4Lib] tomkit, or sonne of axkit
Eric Lease Morgan
emorgan at nd.edu
Tue Nov 7 07:31:49 EST 2006
This note sings some praises for a Perl module called TomKit, or
Sonne of AxKit.
I have been spending the past month or so moving Infomotions from one
piece of hardware to another, but that is another story. In my new
implementation I have decided to use things like yum to a greater
extent. Generally speaking this gives me the freedom from compiling
bunches o' stuff and maintaining various distributions. On the other
hand, yum is not always "up-to-date" and things may not be compiled
into the distro's as I would desire.
One such thing was Apache and mod_perl. It has been long over due,
but I have (finally) upgraded to Apache 2.0. This is/was working fine
until I wanted to re-implement my water collection. Based on AxKit,
my water collection was suddenly dead in the... water because AxKit
does not work under Apache 2.0. I did my best to download and install
newer versions of AxKit, all to no avail. Moreover AxKit 2.0 seems to
be moving towards some kind of application server and totally away
from mod_perl. As I read deeper the documentation pointed me to a
similar application called TomKit. I had nothing to loose, so I
followed the lead.
TomKit, found on CPAN, is a set of mod_perl modules allowing you to
transform arbitrary XML with arbitrary XSL and output things like
HTML. This is exactly how my water collection was designed to function.
As I did a "make test" the distribution complained about the lack of
a module called Apache2::Request. Going back to CPAN I discovered the
need for an additional C library and accompanying Perl module written
by the author of TomKit. Compiling was tricky only because I did not
have the necessary include files for mod_perl. Back to yum. Search
for headers. Find them. Yum install. Configure. Make. Whew! Next I
had to make test for the C library, and the instructions told me to
move everything to /tmp because of permission issues. Fine.
Everything compiled, and installed. I then had to update httpd.conf
to include the new C library. I also had to bring my linking
definitions up-to-date (ldconfig).
Back to TomKit and everything installed painlessly. Perl Makefile.PL.
Make. Make test. Sudo make install.
I then edited my httpd.conf file to allow XML transformations. Going
on the examples from TomKit's POD I was stuck. Transformations did
not occur. I consistently got things like "file not found" errors. I
broke down and emailed the author. (He lives in Austria.) I got a
reply in less than thirty minutes. "Change this path", he said. Ta
da! That worked. Things transformed.
All was not perfect. My XML/XSL expects name/value pairs as
parameters thus altering the output. Email again. Reply quickly.
"Include this line in your httpd.conf configuration, and check out
the various t/*.t files." That didn't work. Sigh. Looking at the t/
*.t files I noticed none of them included the line to which the
author referred. Searching my file system I noticed the file in the
line was not even on my file system. Using subversion (which had
automatically been installed) I downloaded the author's development
tree, found the necessary file, and installed. Ta da! My name/value
pairs now worked.
My water collection is now all but moved from one machine to another,
all in less than forty-eight hours. In retrospect, the process was
not too difficult:
* Compile and install C library
* Install Perl modules
* Edit httpd.conf
* Create XML/XSL combinations
TomKit may or may not be 100% compatible with AxKit, but it includes
the functionality I require. As AxKit dies its slow death I was able
to migrate from one platform to another for a number of reasons:
1) I relied on standardized technology,
namely XML and XSLT.
2) The network allowed me to communicate
VERY quickly and directly with the
3) Open source software allowed me to
investigate alternatives and solutions
before making the ultimate commitment
in time and money.
Let's hear it for XML, the Internet, and open source software!
Alternatively, if you use AxKit and you want to migrate to Apache
2.0, then consider using TomKit.
Eric Lease Morgan
University Libraries of Notre Dame
More information about the XML4Lib