catchXSL! is a tool to profile XSL transformations in a processor-dependent way.
In the course of the transformation every single XSLT instruction is recorded and logged as a
"style event" provided with a time stamp. The resulting statistics give information about
the transformation proceedings and hence deliver useful hints for style-sheet improvements.
A detailed listing of the style events gives information about every single step and its duration. A template oriented listing shows the time spent in each template and thus may indicate some time-consuming 'hot spots' in the style-sheet. By increasing the number of transformation runs it is also possible to get average data of higher statistical significance. This feature also exhibits performance-improvements gained by some processors using caching-strategies.
catchXSL! is written in Java and V1.2 now comes with a Swing based user interface:
Sill, it has a useful command line interface which delivers the profiling results as either text, HTML or XML. All you need is a Java virtual machine, an XSLT processor and of course your XSL file together with the input source. catchXSL! supports the processors Saxon and Xalan-Java2. (see Platforms and processors) Saxon and Xalan fulfil the XSLT 1.0 specification and are the ones who give us a chance to profile at all. They provide a "tracing" interface to record the XSLT instructions, but each processor has its own interface!
There's no common API yet for tracing XSLT but maybe
our investigations in this direction gives some input for SUN's effort of standardising interfaces.
Roughly spoken, we have found a common base to support both processors, so that the resulting
event statistics are not differing significantly in the listing of the events and their types
(they will of course differ in run times J ).