Extensible Stylesheet Language - Formatting Objects
eXtensible Stylesheet Language - Formatting Objects (český volný překlad: „formátovací objekty pro rozšiřitelný stylový jazyk“) je značkovací jazyk na bázi XML pro formátování dokumentů. XSL-FO je součástí XSL, sady W3C technologií určených pro transformaci a formátování XML dat.
Základy XSL-FO
Na rozdíl od kombinace HTML a CSS je XSL-FO spojeným prezentačním jazykem. Neobsahuje žádné sématntické značkování jako HTML. A na rozdíl od CSS, které upravuje prezentaci externího XML nebo HTML dokumentu, v sobě obsahuje veškerá data dokumentu.
Základní myšlenkou je, že uživatel nepíše dokument v XSL-FO, ale v jiném XML jazyce. Může použít XHTML, DocBook, TEI, ale i jakýkoli jiný XML jazyk. Dokument následně převede pomocí XSLT předpisu (který si vytvoří nebo někde získá) na XSL-FO.
Když vznikne XSL-FO dokument, předá se specializované aplikaci označované jako FO procesor. Ta převede XSL-FO dokument do formátu, který je čitelný, tisknutelný či obojí. Nejobvyklejšími výstupními formáty FO procesorů jsou PDF a PostScript, ale můžete se setkat i s jinými typy výstupů, jako například RTF či dokonce přímé grafické zobrazení do okna na displeji.
Jazyk XSLT původně vznikl pouze pro převod dokumentů do formátu XSL-FO, později začal být využíván v širším měřítku pro libovolné transformace. Dodnes je však někdo s XSL-FO směšován a můžete se setkat s názory, že XSLT je součástí XSL-FO. Transformace pomocí XSLT je mimořádně silná. Může zahrnovat automatické generování obsahu, odkazů, rejstříku a řadu dalších operací.
XSL-FO dokument se nepodobá PDF ani PostScriptu. Nepředepisuje přesný vzhled textu rozloženého na stránkách. Místo toho popisuje, jaké jsou vlastnosti stránky a kam má být umístěn jejich jednotlivý obsah. Z toho FO procesor odvodí, jak text konkrétně umístit v rámci hranic předepsaných FO dokumentem. XSL-FO dokonce připouští, že různé FO procesory vytvoří odlišný výstup.
Například některé FO procesory mohou rozdělovat slova, zatímco jiné se rozhodnou je nedělit. Mohou také používat odlišné algoritmy dělení slov. Výsledkem může být v mezních případech i velmi odlišný vzhled jednotlivých stránek. Existují i další případy, kdy XSL-FO umožňuje FO procesorům určitou míru volnosti v rozvržení výstupu.
Rozdíly v chování FO procesorů, vedoucí k nekonzistentním výsledkům, zpravidla nepředstavují problém. Hlavním účelem XSL-FO je totiž vytvářet stránkovaná, tištěná média. XSL-FO dokumenty jsou zpravidla používány jen jako mezistupeň, nejčastěji pro vytvoření PDF souborů či tištěných dokumentů. Teprve tato finální podoba dokumentů je distribuována. V tom se XSL-FO liší od HTML, které interpretuje každý prohlížeč sám. Uživatel, který chce vytvořit tištěný dokument, si může zvolit FO procesor vyhovující jeho nárokům na kvalitu výstupu a odlišnosti vzhledu jeho dokumentu při zpracování jinými procesory mu nijak nevadí.
Koncepce jazyka
Jazyk XSL-FO byl navržen pro stránkovaná média, podobně jako bylo HTML a CSS navrženo pro souvislá média (prezentovaná na obrazovce). Díky tomu je koncept stránek integrální součástí struktury jazyka a FO poskytují uživateli silné nástroje určující rozložení informací na jednotlivých stránkách.
FO pracuje nejlépe pro tak zvaný obsahem řízený design. Ten je standardním způsobem sazby knih, článků, právních dokumentů a podobných textů. Vychází ze základního, víceméně souvislého toku textu, který je doplňován o různé opakující se informace, umisťované na okraje stránky. Jeho protipólem je vzhledem řízený design, používaný v novinách a časopisech. V něm má vzhled stránky přednost a pokud se obsah nevejde do určeného místa, bude zkrácen. XSL-FO zvládá vzhledem řízený design jen obtížně, protože nedokáže vyjádřit některé jeho prvky.
Bez ohledu na základní charakter jazyka jsou vyjadřovací schopnosti FO velmi široké. Zvládá tabulky, seznamy, plovoucí prvky a řadu dalších prvků. Tyto vlastnosti jsou srovnatelné se vzhledovými schopnostmi CSS, nicméně u některých z nich se očekává, že budou vestavěny do XSLT.
Struktura XSL-FO dokumentu
XSL-FO dokumenty jsou XML dokumenty, ale nemusí vyhovovat žádnému DTD či schématu. Místo toho odpovídají syntaxi definované ve specifikaci XSL-FO.
Obsahují dvě povinné sekce. První definuje seznam pojmenovaných návrhů stránek. Ve druhé sekci je seznam dat dokumentu (včetně značkování), který se odkazuje na návrhy stránek, aby určil, jak obsah vyplňuje jednotlivé stránky.
Návrh stránky definuje vlastnosti stránky. Může definovat směr toku textu, aby vyhověl konvencím použitého jazyka. Určuje rozměry stránky a její okraje. Umožňuje definovat sekvence stránek, v nichž se rozlišuje vzhled sudých a lichých stránek. Například lze definovat sekvenci stránek s větším vnitřním okrajem, který bude využit pro vazbu tištěné publikace.
Část s daty dokumentu je rozdělena do sekvence toků, kde každý tok je spojen s určitým návrhem stránky. Tok obsahuje seznam bloků, z nichž každý obsahuje seznam textových dat, řádkových značkovacích prvků, případně kombinací obojího. Lze také přidávat obsah do okrajů dokumentu, například čísla stránek, názvy kapitol a podobně.
Bloky a řádkové prvky fungují velmi podobně jako v CSS, ačkoli se některá konkrétní pravidla pro okraje a výplň liší. Lze plně určit směr navazování bloků a řádkových prvků, relativně vůči orientaci stránky. To umožňuje používat FO dokumenty pro jazyky, jež se čtou jinak než angličtina. Na rozdíl od CSS 2.1 používá FO jazyk k popisu směru pojmy nezávislé na směru, jako je začátek a konec místo levý a pravý.
Základní značkování obsahu je v XSL-FO odvozeno z CSS a jeho kaskádovacích pravidel. Díky tomu se řada atributů dědí z rodiče na potomky, pokud nejsou explicitně změněny.
Viz též
Externí odkazy
- Specifikace XSL-FO 1.0
- Specifikace XSL-FO 1.1
- FOP - nejznámější FO procesor
- PassiveTeX - FO procesor používající LaTeX