XSL-FO (Formatting Objects)

XSL-FO (Extensible Stylesheet Language Formatting Objects) is a language for formatting [[Extensible Markup Language|XML]] data for output to screen, paper, or other media.

It is part of the [[XSL (Extensible Stylesheet Language)]] specifications, which also include [[XPath]] and [[XSLT (Extensible Stylesheet Language Transformations)|XSLT]]. XSL-FO is primarily used for generating and formatting documents like reports, invoices, and other printed materials from XML data.

XSL-FO is used to define the layout and formatting of pages in a document. This includes specifications for margins, headers, footers, page numbers, and other aspects of traditional page layout.

One of the primary uses of XSL-FO is to transform XML data into PDF files or other print-ready formats. It provides a way to control the presentation of content when printed. XSL-FO is often used in conjunction with XSLT. The XSLT transforms XML data into an XSL-FO document, which is then rendered into a PDF or other printable format by an XSL-FO processor.

The 'FO' in XSL-FO stands for Formatting Objects. These are XML elements that specify how the content is to be formatted. Examples include fo:block for blocks of text and fo:table for tables.

XSL-FO allows for detailed control over document formatting, enabling precise placement and styling of text, graphics, and other document elements. It is suitable for creating complex documents with varying layouts, such as technical manuals, scientific papers, and detailed financial reports.

Like [[CSS]] for [[HTML]], XSL-FO provides properties for styling elements, such as font size, color, alignment, and spacing. The output of XSL-FO is independent of the medium, meaning the same XSL-FO file can be used to generate output for different types of media.