Konvertory a formátovače

Velkou předností XML je možnost snadné transformace do dalších formátů. Z jednoho dokumentu můžeme vygenerovat formát PDF nebo PostScript pro tisk, stránku HTML pro Web, WML stránku pro mobilní telefon nebo RTF dokument pro odeslání mailem jako příloha.

Jelikož je dokumenty potřeba převádět a formátovat rychle a efektivně, používají se pro tyto účely stylové jazyky, které nás nenutí se vázat na nějaký konkrétní produkt, protože jsou standardizovány. Pro potřeby konverze mezi různými formáty založenými na XML, mezi XML a HTML a mezi XML a textovými formáty se výborně hodí transformační část jazyka XSL. Pro výsledné formátování dokumentu se pak používá rovněž XSL, konkrétně jeho formátovací objekty. V některých případech může být vhodné i použití jiných jazyků, např. DSSSL.

Většina komerčních XML editorů a publikačních systémů v sobě přímo zahrnuje nějaký formátovací program, i když o něm uživatel často ani neví. Stačí z menu vybrat příkaz Tisk a dokument se vytiskne. Existuje však i celá řada programů, která je k dispozici jako freeware nebo public domain. Jedná se však o samostatné programy, které se obvykle ovládají z příkazové řádky. Mnohdy jsou napsány tak, že je lze jednoduše zařadit do dalších aplikací a využít v nich jejich funkčnost.

XT je XSL procesor napsaný v Javě. Jeho velkou výhodou je poměrně úplná implementace transformační části XSL. XT bohužel nepodporuje formátovací objekty, takže se hodí pouze pro konverzi mezi různými XML schématy nebo mezi XML a HTML. Můžeme ho nasadit např. jako servlet, který bude na webovém serveru dokumenty převádět z XML do jazyka HTML, kterému rozumí všechny dnešní prohlížeče.

FOP je součástí projektu Apache Cocoon a umí XML dokumenty konvertovat přímo do formátu PDF. FOP je napsán v Javě a kromě výstupu do PDF umí dokumenty i přímo zobrazovat. Jeho rozhraní umožňuje zařazení do dalších aplikací, které ho mohou využívat jako jednoduchý prohlížeč. FOP umí soubory PDF generovat ze souboru obsahujícího formátovací objekty nebo přímo z XML dokumentu a odpovídajícího XSL stylu. FOP je velice nadějný projekt a doufejme, že jeho autoři budou program neustále vylepšovat.

Firma RenderX na svých stránkách inzeruje program FO2PDF, který umí převádět dokument obsahující formátovací objekty do PDF. Ukázky jsou opravdu impozantní, FO2PDF zvládá i sazbu do více sloupců a další náročnější prvky. K dispozici však zatím není ani ostrá verze ani žádná betaverze. Narozdíl od ostatních zmíněných formátovačů a konvertorů bude FO2PDF s největší pravděpodobností šířeno komerčně.

Jade je DSSSL procesor. Původně Jade uměl pracovat s dokumenty v SGML, nyní zvládá i XML. Kromě konverzí z XML do XML a HTML umí dokumenty převést podle definice obsažené v DSSSL stylu do formátů RTF, TeX a MIF (formát používaný v DTP programu FrameMaker). Z TeXu pak můžeme snadno vygenerovat PostScript nebo PDF. Výhoda Jade a DSSSL spočívá v tom, že jsou na světě déle než XSL, a tak dnes existují DSSSL styly pro nejrozšířenější DTD. Pomocí Jade jsem tento článek zkonvertoval do RTF pro potřeby redakce.

Konverze do XML

Pokud vytváříme nové dokumenty, není problém je pomocí vhodného editoru vytvářet rovnou v XML. Často však potřebujeme do nového systému založeného na XML naimportovat staré dokumenty, vytvořené v nějakém jiném formátu. Do hry pak vstupují programy, které se snaží usnadnit konverzi dokumentů z proprietárních formátů do XML.

Mezi klasiky na poli konverzních programů patří OmniMark. Je to programovací jazyk, který je speciálně uzpůsoben pro konverzi mezi XML a ostatními formáty. Kromě klasických programových konstrukcí, které známe z běžných programovacích jazyků, nabízí efektivní syntaxi, která umožňuje na základě vzorů vybírat jednotlivé části souboru a dále je zpracovávat. OmniMark je již dlouhou dobu používán v oblasti konverze textů a existuje proto pro něj mnoho programů pro konverzi mezi různými formáty (např. z RTF do XML). Samotný OmniMark je nyní k dispozici zdarma, platí se pouze za vývojové prostředí – to je zdarma pouze pro soukromé a školní využití.

Obrázek 7. Integrované vývojové prostředí OmniMarku

Pokud programování není naše hobby a potřebujeme převést nějaké dokumenty do XML, mohl by se nám hodit systém DynaTag, který umožňuje konvertovat dokumenty z formátů textových editorů do XML. Konverze probíhá v grafickém prostředí, a poté co jsou na několika prvních dokumentech daného druhu definována konverzní pravidla, může převod probíhat automaticky.

© Jiří Kosek 2000-2001