Prezentace se nahrává, počkejte prosím

Prezentace se nahrává, počkejte prosím

Transformace XML dat: standardy, nástroje, metodika, optimalizace RNDr. Tomáš Pitner, Dr. Masarykova univerzita v Brně, Fakulta informatiky

Podobné prezentace


Prezentace na téma: "Transformace XML dat: standardy, nástroje, metodika, optimalizace RNDr. Tomáš Pitner, Dr. Masarykova univerzita v Brně, Fakulta informatiky"— Transkript prezentace:

1 Transformace XML dat: standardy, nástroje, metodika, optimalizace RNDr. Tomáš Pitner, Dr. Masarykova univerzita v Brně, Fakulta informatiky

2 Techniky zpracování XML dat zPodle použitého specifikačního jazyka zPodle úrovně abstrakce

3 Nízkoúrovňový přístup zZaložen na manipulaci se semistrukturovanými (stromově organizovanými) daty, buďto: z1. Data aktuálně v operační paměti jako: yDOM (Document Object Model, W3C) a srovnatelné modely: yJDOM (Lutris Technology, ynejrůznější XML-Java (C++,...)-binding modely: Quick, Zeus, XML Beans... zVýhody: yobvykle snadnější použitelnost než u (2.) ymodel může být persistentní ymožná virtualizace DOM-like modelů (paměťová úspora) z2. Data dostupná jako proud událostí: ySAX1,2 rozhraní (SAX2 - novinkou je zejm. podpora Namespaces) ypaměťově obecně méně náročné, ale větší nároky na aplikačního programátora

4 Nízkoúrovňový přístup (2) zObecné nevýhody nízkoúrovňového přístupu: ynutnost kompletního "ručního kódování" transformací; yhorší znovupoužitelnost jednou naprogramovaných transformačních postupů v jiném prostředí (jazyce), yčasto nepoužitelnost pro jinou třídu vstupních dokumentů yobtížná rozšiřitelnost (nemožnost snadného přidání dalšího transformačního pravidla). zVýhodou může být naopak yrychlost a možnost optimalizace (často pro pevně fixovanou třídu vstupních dokumentů).

5 Speciální jazyky pro XML/SGML transformace zPříklady speciálních jazyků XML/SGML transformací: yXFA (XML For All) yTranSID yMetamorphosis yjazyky součástí kompletních aplikačních prostředí (aplikačních serverů), speciálně publikačních serverů např. Apache Cocoon yu aplikačních serverů: často speciální proprietární API yOmniMark

6 Cíl: univerzální deklarativní jazyk pro specifikace transformací zHistoricky: především z prostředí orientované na semistrukturovanost XML dat - z oblasti webového publikování ypro HTML prezentační formátovací kaskádové styly (CSS), yumožňovaly přiřazení formátovacích objektů a atributů (např. pozicování, barva) prvkům HTML kódu, yneumožňovaly transformaci, tj. změnu struktury tohoto kódu. zSkutečné transformace struktury dokumentů: prostřednictvím DSSSL (Document Style Semantics and Specification Language) zJazyk DSSSL však platil za komplikovaný, hůře implementovatelný a použitelný stylový jazyk zRazantní změnu představoval XSL (FO), XSLT (transformace)

7 XSL Transformations, příklady stylu (1) Today's greeting

8 XSL Transformations, příklady stylu (2) Today's greeting

9 XSLT standardy – současnost a perspektiva zXSLT 1.0 W3C Recommendation zXPath 1.0 ypoměrně mocný jazyk pro navigaci a dotazování ve stromové struktuře XML dokumentu(ů) yzáklad pro specifikace transformačních XSLT stylů yje na něm založeno (nebo jej využívá) několik dotazovacích jazyků ymechanizmem je specifikace lokace v XML dokumentu: určit v XML dokumentu množinu uzlů, jež splňují (match) uvedený XPath výraz. ynabízí řadu (agregačních) funkcí aplikovatelných na množiny uzlů, booleovské hodnoty, číselné hodnoty, řetězce atd. yje možné XPath použít jako jiný programovací jazyk k převodům, agregacím, rozhodování, atd. zXSLT vývoj zastaven, orientace na novou verzi: XSLT 2.0

10 XSLT standardy – současnost a perspektiva (2) zXSLT poměrně zásadním rozšířením původního jazyka, nyní ve fázi shromažďování a analýzy požadavků, Přinese zejména: yvazbu transformací na typ (XML Schema) transformovaného dokumentu, yrozšíří možnosti transformací i nestrukturovaného (non-XML) vstupu a yzjednoduší použití XSLT konstrukcí zPro integraci heterogenních zdrojů přináší ylepší podporu národních abeced (i celých "locales"), ymožnost vkládání externích zdrojových dokumentů, na něž budou aplikovány jejich "lokální" styly atd. zPodpora optimalizací při transformacích zRevolučním rozšířením je/bude obohacení XPath o funkce vyšších řádů

11 Vývojové nástroje zXSLT Procesory zIntegrovaná vývojová prostředí zXSLT Debuggery zPreprocesory zdalší nástroje

12 XSLT procesory zXSLT procesor je stroj, jenž dokáže zna základě předloženého stylu (tedy kolekce šablon), zparametrů tohoto stylu a zdalších nastavení ztransformovat předložený vstupní XML dokument (nebo dokumenty) zpodle pravidel daných šablonami na jeden či více výstupních dokumentů. zVýstupní dokumenty, na rozdíl od vstupních, ani nemusejí být dobře utvořenými (well-formed) XML dokumenty - běžně se používá např. výstup do formátů klasického (non-XML) HTML kódu, do čistého nestrukturovaného textu atd. Při volbě procesoru je třeba si všímat:

13 XSLT procesory (2) zReferenčními procesory jsou: yXT (James Clark) ySAXON (Michael Kay) yXalan (IBM, nyní Apache Software Foundation). ytéž dodávány jako integrální součást databázových systémů s podporou XML: např. Oracle XML Developer's Kit, ynejrychlejší open-source procesor, součást Gnome XML C knihovny libxml/libxslt

14 XSLT procesory (3) zKritéria pro volbu vhodného XSLT procesoru yzda a jak procesor podporuje požadovanou verzi XSLT standardu; yzdali použitý XML parser podporuje požadovaná kódování národních znaků; yzda parser podporuje moderní rozhraní SAX2, DOM2; yna jakém operačním systému/JVM běží; yzda je k dispozici jako open-source; yzda provádí optimalizace; yjaká je diagnostika (vč. ladicích možností) při práci procesoru; yjaké rozšiřující funkce/elementy atd. sám má a zda podporuje uživatelská rozšíření.

15 Vývojová prostředí zXSLT je ze syntaktického hlediska aplikací XML, je tedy možné použít na zápis stylu v XML libovolný XML editor či editor čistého textu. zKompletní vývojová prostředí pro XML, např. XML Spy podporují uživatelsky příjemnější tvorbu stylů s vyznačením specifické syntaxe XSLT, s automatizovaným nabízením a doplňováním přípustných konstrukcí atd. zPodobné funkce nabízí i komplexní nástroj z dílny IBM Alphaworks, XML & Web Services Development Environment nebo volně dostupné: zCookBook 2.0 zXMLE (XML editor)

16 Preprocesory zObvykle jednodušší jednoúčelové nástroje: ynapř. speciální skriptovací jazyk XSLScript (redukuje "syntaktický cukr" XSLT a ex post zkompiluje zdrojový text do XSLT yXPP (XML PreProcessor), dělá v zásadě totéž, je jednodušší, quick & dirty

17 Debuggery zSyntaktická neúspornost XSLT jazyka nepřímo implikuje množství chyb: ychyby XML nebo XSLT syntaxe (pomůže odstranit validující XML parser, XML-, XSLT- editor) ychyby v logice XSLT stylu (možné použít speciální debuggery XSLT, např. open source nástroj tbug)

18 Volně dostupné knihovny XSLT kódu zDosud ani zdaleka tolik jako jiného open-source softwaru. Lze rozlišovat: yknihovny jednotlivých šablon (využíváme pomocí include, import) ycelých stylů (využíváme beze změny) ymožnost parametrizace zUcelené styly použijeme tam, kde transformujeme do nebo z nějakého rozšířeného a obecně používaného formátu (DocBook, XHTML, samotné XSLT, MathML RosettaNet, BizTalk, ebXML a další), např. pro DocBook existuje knihovna o cca 1000 šablonách znebo tam, kde styl specifikuje nějakou velmi obecně použitelnou transformaci, (téměř) nezávislou na vstupním formátu dat - odstranění komentářů ( ), processing instructions, ignorable whitespaces, spojování dvou dokumentů se stejným modelem, generování (jednoho z možných) XML Schematu z jedné jeho instance atp. z„hříčky“ zv budoucnu metastyly

19 Metodika modelování stylů zNová disciplína SI, není zatím nijak propracovaná, obvykle sestává z yad hoc získaných zkušeností (často z práce s jednou implementací XSLT transformačního stroje) ya z obecně platných zásad funkcionálního programování.  Proces návrhu a implementace XSLT stylů rozdělíme na čtyři úrovně.

20 Úroveň aplikace zZde řešíme otázky: yco vše řešit s pomocí XSLT ynad jakými daty (jakého vstupního modelu) yco požadujeme transformacemi získat (výstupní model) zObvykle jsou to požadavky na různé pohledy na data podle výstupního média. zDále specifikujeme konceptuální rozdělení transformačních fází mezi jednotlivé styly, zurčujeme jejich konceptuální strukturu, zidentifikujeme společné prvky (šablony) jednotlivých stylů pro jejich znovupoužitelnost.

21 Úroveň stylu zZ pohledu logické struktury se styl skládá z množiny explicitně a implicitně uvedených šablon. zZde rozhodujeme, jakou techniku má transformace příslušným stylem používat: ypřístup "push", kdy je transformace řízená vstupními daty, ypřístup "pull", kdy je v centru pozornosti výstupní dokument, zNa této úrovni také rozhodujeme o použití ymódů zpracování a ypodmíněného zpracování podle hodnot parametrů. zStyl lze (ortogonálně vzhledem k logickému členění) rozdělit na více souborů a tyto dílčí kolekce šablon vkládat (xsl:include) nebo zahrnovat (xsl:import) do jiných stylů.

22 Úroveň stylu (vzor „fill-in-blank“) Management Structure Management Structure The following responsibilies were announced on : Name Role Reporting to

23 Úroveň stylu (vzor „navigational“) Sales volume by publisher Publisher Total Sales Value

24 Úroveň stylu (vzor „rule-based“)

25 Úroveň šablony zVyvažujeme případnou nerovnováhu "optimalita vs. přehlednost a verifikovatelnost šablony", zNa této úrovni zvažujeme použití konstrukcí, jež mohou negativně ovlivnit efektivitu transformací, např. generování automatického číslování. zSnažíme se, aby struktura šablon pokud možno odpovídala hierarchii elementů ve zdrojovém, případně cílovém dokumentu zObvykle preferujeme rekurzi před iterací. zVyužíváme režimy zpracování (processing modes)

26 Úroveň XPath vzorku zOptimalita použitého XPath výrazu ynapř. vyskytují se zde "nepříjemné" (pod)výrazy vyžadující opakované procházení velkých podstromů zdrojového dokumentu (např. konstrukce //* apod.). zLze doporučit použití klíčů (key() a id()) zdočasných pomocných struktur (fragmentů), proměnných, použití uživatelských funkcí psaných v "rychlejším", tj. jiném než XSLT jazyce atd. zNa této úrovni je třeba neopomenout odlišnosti datového modelu XPath stromů od vnitřní reprezentace typu DOM - jazykem XPath se např. nelze standardně dotazovat na sekce CDATA nebo entity.

27 Optimalizace zPři návrhu yAplikace yStylu zPři provádění transformací

28 Optimalizace návrhu aplikace zZaměřujeme se na místa, kde se provádí: zčasto opakované transformace (např. u webových publikačních systémů) yoptimalizovat rychlost i na úkor přehlednosti a modularity stylu yzvážit, zdali je XSLT vůbec vhodnou technikou y(není lepší pouhé filtrování SAX proudu událostí?) ztransformace nad velkými dokumenty: yproblémy se správou paměti při vytváření stromové reprezentace před a po transformaci yopomíjení možnosti znovupoužít výsledky dílčích transformací zNěkdy lze transformace objemných dokumentů zcela eliminovat

29 Optimalizace návrhu aplikace (2) zTam, kde se provádí řetězově ("pipeline") více transformací po sobě nebo kde dokonce používáme složitější síť navazujících transformací: zlze zredukovat počet zřetězených transformací? zu zřetězených transformací je klíčová efektivita vnitřní reprezentace zNěkteré transformační stroje (např. SAXON) dokážou na základě uvedení speciálních rozšiřujících atributů u stylu samy transformace efektivním způsobem řetězit. zMáme-li možnost zasahovat do vstupu/výstupu transformací na nižší úrovni, tj. např. na úrovni SAX událostí produkovaných XSLT procesorem, můžeme některé jednodušší transformace (např. sloučení dvou množin XML uzlů) realizovat nikoli prostřednictvím XSLT, ale např. "nasměrováním" obou SAX proudů do jednoho výsledného dokumentu; zAplikace, kde se používá přístup ke klasickým (non-XML) a nativním XML databázím -- optimalizujeme raději přístup k databázi než ex post transformaci.

30 Optimalizace návrhu stylu zČasto zde bojujeme s požadavkem na zachování přehlednosti a modularity stylu, v některých směrech si ale tato kritéria neprotiřečí. Základní zásady: yrozdělit knihovny šablon do menších souborů, zavádět jen potřebné ynahradit prezentační šablony, které se starají pouze o vizuální podobu výstupního dokumentu, speciálními prototypy (kostrami) výstupního dokumentu, do nějž procesor při transformaci pouze dosazuje hodnoty ze vstupu  logicky rozdělit logickou a prezentační vrstvu - nejlépe mezi styly nebo mezi šablony s různým mode nebo různým jmenným prostorem u XPath výrazu atributu match yrozdělit i prezentační vrstvu na dvě úrovně - abstraktní a konkrétní

31 Optimalizace návrhu XPath výrazů zBráníme se neefektivním konstrukcím - např. s O(n 2 ) složitostí  Využíváme proměnné ( variable ), indexy ( key() ) zVyužíváme rozšiřující funkce (v jiném než XSLT jazyce) ypreferujeme standardní rozšíření exslt (http://exslt.org) ypřípadně rozšíření závislá na procesoru (např. SAXON)

32 Optimalizace provádění transformací zKvalitní XSLT procesory provádění implicitně řadu optimalizací vedoucích zejména ke zrychlení a často také k paměťové úspoře. zJednou z možných optimalizací na nejnižší úrovni je kompilace stylu do jiného programovacího jazyka a následné přímého provádění kódu v tomto jazyce nebo implicitní kompilace do objektů javax.transform.Templates. zVýsledek: yzrychlení kódu (až o 200 % u Sun XSLTC) ynižší paměťová náročnost zV budoucnu: paralelizace transformací (protože chybí vedlejší efekty!)

33 Shrnutí zXSLT je standardizovaným a perspektivním jazykem pro deklarativní specifikaci transformací XML dat. Poměrně silný podpůrný dotazovací jazyk XPath jej posouvá z jednoúčelového prostředku až na pomezí univerzálních programovacích jazyků. Zvládnutí efektivního návrhu XSLT aplikací se proto v XML světě stává nezbytnou dovedností každého vývojáře. zTento příspěvek ve stručnosti ukázal podstatné aspekty vývoje XSLT aplikací, představil dostupné nástroje, nastínil metodiku jejich návrhu a možnosti optimalizace na jednotlivých úrovních návrhu.


Stáhnout ppt "Transformace XML dat: standardy, nástroje, metodika, optimalizace RNDr. Tomáš Pitner, Dr. Masarykova univerzita v Brně, Fakulta informatiky"

Podobné prezentace


Reklamy Google