Scheduled: Iterative Software room on Friday at 16:00-16:20 (paper # 35)
Abstract: AxKit is a package integrating flexible XML processing management into Apache/mod_perl environment. It comes with wide range of configuration options and programming hooks that allow fine tuning of processes that will be run on input XML data. Originally written and maintained by Matt Sergeant, it adopts quickly to changing world of XML tools and adds supports for most of popular ones.
This presentation will introduce the AxKit architecture and steps that are done during a data processing. Simple setups will be shown, but focus will be put on explaining concepts of various stages and hooks. Overview of available processors (XSLT, XPS) and trends will be mentioned.
XML (Extensible Markup Language) is
It can be used to store structured information.
But people prefer other formats for their daily work, namely HTML or PDF.
XML can be transformed into other formats, using many ways. Usually the input XML, some transforming engine and a stylesheet are involved.
Let's store data in XML and process it into other formats on demand.
Written by Matt Sergeant, it makes on-the-fly XML transformation easy. Easier.
It supports a lot of transforming and generation engines, LibXSLT and Sablotron for XSLT (Extensible Stylesheet Language Transformations), XPathScript for transformations written in Perl in more or less declarative way, or XSP for XML generation with code embedded into XML source and with extensions in form of taglibs, to name a few.
It also bundles other utility functions, like charset transformation on output or gzipping the output.
Its main purpose is to provide framework in which order of transformations and type of processing can be configured without programming, using configuration options or processing instructions.
AxKit works with Apache in mod_perl environment, so these better be working first, and a couple of other modules will be required during installation. Using perl -MCPAN -e shell will try to fetch the prerequisites but some adjustment may be needed, especially if external libraries are installed in nonstandard places.
AxKit is the enabled and configured using
PerlModule AxKitin httpd.conf which loads the whole thing. For certain files, directories or locations, AxKit is then enabled using
SetHandler perl-script PerlHandler AxKitand we'd better also say what transformation engine should be applied for certain style:
AxAddStyleMap text/xslt Apache::AxKit::Language::LibXSLT
If our source XML file contains processing instruction
AxKit will know that the LibXSLT library should be invoked to do the transformation, using the stylesheet file.xslt.
AxKit comes with large number of configuration options that can be used to alter its transformation behavior. We can use httpd.conf file to say what processors and what transformations should be run, based on URI or media of the request or DOCTYPE, DTD or other features of the source XML file.
Should available configuration options fail to provide enough flexibility for our setup, we can always resort to extending AxKit with our modules, that will be deployed by proper configuration.
As more processors can be run on one source to achieve step-by-step transformation, care must be taken when producing the output. If the next processor expects to work on well formed XML, the previous one has to provide it. On the other hand, with AxKit it is possible to put into the chain transformations that do not work on XML at all and are pure text processing done on text stream.
XSLT is a W3C standard for transformation of XML documents. Stylesheets contain templates for elements, attributes and other parts of input XML, and output document mixed with other elements of XSLT transformation that can process the input. External processors, Sablotron or LibXSLT, are called to do the actual work..
XPathScript includes Perl code inside of output markup, and this code can declaratively specify actions that should be done with subdocuments of the input XML, based on element names.
XSP is templating scheme that uses special XML element to include dynamic content into static markup. Inside element <xsp:expr>, any arbitrary Perl code can be included. Special sets of elements, defined by taglibs, can be used to use functionality from external modules, while avoiding Perl code in XSP pages.
AxKit is written in Perl and runs in mod_perl environment. Customized modules can be added to extend its functionality both to support more transformers or data producers, and to do specialized fine-tuning tasks. Modules are run under mod_perl which gives them full access to Apache's internals.
Already now the choice of tools bundled with AxKit is wide and Matt is planning for more. From DocBook presentation of source XML documents to cascades of transformations of dynamic content, the framework is worth to be considered.