Převod dat tam a zase zpět

Konverze prostřednictvím XSLT Na světě vznikají myriády elektronických dokumentů. Řada z nich přitom nemá žádný...


Konverze prostřednictvím XSLT
Na světě vznikají myriády elektronických dokumentů. Řada z nich přitom nemá
žádný standardní formát, a pokud je potřebujete přenést mezi různými
aplikacemi, narazíte na problémy. Prostě babylonské zmatení jazyků. Naštěstí je
tu jazyk XML a možnost konvertovat data v něm uchovaná do dalších jazyků.
Konsorcium W3C pro tento účel doporučuje XSL transformace (XSLT) a zdá se, že
se toto doporučení těší značné podpoře výrobců. V praxi má však ještě četné
nedostatky.
Cílem vývojářů technologie XML je popsat význam obsahu pomocí nějakých
indikátorů. Kráčeje ve šlépějích SGML se tento jazyk odlišuje od prezentačně
orientovaných jazyků jako HTML nebo od Postscriptu. Sémantický rozbor obsahu
není omezen pouze na dokument. Jednoduchá syntaxe XML umožňuje mnohem více,
bezmála kvalifikovat tímto způsobem libovolná data. Proto je výhodné používat
XML k převodu dat mezi různými systémy. Přitom je možno data exportovaná z
podnikového systému popsat stejným způsobem, syntakticky pomocí identifikátorů
("návěští") jako např. <číslo výrobku> nebo <cena>, stejně jako jsou popsány
odstavce v technických příručkách.
Obě metody použití mají tu společnou vlastnost, že použití kódovaných informací
XML obvykle závisí na rychlosti, s jakou je lze převést do jiných forem.
Rychlost se stává prvořadým požadavkem při výměně dat v rámci elektronického
obchodování, kdy objem dat významně roste a technologie XML musí překračovat
hranice mezi nekompatibilními systémy. Iniciativy dohlížející na obchodní
činnosti v oboru technologií by měly zajistit, aby každý obchodní vztah hned
nevedl k definici vlastní XML aplikace (patří sem např. Oasis, Rosettanet nebo
Biztalk).
Nutnost konverze
Odpovídající požadavky jsou též na publikování dokumentů. Sémanticky
orientovaná technologie XML nedává cílovým systémům žádnou informaci o tom, jak
by měl být obsah představen, prezentován. Nutná je tedy konverze XML dokumentů
do prezentačních formátů jako HTML a RTF, nebo vygenerování cílového dokumentu,
se zadanými definicemi formátů na bázi kaskádních stylů (CSS Cascading Style
Sheets), nebo XSL. Pro oba účely doporučuje W3 konsorcium překlady XSL. Jedná
se přitom o deklarativní jazyk, který je vytvořen s využitím syntaxe Xpath
speciálně pro manipulaci se stromy dokumentů.
XSLT formátovací soubor následuje za XML a musí být proto správně vytvořen.
XSLT je vhodný zejména pro transformace mezi různými XML aplikacemi. XSLT se v
žádném případě neomezuje pouze na výměnu jmen prvků za jiné. Spíše se tímto
způsobem generují cílové dokumenty, v nichž jsou původní informace uspořádány
zcela jinak, třídí se a filtrují podle určitých kritérií.
Tato schopnost se využije zejména proto, že s přibývajícím počtem výstupních
médií se musí individuálně upravovat obsahy. Jeden a tentýž dokument XML lze
upravit prostřednictvím formátovacího souboru pro webový browser, WAP nebo
tisk. Podobně to platí pro výměnu dat: ze systému R/3 v XML formátu se vyvolaná
data upravená formátovacím souborem vloží do CRM aplikace od Siebelu, jiným
formátovacím souborem do aplikace od Clarify.
Koncepce technologie XML pro rozšiřitelnost jazyka rozlišuje vrstvu obsahu a
úroveň formátu. XSLT procesory převádějí tento požadavek, v němž ze vstupu,
skládajícího se z XML dokumentu a formátovacího souboru, lze vyrobit
zobrazitelné formáty.
Kdo je proti
Předností uvedené koncepce je možnost oddělit obsah dokumentu od programové
logiky. Kritikové XSLT, jako Michael Leventhal
(http://www.xml.com/pub/1999/05/xsl/xslconsidered_1.html) jsou ale toho názoru,
že se příprava XML dat pro Web nechá zrealizovat lépe přes objektový model
dokumentu (DOM) pomocí skriptů a CSS. Tento postup nicméně vede k tomu, že se
právě při komplexnějších webových aplikacích definice formátu informace
promíchá s programovým kódem a ten se pak hůře udržuje. Naproti tomu lze XSLT
formátovací soubory vyvinout a přizpůsobit odděleně od aplikace.
Námitky tohoto druhu jsou též často motivovány tím, že XSLT ve srovnání s
procedurálními jazyky jako Javascript nebo Perl nutí ke změně myšlení.
Programátoři, kteří se cítí doma u posledně zmíněných jazyků, je považují
nezřídka za obtížné nebo komplikované. Vychází jim vstříc nabídka
alternativních transformačních technik např. DecisionSoft s XML-Script
(http://www.xmlscript.org). Funkce XSLT pro XML dokumenty se přitom srovnává s
funkcí SQL při správě dat.
Současné slabé stránky W3C standard
Silné argumenty proti použití XSLT nicméně pocházejí rovněž ze slabin
aktuálního doporučení W3C (http://www.w3org/TR/xslt) stejně jako z nabídky
produktů pro konverzi dat prostřednictvím XSLT.
Nedostatkem standardu zejména je, že nelze přes jednotné API spustit jádro
XSLT, tak jak je tomu u DOM. Podobně těžkopádné a obtížné je vyměnit v
programech XSLT procesor za jiný.
Nedobrovolná věrnost takovému produktu může posílit využití nestandardních
funkcí. K tomu patří bezesporu např. možnost zapisovat výstupní formát do
několika cílových souborů nebo vyvolávat externí programy. V obou případech se
jedná o relativně často potřebné vlastnosti, zejména při přípravě internetových
prezentací, kdy se dlouhé dokumenty obvykle rozdělují na více HTML stran.
Aktuální doporučení W3C toto rozšíření nedefinuje, avšak příslušná pracovní
skupina již reagovala na debaty v příslušných mailingových listech
(http://www.mulberrytech.com/ xls/xls-list). Z vývojové obce vyšel též již
návrh na standardizaci (http://trax.openxml.org). Řada implementací XSLT
vykazuje slabiny z hlediska rychlosti zavádění. Ty tkví mimo jiné v tom, že
XSLT provádí konverze z jednoho stromu dokumentů do jiného. U velkých množství
dat vyžaduje vypracování tohoto stromu určitý čas a navíc vyžaduje značnou
kapacitu paměti, protože celkový dokument musí být uložen v RAM. Jako reakci na
tuto situaci vyvinul programátor Matt Sergeant v Perlu v podobě Not XSLT
(http://xml.sergeant.org/ notxlt.xml) jazyk podobný XSLT, který je možno použít
jako modul Apache a který má být podstatně rychlejší než standardní technika.
Tato alternativa nemusí při rozsahu funkcí s XSLT držet krok, ale pro webovou
publikaci plně stačí i jednodušší nástroje.
0 1783 / pen









Komentáře
K tomuto článku není připojena žádná diskuze, nebo byla zakázána.