Appendix A. How Do I Do That?

This appendix covers some of the common questions that are asked about XSL-FO, but are not answered by the Recommendation. Usually someone has thought about it and found an answer by using (or misusing, depending on your point of view) one aspect or another of the Recommendation.

I’m used to using <xsl:preserve-space> to keep my whitespace in XSLT. Why doesn’t it work in XSL-FO?

This is a case of working in the right domain. The xsl:* elements control spaces in the resulting XSL-FO file only; these hints don’t even arrive at the formatter.

Whitespace handling in XSL-FO is controlled by a substantial set of specialized properties: space-treatment , linefeed-treatment, white-space-collapse , wrap-option, and white-space (a CSS2-compatibility shorthand).

I can’t find a particular property on a particular element.

Note that not all properties are listed for all elements. Often the Recommendation will list them by some form of abstraction, such as border properties. This means that it’s necessary to go hunting to find out if the property is available. Often, it is quicker to try it and see if it is supported by your formatter. Another option is to use the DTD provided by RenderX, and see if the fo file will validate to it. This is not guaranteed to work, but is very helpful. It does mean working in the fo namespace, but that often provides the answer that you can take back to the XSLT domain.

Can I create a newspaper-style layout: part of the page with ...

Get XSL-FO now with the O’Reilly learning platform.

O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.