BOOKMARK & SHARE Bookmark and Share
The Future of Your Document Is Here
RenderX logo
Contact Us

Download Now!

RenderX offers all our software on a trial basis so that our prospects can easily see why thousands of customers have selected XEP to meet their needs.

Why not download a trial version today and see for yourself!


Below are some XSL FO (XSLFO) schemata and validation tools developed at RenderX. Some of these tools have been used over time to validate input in various version of RenderX XEP.

Document Type Definition (DTD)

DTD-based validation provides an easy way to check the structure of XSL FO (XSLFO) documents. You only need a validating XML parser to use it. DTDs are supported by a vast number of tools, and can be used both for input validation and schema-aided editing. However, there are several limitations of DTD-based based validation in the case of XSL FO (XSLFO):

  • DTDs require an explicit reference to the DTD to be present in the document to be validated (as a system or public ID). This is very inconvenient in the case of XSL FO (XSLFO) documents generated dynamically — e.g. produced by an XSLT transformation;
  • DTD is not namespace-aware, while XSL FO (XSLFO) makes use of namespaces;
  • DTD cannot describe content models that depend on the tree context. XSL FO (XSLFO) uses context-dependent content models: allowed structure for a subtree may depend not only on ancestor elements but even on attribute values (for out-of-line elements and absolutely positioned containers);
  • Element order in the mixed content model is not completely free in XSL FO (e.g. “markers first” constraint); this cannot be expressed in a DTD;
  • Proper placement of properties and their values are hard to validate due to adoption of CSS inheritance model and use of expressions;

An unofficial document type definition for XSL Formatting Objects was developed at RenderX in 1999-2000. To the best of our knowledge, it was the first practical formal description for XSL FO (XSLFO). It was used to validate input data in RenderX XEP versions 1 and 2. The DTD presented on this page is a slightly updated version that includes some recent RenderX extensions.

XSL FO DTD: fo.dtd

XSLT Stylesheet

Another apppoach to validation is a use of rule-based language such as XSLT. This approach has been implemented as a dedicated XSLT stylesheet. XSLT is a powerful language and allows to create a validator as elaborate as necessary. Besides the detailed validation, it provides a means to classify validity violations by severity, guarantees improved readability of messages and proper namespace support. Unfortunately, the solution also has considerable drawbacks:

  • Although XSLT processor is a common tool, the XSLT-based validation requires much more resources then the DTD-based one;
  • Since validation data are expressed in a programming language, they cannot be used as a schema for visual XSL FO (XSLFO) editors or document builders.

XEP version 3 uses the stylesheet below to validate input data.

XSL FO DTD: folint.xsl

Relax NG Schema

The Relax NG schema language is superior to the DTD-based validation in every aspect. It combines expressive power to performance. In addition, it can be used by advanced XML editors for document building.

Compared to XSLT stylesheet, Relax NG has less evolved error-reporting mechanisms but guarantees higher performance. Thus the XSLT approach is more appropriate for manual validation (where validation report will be consumed directly by user), while Relax NG is more suitable for batch validation or validation of automatically generated documents where speed is an issue.

As a service to the XSL FO (XSLFO) community, RenderX developed a Relax NG schema for XSL FO (XSLFO).

RelaxNG schema modules:







Relax NG schema for XSL FO (XSLFO) was presented at XML Europe 2004 Conference in Amsterdam, Netherlands. A slightly revised conference paper as well as presentation slides are available. The official proceedings paper can be found at IDEAlliance website.


April 1, 2024
No xz-utils in RenderX products

No xz-utils in products.
We continuously monitor.
Always update to latest.
More news...

August 11, 2022
New Product Release: InGrid 1.0

EnMasse replacement:
More secure, faster;
plus REST API;
pure Java.
More news...

June 21, 2022
EnMasse 3.4 released

Security fixes:
No 64-bit SSL ciphers, XSS;
improved logging.
More news...

December 23, 2021
No Log4j in RenderX products

No Log4j in products.
We continuously monitor.
Always update to latest.
More news...

October 15, 2020
EnMasse 3.3 released

HTTP/1.1 server status;
performance improvements;
improved logging.
More news...

RenderX RSS RSS: Subscribe

Add to MyYahoo!