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 | czytane 16419×
RELATED ARTICLES
KOMENTARZE
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, zkráceně XSLT (jako přípony souborů a prefix jmenného prostoru obvykle jen
xsl
)
- XSL Formating Objects, zkráceně XSL:FO, XSL-FO nebo též XSLFO
případně pouze FO (jako prefix jmenného prostoru a přípony souborů
se nejčastěji používá právě pouze
fo
)
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:
-
libxslt (nebo-li xsltproc, což
je název spustitelného souboru) - V prostředí operačního systému
GNU/Linux asi nejznámější implementace, součást projektu
GNOME, napsáno v C nad objektovou
knihovnou Glib.
-
Saxon - XSLT procesor
napsaný v Javě pod licencí MPL, dělí se na dvě větve, komerční a
nekomerční, kdy komerční navíc podporuje XML schémata.
-
Xalan-Java a
Xalan-C++ jsou procesory
od Apache Software Foundation napsané v Javě respektive C++, javová
verze je dnes v podstatě standardním XSLT procesorem v Javě.
-
Sablotron
- Český XSLT procesor od společnosti Ginger Alliance pod licencí MPL
případně GPL, používaný například v
PHP.
Ovšem situace v oblasti XSL:FO procesorů není až tak růžová, můžeme si
vybrat v podstatě ze dvou možností:
-
PassiveTeX
- Sada maker pro TeX fungující jako XSL:FO procesor, místy poněkud
obskurní záležitost, ale v porovnání s
FOPem dosahuje mnohem lepších
výsledků.
-
FOP - XSL:FO procesor od
Apache Software Foundation napsaný v Javě. Poslední verze je 0.20.5
a kvalita tomu bohužel odpovídá. I přesto je tento procesor použitelný
pro většinu úkolů. Jediným problémem je, že na rozdíl od TeXu (potažmo
PassiveTeXu) v distribucích bývá ve stavu kdy je potřeba
dokonfigurovat, zejména kvůli podpoře českých znaků.
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.