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

Slides:



Advertisements
Podobné prezentace
Dynamické dokumenty na straně klienta Informatika pro ekonomy II.
Advertisements

Přednáška č. 3 Normalizace dat, Datová a funkční analýza
HYPERTEXT PREPROCESSOR. PROGRAMOVÁNÍ. DEFINICE POJMŮ Problém Problém nevyřešený, nežádoucí stav obvykle vyžaduje nějaké řešení Neřešitelný problém Neřešitelný.
 Informací se data a vztahy mezi nimi stávají vhodnou interpretací pro uživatele, která odhaluje uspořádání, vztahy, tendence a trendy  Existuje celá.
Přednáška č. 5 Proces návrhu databáze
Softwarový systém DYNAST
Filtr významnosti jako framework pro prezentační vrstvu
C# pro začátečníky Mgr. Jaromír Osčádal
Architektury a techniky DS Tvorba efektivních příkazů I Přednáška č. 3 RNDr. David Žák, Ph.D. Fakulta elektrotechniky a informatiky
T OOL FOR C OLLABORATIVE XML S CHEMA I NTEGRATION Jiří Meluzín.
Adobe Dreamweaver CS4 Ing. Martin Dosedla.
Úvod do databází Databáze.
Tvorba webových aplikací
Lestes C++ compiler. Obsah 1. Úvod 2. Architektura 3. Implementace 4. Framework 5. Závěr.
Vývoj aplikací pro SharePoint
Orbis pictus 21. století Tato prezentace byla vytvořena v rámci projektu.
Jaroslav Šnajberk, Přemek Brada
Metainformační systém založený na XML Autor: Josef Mikloš Vedoucí práce: Ing. Jan Růžička, Ph.D. V/2004.
Databázové systémy Přednáška č. 6 Proces návrhu databáze.
Modelování a simulace MAS_02
Návrh a tvorba WWW Cvičení 4
WebMathematica MathMl.CDF aneb ZASE JEDEN POVEDENÝ PROJEKT Petr Bělaška OA aVOŠE Zlín.
Transparentní modelování a provádění procesů Michael Juřek Software Architect Microsoft s.r.o.
Dokumentace objektů a zveřejnění funkcí
XML Schema Irena Mlýnková. Obsah XML – úvod, příklad, základní pojmy DTD – přehled XML Schema – podrobně.
Návrhový vzor Factory v JAVA API Martin Kot Katedra informatiky VŠB – Technická univerzita Ostrava
Jazyk XML Jazyk pro tvorbu strukturovaných dokumentů Syntaxí velmi podobný HTML Hlavní cíle návrhu: Snadná editace - jazyk je textový Snadné strojové zpracování.
Návrh a tvorba WWW Přednáška 5 Úvod do jazyka PHP.
Architektury a techniky DS Cvičení č. 9 RNDr. David Žák, Ph.D. Fakulta elektrotechniky a informatiky
Dokumentace informačního systému
Systémy pro podporu managementu 2 Inteligentní systémy pro podporu rozhodování 1 (DSS a znalostní systémy)
Ukládání heterogenních dat pomocí rozvolněných objektů Michal Žemlička.
uložené procedury (stored procedures) triggery, sekvence, pohledy, funkce, parametrické dotazy (prepared statements) komplexní agregace a SQL dotazy jiné.
XML na papír Dušan Fencl
Databázové modelování
Metodika objektového přístupu při tvorbě překladačů. Marek Běhálek Informatika a aplikovaná matematika FEI VŠB-TU Ostrava.
Orbis pictus 21. století Tato prezentace byla vytvořena v rámci projektu.
Referát č.8 Daniela Venusová.
Otevřené datové formáty a standardy
Česko a Slovensko, výhledy do budoucnosti Michal Tomek – InterSystems BV.
Databázové systémy Informatika pro ekonomy, př. 18.
Automatizovaná podpora výběru nástroje pro dobývání znalostí Jakub Štochl.
Filtr významnosti jako framework pro prezentační vrstvu Ing. Igor Kopetschke – TUL, NTI
Ústav informatiky PEF MZLU v Brně
Vít Profant Obhajoba bakalářské práce
Analýza informačního systému. Podrobně zdokumentovaný cílový stav Paramentry spojené s provozem systému – Cena – Přínosy – Náklady a úspory – …
14. června 2004Michal Ševčenko Architektura softwarového systému DYNAST Michal Ševčenko VIC ČVUT.
Vícerozměrný přístup pro indexování XML dat
Jazyk XML v geoinformatice
PHP Programy pro tvorbu WWW stránek - 01
Petr Šmíd Obsah prezentace Co je to XML ?
XSLT překladač Marek Běhálek Informatika a aplikovaná matematika FEI VŠB-TU Ostrava.
JavaScript úvod. Jazyky webového vývojáře Dynamická stránka  aktivně mění svůj obsah v reakci na činnost uživatele  zpracování na straně serveru (PHP,
Perzistence XML dat Kamil Toman
Základní problémy realizace eLearningového systému Roman Malo Ústav informatiky PEF MZLU v Brně.
Klient pro správu databází MySQL 1 Klient pro správu databází MySQL Zbyněk Munzar České vysoké učení technické v Praze Fakulta elektrotechnická.
Překladače Vnitřní struktura překladače © Milan Keršláger
Strojní programování. Uplatnění strojního programování: výroba složitějších součástí pomocí klasického programování se postupně stávala neefektivní a.
Hotel Tatra, Velké Karlovice 23. – 25. dubna 2007 S4U – Seminář o Univerzitním informačním systému 1 Pár slov o sazbě výstupních dokumentů Jiří Rybička.
Univerzitní informační systém VIII., Karlov 2009 Fulltextové vyhledávání v UIS Miroslav Prachař.
PROGRAMOVÁNÍ 3ITA,3ITB Jaroslav Burdys Hlavní zdroj:
A jeho praktická aplikace Štěpán Vacek Univerzita Hradec Králové Liberecké informatické fórum 2010.
XML a datový standard Zdeněk Jirkovec Softwarové Aplikace a systémy.
Vypracoval / Roman Málek
C# WPF.
Dobývání znalostí z databází znalosti
Vstup a zpracování speciálních znaků v UIS
Budování Integrovaného informačního systému Národního památkového ústavu Petr Volfík, NPÚ ÚP
Operační systémy Vnitřní struktura překladače
TNPW1 JavaScript Ing. Jiří Štěpánek.
Transkript prezentace:

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

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

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

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ů).

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

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)

XSL Transformations, příklady stylu (1) <xsl:stylesheet version="1.0" xmlns:xsl=" Today's greeting

XSL Transformations, příklady stylu (2) <html xsl:version="1.0" xmlns:xsl=" Today's greeting

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

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ů

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

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:

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

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í.

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)

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

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)

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

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ě.

Ú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.

Ú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ů.

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

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

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

Ú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)

Ú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.

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

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

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.

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í

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 ( ypřípadně rozšíření závislá na procesoru (např. SAXON)

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!)

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.