Un documento XSL-FO es un documento XML en el que se especifica cómo se van a formatear unos datos para presentarlos en pantalla, papel u otros medios. El significado de las siglas XSL-FO es eXtensible Stylesheet Language Formatting Objects. Hay que destacar que en el documento XSL-FO figuran tanto los datos como el formato que se les va a aplicar.
La unidad básica de trabajo en un documento XSL-FO es el "Formating Object", unidad básica para presentar (formatear) la información. Estos objetos de formato se refieren a páginas, párrafos, tablas, etc.
Este es un breve ejemplo de documento XSL-FO:
<?xml version="1.0" encoding="utf-8"?>
<fo:root xmlns:fo="http://www.w3.org/1999/XSL/Format">
<fo:layout-master-set>
<fo:simple-page-master master-name="hola"
page-height="29.7cm"
page-width="21cm"
margin-top="5mm"
margin-bottom="10mm"
margin-left="20mm"
margin-right="20mm">
<fo:region-body margin-top="10mm" margin-bottom="10mm" />
</fo:simple-page-master>
</fo:layout-master-set>
<fo:page-sequence master-reference="hola">
<fo:flow>
<fo:block>Hola, mundo</fo:block>
</fo:flow>
</fo:page-sequence>
</fo:root>
Para obtener el documento XSL-FO pueden seguirse dos vías:
Cuando se tiene el documento XSL-FO, puede ser procesado por un programa llamado "procesador de XSL-FO" para obtener el documento final en distintos formatos. El formato final más utilizado es el PDF.
Los procesadores XSL-FO libres más conocidos son FOP y PassiveTeX.
XSL-FO es una recomendación del World Wide Web Consortium. El nombre oficial de la recomendación es Extensible Stylesheet Language (XSL) y no XSL-FO.