Programujeme s XML (8.) - XSL

XSL neboli eXtensible Stylesheet Language je prostředek, jenž nám umožní převádět naše XML dokumenty do jiných formátů.

20.7.2004 15:00 | Aleš Hakl | přečteno 15805×

XSL se skládá ze dvou význačných částí (web konzorcia W3C uvádí ještě navíc XPath, ale ten necháme na později):

XSL Transformations neboli XSLT je vlastní jádro XSL, které řeší konverze XML dokumentů na jiné dokumenty XML, případně HTML nebo text. Děje se tak pomocí takzvané XSLT šablony (XSLT Stylesheetu), což je opět XML dokument určující, jak se různé části původního dokumentu převedou do výsledného dokumentu. Jedná se o poměrně silný transformační jazyk, přičemž většinu implementací je možno doplnit o další funkce v podobě modulů napsaných v nějakém programovacím jazyce.

XSL Formating Objects je značkovací jazyk zaměřený na vzhled dokumentu, s jeho pomocí definujeme jak bude výstup vypadat. Tento jazyk se téměř výhradně používá pro formátování dokumentu pro tisk (případně výstup do formátu ve stylu PDF) a vzhledem k jeho komplexnosti se málokdy zapisuje ručně. Místo toho se pro generování formátovacích objektů používá právě výše zmíněné XSLT.

Celé XSL je tedy dohromady způsob konverze XML dokumentu na tištěný dokument, tak tedy bylo původně zamýšlené. Ovšem XSLT je natolik univerzální nástroj, že jej je možné použít na valnou většinu konverzí XML dokumentů na jiné formáty, a pro konverze různych typů dokumentů XML mezi sebou (například OpenOffice.org používá XSLT v některých importních a exportních filtrech a v novějších verzích dokonce umožňuje přidání uživatelských filtrů v podobě XSLT šablon).

Pro kompletní zpracování XSL tedy ve většině případů potřebujeme dva programové celky (úmyslně nepíšu programy, protože stejně dobře se může jednat o knihovny či třídy v jazyce Java, které použijeme v nějakém našem programu), a to XSLT Procesor a XSL:FO procesor. V prvním případě si můžeme vybrat z velké škály implementací, jež jsou většinou svobodný software:

Ovšem situace v oblasti XSL:FO procesorů není až tak růžová, můžeme si vybrat v podstatě ze dvou možností:

Samozřejmě existují komerční XSL:FO i XSLT procesory. Myslím ovšem, že jejich cena je dosti odrazující, zvlášť v případě existence ať již Free software nebo Open Source alternativ. Za druhé jim není potřeba dělat neplacenou reklamu, kdo má o takový procesor zájem, jistě najde vhodný sám.

Osobně budu v dalších dílech vše testovat pomocí libxslt a PassiveTeXu (protože na mém notebooku, kde budu nejspíše většinu článků psát, je Java nekonečně pomalá), ale zmíním se i ostatních možnostech, zejména o použití procesorů Xalan a FOP z Javy.

Myslím, že dnes můžeme naše povídání s klidem zakončit. Příště se vrhneme na praktickou ukázku jednoduché XSLT šablony pro převod našeho telefonního seznamu z minulých dílů do HTML.

Online verze článku: http://www.linuxsoft.cz/article.php?id_article=284