A communiqué from Eduardo Gutentag describes the release of the Sun xmlroff XSL formatter as a SourceForge project. The xmlroff XSL Formatter "is written in C and currently produces PDF output using the PDFlib library. It uses libxml2 and libxslt plus the GLib, GObject and Pango libraries that underlie GTK+ and GNOME, although it does not require either GTK+ or GNOME. xmlroff represents Sun's newest open source donation is an implementation of the W3C's Extensible Stylesheet Language specification, also known as the Extensible Stylesheet Language Formatting Objects specification (XSL-FO). Drawing on previous work in CSS2 and DSSSL and and other information formatting standards, XSL-FO defines a collection of page layout semantics in XML -- such as page numbering -- that makes it easier for data to be both easily navigable through Web-based readers, such as Web browsers or PDF readers, as well as cleanly read when printed. Sun's open source XSL-FO engine helps developers to create consistent formatting results for published data across an array of languages, which equals lower costs through reduced development time and minimized errors and is designed to support full internationalization.
The Sun xmlroff XSL Formatter was initially announced by Tony Graham (XML Technology Center, Sun Microsystems Ireland). Tony gave a presentation on 2002-12-11 at the XML 2002 Conference on the topic "Sun XSL Formatter Goes Open Source". The presentation described the new XSL formatter developed by Sun Microsystems and featured a public introduction to the formatter, together with the first call for participation to join in further development.
An Overview document supplies a Context Diagram to visualize the operation of xmlroff. Excerpts follow:
The Source XML to Result Tree stage "transforms the source XML into a representation of the formatting objects that are used to direct the formatting. The inputs to xmlroff are an XML document that is to be formatted -- typically described as the "source" document -- and the XSL stylesheet that specifies the transformation of the source XML document into the XML vocabulary used for specifying formatting objects and their properties..."
"The mechanics of the XSLT transformation, from source XML to a different XML document, is standardized by the XSL Recommendation. Actually, it is standardized by the separate XSLT Recommendation. XSLT is conceptually part of XSL, and in early drafts of XSL, the XSLT specification was in one section and the formatting objects' descriptions were in another. XSLT was broken out as a separate W3C Recommendation because it now has widespread use for general XML-XML, XML-HTML, and XML-text transformations in addition to its initial purpose of transforming arbitrary XML into the specific XML vocabulary used for expressing formatting objects and their properties. A beneficial side effect of XSLT's success is the availability of a choice of free, stable, and high performance XSLT processors that can be incorporated into xmlroff as the much preferred alternative to writing an XSLT processor. Accordingly, xmlroff incorporates Daniel Velliard's libxslt XSLT processor..."
The Result Tree to Formatting Object and Area Trees processing stage "transforms the result tree into a tree of real programmatic objects with properties that are expressed as numeric, boolean, color, or other datatypes (instead of just text). The result tree is a representation of an XML document. XML documents are just text, so in the result tree, formatting object and property names are represented as text, as are property values. Some property values, however, represent numeric quantities, and many may contain expressions that need to be evaluated to determine the exact value to use. Furthermore, there are complex interactions and dependencies between formatting objects and between properties. This stage also creates the area tree representation of the formatted document layed out onto pages...
The Area Tree Adjustment stage "works on the area tree as a whole to optimize the arrangement of the areas. Creating each page in isolation produces a workable result, but there can be dependencies between pages; for example, page number citations to other pages..."
The Area Tree to Output stage "writes out the area tree in a format that can be used by other programs or sent to a printer. The initial output format is PDF..."
A proposed sequence for implementing XSL formatting objects for visual presentation in xmlroff is provided in the documentation. "It covers all formatting objects and their properties. It will be possible to declare success without implementing every formatting object and property, but presenting the complete list here makes it easy to account for everything. As an open-source project, however, xmlroff will progress as its developers have the inclination and energy. Developers are free to 'scratch where it itches' and implement formatting objects and properties in any order. The formatting objects and properties are presented in a sequence in which they are expected to be first implemented correctly. The accuracy of the predicted implementation sequence is inversely proportional (at least) to the stage number: the early stages are more likely to be implemented in the order shown, but the sequence of implementing later stages (if they are implemented at all) is more likely to change for higher numbered stages. Implementation is proposed to happen in several phases, each of which covers multiple stages..."
Testers and contributors needed...
A followup message from Tony Graham (Sun XML Technology Center, Dublin): "...xmlroff now needs people to try it out and, ideally, contribute to it. xmlroff does not yet match the functionality of FOP or of the commercial implementations. The 'Compliance' page shows what is implemented, and the 'Examples' pages show a bit of xmlroff in action. Bugs can be reported on the SourceForge bug tracker available from http://sourceforge.net/projects/xmlroff/, there is an xmlroff-list mailing list, and there is a Wiki on the project homepage at http://xmlroff.sourceforge.net/, so there is no shortage of ways of communicating about xmlroff..." Source: the Mulberry XSL List, 2003-02-20.
- SourceForge Project: Sun xmlroff XSL Formatter
- Sun xmlroff XSL formatter website
- Sun xmlroff Overview
- Implementation Plan
- Conformance "xmlroff is a visual formatter for non-interactive media. xmlroff implements a range of formatting objects and properties from the Basic, Extended, and Complete conformance levels..."
- Xmlroff-list. See the archives. Subscribe from the web interface, or send email to email@example.com. Post messages to firstname.lastname@example.org. The Xmlroff-list list is run by email@example.com.
- "Sun xmlroff XSL Formatter." Note of December 13, 2002.
- "XSL/XSLT Software Support" - Main reference page.
- "Extensible Stylesheet Language (XSL/XSLT)" - Main reference page.