This appendix covers the tools that are currently available. I've placed this in an appendix simply because I didn't want the book to appear dated within months of it being on the shelves. Please keep in mind the general comments I made about tools in Chapter 2 when reading this.
XEP is an engine that converts XSL-FO documents to a printable form (PDF or PostScript). An evaluation package with limited functionality is freely available. It aligns with the November 2001 Recommendation. Extensions are included and partial SVG support is now available.
I think XEP is the most established product; it was certainly the first one I came across. Developed by a small and dedicated team, it's a commercial product, with an evaluation version available for download. The evaluation version is restricted in the number of pages it will output. It produces PDF and PostScript output. Its command-line interface is convenient, and it has good error reporting. It's developers, who are contributors on the XSL-FO related lists, are very helpful. Inputting of an XML file in the fo namespace, will deliver PDF in the evaluation version. An implementation features list is available on their web site, http://www.renderx.com. XEP is written in Java and runs on any system that supports Java 2 (JDK/JRE 1.1.8) and above. Their web site hosts many demonstration files, and they have provided the W3C with a PDF version of the Recommendation ready for printing.
Nearly a year old, the Antenna House Formatter is a fast implementation with a GUI. Ideal for testing, it's probably the fastest processor today. It's developers respond well to feedback. It is available as an evaluation download and as a commercial product. It provides the two-step process of conversion, direct from XML through the visual presentation, and it makes use of the Microsoft parser to transform to the fo namespace, which restricts its use to Windows. It provides a stylesheet to convert XHTML into the fo vocabulary. I like it as a product and find it very convenient. It is probably a prime choice for finding out all about XSL-FO. Its implementation feature list is available from their web site, http://www.antennahouse.com/.
This is an open source project. IT was originally based around James Tauber's early work, but was reorganized and taken well beyond the original. FOP is part of Apache's XML project. The goals of the Apache XML FOP Project are to deliver an XSL-FO to PDF formatter that is compliant to at least the basic conformance level described in the W3C Candidate Recommendation November 21, 2000, and that complies with the March 11, 1999, Portable Document Format Specification (Version 1.3) from Adobe Systems. An implementation features list is available on the web site, although, because it moves so fast, users do have problems determining if their problems are their interpretation of the specification, or if they are trying to use a feature not implemented in FOP. I guess this is an issue with most implementations, until specification interpretation becomes settled. It has the additional feature of supporting embedded SVG, but FOP is now subcontracting that work to the Batik project instead of handling it directly. It can be run from the command line or called via a Java interface. The home page of FOP is http://xml.apache.org/fop.
PassiveTEX is a partial implementation of the November 2001 XSL-FO Recommendation, using TEX. It is not complete or conformant but implements things from all three levels of conformance. I am not sure whether it has a long-term future, but for now, you can rely on it to do anything from straightforward pages to TEX's normal high standards of, for example, hyphenation and justification. It understands a subset of MathML. PassiveTEX relies on David Carlisle's xmltex XML processor written in TEX.
As its author, Sebastian Rahtz says, "If you have never installed TEX before, expect to have to do some work!" If you do have a decent TEX setup (and you understand it), it should be easy. Because Sebastian Rahtz and David Carlisle are very familiar with TEX, it makes full use of the strength of TEX. MathML is also processed, though not completely.
At the home page, http://users.ox.ac.uk/~rahtz/passivetex/, there are stylesheets for the Text Encoding Initiative, along with examples. A conformance matrix is also provided.
Unicorn Formatting Objects (UFO) implements a substantial subset of the Extensible Stylesheet Language (XSL) Version 1.0 specification (W3C Working Draft (March 27, 2000).
The UFO formatter is optimized for composition of business-style documents (e.g., catalogs, orders, invoices, banking statements, etc.). Extensive support is provided for various features (for instance, collapsing border model in tables), which are not yet supported by many existing XSL implementations.
The XSL-FO backend, written in TEX macro language, implements XSL-FO transformation algorithms. The interface between the C++ frontend and TEX backend is well documented. Alternative backend implementations may be created by independent developers. The generation of TEX code from an arbitrary source XML document can be done in one pass, without creating intermediate files.
The software is free (see the license included in the distribution) and can be obtained at the Unicorn web site, http://www.unicorn-enterprises.com/. It runs on Windows NT 4.0 and Windows 95.
Formatting Objects Authoring (FOA) is a graphical XSL-FO authoring tool. It is a Java application that gives users a graphical interface to author XSL-FO stylesheets. With FOA, you can generate pages and page sequences and fill them with content provided into one or more XML files. FOA will generate the XSLT stylesheet that transforms the XML content into an XSL-FO document.
This product approaches stylesheet design from quite a different angle. Using a Java GUI, a fill-in-the-gaps approach takes you through form filling to define page layouts and styles (attribute sets), then you can apply those styles to a selected document structure. If you come to XSL-FO from editing XML in the fo namespace, it takes some getting used to. It introduces the idea of bricks, which might be described as the building blocks of XSL-FO (i.e., blocks, images, inlines, etc.), which are then used to style the source document. The authors describe these as translation elements. I'm not sure whether this would appear natural if you came to XSL-FO with no manual stylesheet generation experience, though I guess, once familiar with the principles, it is a sound approach. A tutorial is provided, though no compliance matrix is available. The current FOA version does not support tables and tables of content, which some may find a shortcoming. The documentation is still being developed along with the product.
In use, the multiple open windows provide a complex interface, with a need to switch between windows frequently. Again, familiarity with the interface will make this easier. The intuitive XSL-FO approach, taking a part of the source XML structure and painting it with a particular style is the goal of this project (as I see it), and the product makes a very solid start in this direction.
The home page is at http://www-uk.hpl.hp.com/people/fabgia/foa/foa.html, and it includes the tutorial, which is worth watching for a novel approach to stylesheet generation.
As of February 2001, the project has become open source and moved to Sourceforge.
Render Engine from XML/XSL to PDF (REXP) provides the functionality to render complex documents with good quality.
The development started from an early implementation of FOP (Version 0.9.2) but has made several architectural modifications. The product addresses the processing of complicated documents, such as commercial letters, and focuses on adding support for page breaking, keeps, absolute positioning, and images (block level and inline level). Properties, such as keep-with-next, keep-with-previous, and page-break-inside="avoid", allow an efficient control on the document flow to designers. Special attention has been made around the line-rendering algorithm, to readjust the line height and baseline accurately, especially with inline images. REXP includes good document flow control (pagination rules and keeping support), absolute and relative positioning, inline and block level images (precise line-height and baseline calculation), but is compliant only with the April 1999 Working Draft Specification and lacks table and link support. The web site lists implemented properties, although not in the compliance format of the specification.
It is completely written in Java and is, therefore, portable across operating systems; its output is PDF and it is open source. Again, SVG is partially supported for vector graphics. REXP is engineered to be flexible and to support the expansion to other output formats such as PostScript and other Page Description Language (PDL) languages.
The home page for REXP is http://www.esng.dibe.unige.it/REXP/.
jfor is licensed under the Mozilla Public License V1.1., is written in Java, and produces Microsoft Word 97 RTF output documents. It's a SourceForge project, still at an early version, so it has limited support of FO blocks, inline elements, lists, tables, and images. Personally, I'm quite pleased to see a Microsoft-compatible output. Because this project is just starting, there is very little to report.
The home page is http://www.jfor.org/, which is worth watching if you or your customers are confirmed Office users.
The XMLmind FO Converter (XFC) is an XSL-FO to RTF converter. It takes an XSL-FO source file as input and converts it to RTF. XFC is a pure Java application/library.
Both personal and professional editions are offered. The first release is aimed at getting some feedback from the XSL-FO community. Though XFC is deemed usable in its current state, there's still much to be done, in my opinion. If everything goes right, expect a release of the commercial product in 2002. This version should add support of headers and footers as far as allowed by RTF, and should provide better support of tables. Note that RTF has less capability than XSL-FO, so remember that it must operate within those bounds.
For more information and to download the personal edition, please see the XFC home page at, http://www.xmlmind.com.
Based at http://www.xslfast.com, this product is based on FOP and written in Java. Described as a design and authoring tool for XSL-FO, this is another graphics-based application based around the FOP formatter. This product is very new, so I don't know it at all well. It was announced just before this book went to print. I like the idea of visual layout and see this as another step towards hiding the FO processing behind a visual layer. Good luck to the team developing it.
XSLfast is an editor for creating XSL-FO stylesheets visually. It allows you to place elements such as text, images, and tables on the page and edit properties such as font-family, font-style, and table-cell. These elements can be positioned absolutely or relatively.
XSLfast gives you the option to enter XSL-Code within the layout areas defined on a layout. You can add external template collections that produce partial or full FOs. For instance, a template for creating auto-layout tables with variable column sizes depending on the input data. You then use xsl:call-template to create these tables.
Another important feature is the Multi Layout Manager, which allows you to combine several layouts into one, driving the creation of FOs on a certain selection by expressions (Boolean XPath expressions). For instance, you create a front page, one or more content layouts, and a table of contents layout, then combine all these into one bigger layout with the Multi Layout Manager to get one PDF.
These layouts then produce the XSL-FO stylesheet, which then produces the FO file, which is then rendered to PDF.
Epic is well known as the Rolls Royce of XML (and SGML) editors. The latest release (Version 4.2) is designed for creating XML and SGML content. The challenge of showing something other than a tags-based user view meant that Arbortext provided a styled view of content. In addition to an older standard called FOSI, Arbortext now provides XSL-FO capability, using what they call the Turbo Styler feature. The editor is just one piece of a full publishing system, detailed on the Arbortext web site, http://www.arbortext.com/html/products.html. Windows NT 4.0, 95, 98, 2000, and Sun Solaris 7 and 8 are supported. The editor continuously applies a stylesheet that gives the content a print or web appearance. Arbortext has been in the SGML and XML business for 12 years and has staff on the XSL Working Group of the W3C, which provides something of an inside track that strengthens its position. The XSL-FO offering is new, and with Arbortext's background and experience, I had expected something quite special and was not disappointed.
The stylesheet aspects of this product are similar to using a word processor. Each element of the source schema is presented in a list, where you are offered base options of block or inline styling. Block type elements are further sub-divided into categories, such as divisions, lists, basic blocks, etc. As one of these is selected, the associated styling options are modified live, presenting appropriate refinement options. For example, divisions can be numbered, start a new page, be indented, or have preceding literal content. This is about as familiar as it gets when trying to make the association between this form of styling and XSL-FO. For the technical author, this interface may well be ideal. Base categories are presented as block, graphic, table, inline, link, or even hidden (for items such as revision histories that should not be presented to the user). Block categories are basic, document, division, title, paragraph, list, list item, table of contents, or preformatted. To further guide the user, inappropriate options are grayed out when inappropriate. Unstyled elements are marked as such (which saves having that default template and going through the loop time after time!) to inform the stylesheet writer.
The integration with the editor is what makes this product different. For an organization that requires cooperative team authoring with high-quality print output, this product could provide the solution. Equally, for a user unused to the programmatic interface of XSLT and XSL-FO, this tool provides an interface that, although complex, is competent and comprehensive. Be aware of what you are buying though. You get the basics and extras don't come cheap. Check out the options list before committing.
This is a processor that does the same job as other formatters, plus a little more. The user can choose whether to create a PDF file or a Java2D output for online viewing in a Java environment. The PDF output is business as usual, but the Java2D is added-value for those working (and at home) in a Java environment.
XSL Formatting Objects Composer (XFC) is a typesetting and display engine that implements a substantial portion of XSL-FO. A compliance table is available and can be found at the IBM web site, http://www.alphaworks.ibm.com/tech/xfc.
Now that the specification has become a W3C Recommendation, the tool developers should have the confidence to carry on at less risk, which may provide incentive for others to follow. If you are curious and want to have a look at XSL-FO, the tools are available in the public domain at zero cost. If you are convinced and prepared to invest as an organization, commercial tools are available with support. Whether you pick up a text editor to write on your own or invest in a site license for the Arbortext product, there are many options available.
My personal choice, today, would extend from the open source PassiveTEX, through the commercial RenderX or Antenna House products for the programmers, to the Epic Editor suite (when I have a need for a standards-based integrated environment). Each has a place; no single implementation will be suitable for all users.
Because this information will date rather quickly, please keep an eye on the web page for this book, the author's web site, at http://www.dpawson.co.uk .