White Papers/XSL 1.1 via XSLT

From Docs

Jump to: navigation, search


XSL-FO 1.1 via XSLT

The formatting core of DiType doesn't have (or has simplified) algoritms for some XSL-FO 1.1 features.
This is done intentionally.

One of the main goals of the formatter is high-speed execution of core formatting algorithms. Transformations of the formatting objects is a trivial task that can be done outside the kernel without loss of performance.
Don't bother the kernel with such problems. :)

XSLT is the right way and a good tool to implement the functionality related to object tree transformation.
So a part of XSL-FO 1.1 features is implemented via XSLT.

Page sequence wrapper

The formatting core doesn't accept the fo:page-sequence-wrapper element.

I've implemented a stylesheet that does the following:

  • eliminates this element, but keeps all fo:page-sequence descendants of it in an input FO.
  • all attributes (except the @id one) from this element are inherited by the corresponding child element.

The inheritence is meant according to XSL-FO 1.1 spec.

Note: the @id attribute is inherited from the fo:page-sequence-wrapper by the first (pre-document order) fo:page-sequence descendant (not child; fo:page-sequence-wrapper elements can be nested).


The formatting core does not accept the fo:folio-prefix and fo:folio-suffix elements [well, actually, it does, but uses only the text content, thus limiting the capabilities — DavidTolpin].

I've implemented a stylesheet that does the following:

  • substitutes descendants of the fo:folio-prefix/fo:folio-suffix elements in a proper place of the input FO tree

(i.e. before/after anchor elements - fo:page-number, fo:page-number-citation, and fo:page-number-citation-last)

  • selects the correct page-sequence that anchor elements refer to.

Note: Acording to XSL-FO 1.1 spec, the anchor elements cannot be descendants of the fo:folio-prefix and fo:folio-suffix elements.

TODO: the above statement needs to be checked in the stylesheet.

Alexei Gagarinov

Personal tools