XSL-FO
# XSL-FO

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.

## Introduzione

L'idea alla base di XSL-FO è che l'utente non deve scrivere direttamente in linguaggio FO: è sufficiente creare un semplice documento XML e quindi trasformarlo utilizzando uno XSLT creato ad hoc, oppure scelto tra quelli disponibili per il tipo di documento in questione. L'XSLT converte l'XML in XSL-FO.

Una volta che l'XSL-FO è stato generato, viene quindi passato ad una applicazione denominata XSL-FO processor, responsabile della creazione del documento di stampa, il PDF o quant'altro. Il più comune formato di output è il documento PDF o PS, ma esistono anche processor in grado di generare HTML, documenti RTF o addirittura aprire una finestra di anteprima in cui viene mostrata la sequenza di pagine e il loro contenuto.

Alcuni tra i più noti processor XSL-FO:

* Apache FOP, su xmlgraphics.apache.org.
* Antenna House XSL Formatter, su antennahouse.com.
* Altova StyleVision, su altova.com.
* Ecrion Ultrascale, su ecrion.com.

## Possibili criticità

XSL-FO è nato con l'intento di descrivere documenti relativamente semplici, come ad esempio manuali tecnici, documenti commerciali e fatture. Benché possa essere e venga effettivamente utilizzato per esigenze più sofisticate, lo standard XSL-FO 1.1 non descrive in modo uniforme come possano essere soddisfatte determinate esigenze tipografiche o di layout, tanto che i diversi processor forniscono estensioni specifiche per soddisfare tali esigenze. Ad esempio, non esiste un modo standard per esprimere un concetto del tipo “se questa cosa si trova sulla stessa pagina di quest'altra, allora fai X, altrimenti fai Y”. La scelta di utilizzare le estensioni fornite da un certo processor piuttosto che un altro crea un legame a quella specifica implementazione di XSL-FO. Un legame tuttavia molto più lieve, rispetto a quello derivante dall'utilizzo di un sistema totalmente proprietario per la produzione dell'output in esame.

