Article Index
Základ XSL:FO
Transformace jsou schopny vypisovat data z xml formátu do jiného. Například výpis evidence v XML formátu do HTML. Pokud je potřeba výstup formátovat, například pro tištěné materiály, musíme použít XSL:FO - formating object. XSL:FO vytvářejí stránkovaný výstup - vše se musí přizpůsobit oblasti, která je na daném rozměru určena pro obsah.
Příklad může být formát bakalářské práce - papír má mít formát A4 - tedy 297mm x 210mm, okraje jsou pak nahoře 30mm, dole 25mm, vlevo 35mm a vpravo 20mm. Plus musíme počítat s místem na záhlaví a zápatí - minimálně pro číslování stran. Pro obsah je tedy maximální plocha 242mm x 165mm.
Stejně jako u XSLT jsou základním stavebním kamenem šablony. Vzhledem k tomu, že u FO nedochází k manipulaci s elementy, ale s formátováním, jedná se o tyto složky:
- page - stránka
- region - dílčí části stránky
- block - části obsahu (odstavec)
- line - řádek
- inline - část řádku
Hlavní složkou FO je deklarace stránky - její rozměry a okraje. Stanovují se základní rozměry pro další formátování. Stránka se dělí na jednotlivé složky - regiony:
- region-body
- region-before
- region-after
- region-start
- region-end
Plus jednotlivé okraje.
Jednoduchý dokument
<?xml version="1.0" encoding="UTF-8"?>
<fo:root xmlns:fo="http://www.w3.org/1999/XSL/Format">
<fo:layout-master-set>
<!-- Zde definujeme vlastnosti stránky - od těchto rozměrů se bude odvíjet velikost a vzhled dokumentu -->
<fo:simple-page-master master-name="A4"
page-height="297mm" page-width="210mm"
> margin="10mm"
</fo:simple-page-master>
</fo:layout-master-set>
<fo:page-sequence master-reference="A4"> <!-- Posloupnost stránek, můžeme například definovat zvlášť liché a sudé stránky -->
<fo:flow flow-name="xsl-region-body">
<fo:block>Budoucí text na stránce</fo:block>
</fo:flow>
<fo:static-content flow-name="xsl-region-after"> <!-- Statický obsah je na každé straně stejný - zde vkládáme číslo stránky do prostoru pod obsah. -->
<fo:block>
<xsl:text>Strana </xsl:text> <fo:page-number/>
</fo:block>
</fo:static-content>
</fo:page-sequence>
</fo:root>
Základní osnova dokumentu je hotová, máme připravenou stránku A4, jenom musíme doplnit obsah - tedy text pro zadání práce. Pomocí XSLT vybereme požadované texty a vložíme je na své místo v dokumentu pomocí dalších XSL:FO elementů.
Obsahová stránka
Seznam
<fo:list-block>
<fo:list-item><!-- jednotlivá položka seznamu -->
<fo:list-item-label>
<fo:block>-</fo:block> <!-- uvození položky seznamu -->
</fo:list-item-label>
<fo:list-item-body><!-- položka seznamu - její text -->
<fo:block>Spitfire I</fo:block> <!-- blok s textem položky -->
</fo:list-item-body>
</fo:list-item>
<fo:list-item>
<fo:list-item-label>
<fo:block>-</fo:block>
</fo:list-item-label>
<fo:list-item-body>
<fo:block>Spitfire II</fo:block>
</fo:list-item-body>
</fo:list-item>
</fo:list-block>
Tabulka
<fo:table-and-caption> <!-- základní značka uvozující tabulku -->
<fo:table><!-- tabulka -->
<fo:table-column column-width="25mm"/><!-- minimální šířka prvního sloupce -->
<fo:table-column column-width="25mm"/><!-- minimální šířka druhého sloupce -->
<fo:table-header><!-- úvodní řádek tabulky - hlavička (popisky sloupců) -->
<fo:table-row><!-- řádek tabulky -->
<fo:table-cell><!-- buňka tabulky -->
<fo:block font-weight="bold">Výrobce</fo:block><!-- blok s textem -->
</fo:table-cell>
<fo:table-cell>
<fo:block font-weight="bold">Model</fo:block>
</fo:table-cell>
</fo:table-row>
</fo:table-header>
<fo:table-body><!-- tělo tabulky s hodnotami -->
<fo:table-row>
<fo:table-cell>
<fo:block>Revell</fo:block>
</fo:table-cell>
<fo:table-cell>
<fo:block>Spitfire Mk. I</fo:block>
</fo:table-cell>
</fo:table-row>
<fo:table-row>
<fo:table-cell>
<fo:block>Airfix</fo:block>
</fo:table-cell>
<fo:table-cell>
<fo:block>JAS-39C Gripen</fo:block>
</fo:table-cell>
</fo:table-row>
</fo:table-body>
</fo:table>
</fo:table-and-caption>
- Prev
- Next >>