Transform engines implement the XSL Transformations (XSLT) Recommendation. This recommendation, made in November 1999, has found general utility as a language for specifying transformations from one XML language to another. It is fundamental to XSL because it is the language used to transform content markup into FO.
There are several implementations of XSLT. Most formatters now incorporate one of them to complete an end-to-end typesetting solution for XML, which means that you will not have to download a transform engine separately and integrate it with a formatter to get going with FO.
Transform engines and the formatters that incorporate them will accept a style sheet and a source document as input. The transform engines output a result document as a file. XSL processors stream the result directly into the typesetting engine to produce formatted output, such as PDF. Figure 3.1 shows the general model. The transformation step produces FO from an input source document and style sheet. The formatting step takes FO to some output. Most of the formatters mentioned in the next section will function given FO data from a separate transformation step or as complete XSL processors that directly incorporate the transformation step.
Figure 3.1 General XSL processing stream model.
The transform engines by themselves may be of interest for diagnostic purposes, experimentation, and for understanding the transformation component incorporated into a formatter. Two major transform engines are Xt and Xalan.
Xt was written by James Clark, the editor of the XSLT recommendation. It is very fast and capable. Download Xt from http://www.jclark.com/xml/.
Xalan was originally written in Java by Scott Boag at Lotus. It is now an open source project at Apache with Java and C++ implementations. You will find them at http://xml.apache.org/xalan-j and http://xml.apache.org/xalan-c.