Home > Guide pratiche > Xml > Formattare con Xsl:Fo

Novità Web

Valutazione accessibilità di
Paolobarbaglia.com in corso

 

Aggiornamenti Guide

Formattare con Xsl:Fo
Formattare con Xsl:Fo PDF Stampa E-mail
Scritto da Paolo Barbaglia   

Nella lezione precedente abbiamo imparato a usare Xsl per formattare un documento Xml e trasformarlo in un documento Html.

Oggi impareremo, partendo sempre dal nostro solito documento Xml, a trasformarlo in documento Pdf.
La trasformazione in documento Pdf si compone di due parti; la prima è la trasformazione del documento, attraverso l'applicazione di un foglio di stile Xsl per ottenere un documento Xsl:Fo, dove Fo sta per Formatting Objects.

Questo speciale tipo di documento può essere elaborato, tramite un motore di formattazione come ad esempio FOP, per essere trasformato in pdf, awt, mif, pcl, ps, txt, svg e at. Alcuni editor xml come "Xml Spy" sono in grado di utilizzare FOP all'interno dei loro ambienti, senza preoccuparvi di scrivere istruzioni da linea di comando.

Iniziamo come al solito da un semplice esempio.

<?xml version="1.0"?>
<?xml-stylesheet type="text/xsl" href="/8.1.xsl"?>
<clienti>
Elenco dei clienti
</clienti>

Come potete vedere il documento xml è molto elementare, ora dobbiamo costruire il documento Xsl per trasformare il documento Xml; dopo la trasformazione otteremo un documento Xsl:Fo. (I marcatori sottolineati sono quelli per la trasformazione)

Ecco il file Xsl:

<?xml version="1.0"?>
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:fo="http://www.w3.org/1999/XSL/Format">


<xsl:template match="/">
<fo:root
xmlns:fo="http://www.w3.org/1999/XSL/Format">
<fo:layout-master-set>
<fo:simple-page-master
master-name="simpleA4"
page-height="29.7cm"
page-width="21cm"
margin-top="2cm"
margin-bottom="2cm"
margin-left="2cm"
margin-right="2cm">
<fo:region-body/>
</fo:simple-page-master>
</fo:layout-master-set>
<fo:page-sequence
master-reference="simpleA4">
<fo:flow flow-name="xsl-region-body">
<fo:block>
<xsl:value-of select="clienti"/>
</fo:block>
</fo:flow>
</fo:page-sequence>
</fo:root>
</xsl:template>
</xsl:stylesheet>

Come potete vedere anche se l'esempio è semplice il file per la trasformazione è abbastanza complesso, in quanto contiene 2 tipi differenti di tag; nel namespace dedicato a Xsl:Fo sono presenti 56 differenti oggetti che possono essere associati a 177 diverse proprietà.

Alcuni marcatori ve li avevo già presentati quindi non sto qui a riscrivere il loro significato, però vi spiego i nuovi marcatori che vi servono per comporre il file Xsl:Fo.

La radice del documento è <fo:root> che può contenere i marcatori <fo:layout-master-set> e <fo:page-sequence>;il primo marcatore identifica i layout disponibili, ciascuno contenute all'interno di un elemento <fo:simple-page-master>. Nell'esempio precedente è presente solo un layout che contiene tutte le informazioni di dimensionamento.

L'elemento <fo:simple-page-master> ha un attributo che lo identifica univocamente: master-name="simpleA4", a questo elemento viene associato un attributo: master-reference="simpleA4" che consente di associare un elemento <fo:page-sequence> con il rispettivo <fo:simple-page-master>.

L'elemento <fo:page-sequence> contiene la sequenza di pagine associate ad un determinato layout. Al suo interno troviamo l'elemento <fo:flow> che è destinato a contenere tutte le informazioni testuali. Ogni informazione è contenuta negli elementi figli <fo:block>.

Trackback(0)
Commenti (0)Add Comment

Scrivi commento
smaller | bigger

security code
Scrivi i caratteri mostrati


busy
 
Valid xhtml
Valid css
Valid rss
PB Blog
PB Guide
ItaliaWebstar