xmlroff

Tool Name:  xmlroff

Contact Information:

xmlroff-list@lists.sourceforge.net

Website:  http://xmlroff.sourceforge.net/

 

Price:  Free

 

Brief Product Description:

xmlroff is an open source XSL formatter written in C. 

xmlroff uses libxml2, libxslt, and the Glib, GObject, and Pango libraries that underlie GTK+ and GNOME (although it does not require either GTK+ or GNOME). GLib and GObject provide a utility library and an object-oriented framework, respectively, and Pango is a framework for the layout and rendering of internationalized text.

xmlroff produces PDF and PostScript output using the GNOME Print library, or PDF output using the PDFlib library.

xmlroff is a command-line program, but the bulk of the XSL formatting is implemented in the 'libfo' library that can be linked with any program that requires XSL formatting capability.

xmlroff is available under the BSD license.

 

Intended Product Use (market, environment, target documents, etc.):

Batch processing, e.g., business documents such as invoices or documentation such as software manuals, etc.

 

How much of the XSL-FO specification does your product support (that is, of the FO elements and attributes how many does your product process correctly)?:

Approaching "Basic" conformance.

 

Do you use extensions to XSL-FO? If so, please describe:

No.

 

What is the most important feature/capability of your product:

xmlroff is, by design, an internationalized XSL formatter.

Since xmlroff is designed for internationized text, it supports bidirectional text and Chinese, Japanese, and Korean text, to which is being Thai, Indic scripts, and other scripts supported by Pango.

Since xmlroff is a purpose-built XSL formatter, it cuts no corners in supporting the XSL area model and expression language. Because of this, xmlroff even handles the often-problematic property value expressions based on percentages of the current IPD, etc. The xmlroff design also includes the "area-tree adjustment" feature for refining the entire document instead of just formatting each page in isolation.