L'XSL-FO (acronimo di Extensible Stylesheet Language Formatting Objects) è un linguaggio di markup che consente di formattare i dati contenuti in un documento XML, per la successiva visualizzazione a video, la stampa o la conversione in formati particolari come PDF, PS o altro. XSL-FO è stato riconosciuto come standard dal W3C nell'ottobre 2001. La versione corrente di XSL-FO è la 1.1, da specifica W3C del dicembre 2006.
XSL-FO è parte di XSL, termine con il quale si indicano le tre distinte raccomandazioni del W3C in tema di formattazione e trasformazione dei dati XML: XSLT per la trasformazione, XSL-FO per la formattazione e XPath per la navigazione del documento XML.