Dotazování nad XML daty a jazyk XPath



Podobné dokumenty
Jazyk XSL XPath XPath XML. Jazyk XSL - rychlá transformace dokumentů. PhDr. Milan Novák, Ph.D. KIN PF JU České Budějovice. 9.

Prezentace XML. XML popisuje strukturu dat, neřeší vzhled definice vzhledu:

PRG036 Technologie XML

XML a XSLT. Kapitola seznamuje s šablonami XSLT a jejich použití při transformaci z XML do HTML

Pokročilé techniky tvorby sestav v Caché. ZENové Reporty

Z n a č k o v a c í j a z y k y. XSL (extensible Stylesheet Language) XSLT (extensible Stylesheet Language Transformation) XPath

24. XML. Aby se dokument XML vůbec zobrazil musí být well-formed (správně strukturovaný). To znamená, že splňuje formální požadavky specifikace XML.

XSLT extensible Stylesheet Language Transformation

XSLT a jmenné prostory

APLIKACE XML PRO INTERNET

Využití XML v DB aplikacích

Příklad buňka tabulky

Z n a č k o v a c í j a z y k y. XPath, XLink, XQuery, XPointer, XLinkTime, XForms

Distanční opora předmětu: Databázové systémy Tématický blok č. 5: Dotazovací jazyk XPath Autor: RNDr. Jan Lánský, Ph.D.

MBI - technologická realizace modelu

XQuery. Jirka Kosek. Visual FoxPro DevCon června Praha. Copyright 2005 Jiří Kosek

Principy XQuery. funkcionální jazyk vše je výraz, jehož vyhodnocením vznikne určitá hodnota základní typy stejné jako v XML Schema:

TÉMATICKÝ OKRUH Softwarové inženýrství

Úvod do XSLT 2.0. Jirka Kosek Copyright Jiří Kosek

XSLT pomocí JavaScriptu v Mozille (... Opeře a Safari)

Tvorba informačních systémů

ANOTACE vytvořených/inovovaných materiálů

PRG036 Technologie XML

TRANSFORMACE XML DOKUMENTŮ POMOCÍ JAZYKA XSLT

Ukládání a vyhledávání XML dat

M4 PDF rozšíření. Modul pro PrestaShop.

XPath je jazyk, který slouží k

1 Webový server, instalace PHP a MySQL 13

Systém elektronického rádce v životních situacích portálu

NSWI096 - INTERNET JavaScript

XSL. Jirka Kosek. Poslední modifikace: $Date: 2005/12/01 09:35:37 $ Copyright Jiří Kosek. XML teorie a praxe značkovacích jazyků (IZI238)

Kurz je rozdělen do čtyř bloků, které je možné absolvovat i samostatně. Podmínkou pro vstup do kurzu je znalost problematiky kurzů předešlých.

Maturitní otázky z předmětu PROGRAMOVÁNÍ

<knihy:clanek xmlns:kniha=

Oracle XML DB. Tomáš Nykodým

3 MOŽNÉ PŘÍSTUPY K TVORBĚ APLIKACÍ NAD SVG DOKUMENTY

Předmluva k druhému vydání 13. Úvod 17. ČÁST 2 Vytváření dokumentů XML 65

Dotazování nad stromem abstraktní syntaxe

Autor. Potřeba aplikací sdílet a udržovat informace o službách, uživatelích nebo jiných objektech

Michal Krátký. Tvorba informačních systémů, 2008/2009. Katedra informatiky VŠB Technická univerzita Ostrava. Tvorba informačních systémů

HTML Hypertext Markup Language

Tvorba informačních systémů

EVROPSKÝ SOCIÁLNÍ FOND. Úvod do PHP PRAHA & EU INVESTUJEME DO VAŠÍ BUDOUCNOSTI

Klíčová slova: dynamické internetové stránky, HTML, CSS, PHP, SQL, MySQL,

Vývoj Internetových Aplikací

Michal Krátký. Tvorba informačních systémů, 2008/2009. Katedra informatiky VŠB Technická univerzita Ostrava. Tvorba informačních systémů

Alena Malovaná, MAL305

Kaskádové styly (CSS)

1. Webový server, instalace PHP a MySQL 13

XML snadno a rychle Martin Kuba, ÚVT MU

Obsah prezentace. Co je to XML? Vlastnosti. Validita

Maturitní témata Školní rok: 2015/2016

Značkovací jazyky a spol. HTML/XHTML XML JSON YAML Markdown, Texy!

PHP PHP je skriptovací programovací jazyk dynamických internetových stránek PHP je nezávislý na platformě

Základy WWW publikování

Vysoká škola ekonomická v Praze

8.2 Používání a tvorba databází

Inovace výuky prostřednictvím šablon pro SŠ

Tvorba WWW stránek. přehled technologií používaných na webu principy jednotlivých technologií a možnosti jejich vzájemného kombinování

Tabulkový procesor. Základní rysy

Obsah přednášky. XML DOM SAX XPath XSL transformace 1/46

Syntaxe XML XML teorie a praxe značkovacích jazyků (4IZ238)

PHP - úvod. Kapitola seznamuje se základy jazyka PHP a jeho začleněním do HTML stránky.

Obsah. Kapitola 1. Kapitola 2. Kapitola 3. Kapitola 4. Úvod 11. Stručný úvod do relačních databází 13. Platforma 10g 23

Databázové systémy. Datová integrita + základy relační algebry. 4.přednáška

HTML XHTML JavaScript PHP ASP.Net Zajímavé odkazy

ANOTACE nově vytvořených/inovovaných materiálů

HTML - Úvod. Zpracoval: Petr Lasák

1. lekce. do souboru main.c uložíme následující kód a pomocí F9 ho zkompilujeme a spustíme:

Tvorba informačních systémů

Dnešní téma. Oblasti standardizace v ICT. Oblasti standardizace v ICT. Oblasti standardizace v ICT

Jazyky XQuery a XPath 1

Tematický celek Proměnné. Proměnné slouží k dočasnému uchovávání hodnot během provádění aplikace Deklarace proměnných

Microsoft Office Word 2003

Základy XML struktura dokumentu (včetně testových otázek)

Software602 Form Designer

Pravidla dokumentace

Obsah. Předmluva Kapitola 1 Úvod 1. Web v kostce 1 Kdo je webmaster? 4 Doporučená literatura 4. Kapitola 2 Přehled jazyka HTML 5

1. lekce. do souboru main.c uložíme následující kód a pomocí F9 ho zkompilujeme a spustíme:

Bakalářská práce. Vladimír Mareš

Vývoj moderních technologií při vyhledávání. Patrik Plachý SEFIRA spol. s.r.o.

Budování banky úloh s parametrizovanými multimediálními objekty

Podpora XML v.net. Podpora XML v.net. nezávislý publicista. Jirka Kosek.

17. července :51 z moravec@yahoo.com

Vzdělávací obsah vyučovacího předmětu

XML databáze. Přednáška pro kurz PB138 Moderní značkovací jazyky Ing. Petr Adámek

X36DSV 3. cvičení. XML (extensible Markup Language) JavaScript. AJAX (Asynchronous JavaScript and XML) X36DSV. 2007/10 ver.2.0 1

1. Struktura stránky, zásady při psaní kódu, MVC pattern. Web pro kodéry (Petr Kosnar, ČVUT, FJFI, KFE, PINF 2008)

Kurz LSL skriptování. Shiny Iceberg 2009

XML terminologie a charakteristiky. Roman Malo

DSL manuál. Ing. Jan Hranáč. 27. října V této kapitole je stručný průvodce k tvorbě v systému DrdSim a (v

SPJA, cvičení 1. ipython, python, skripty. základy syntaxe: základní datové typy, řetězce. podmínky: if-elif-else, vyhodnocení logických výrazů

FlexiBee Pokročilé funkce. Ondřej Světlík FlexiBee Systems s.r.o.

Ukázka knihy z internetového knihkupectví

Databázové systémy. - SQL * definice dat * aktualizace * pohledy. Tomáš Skopal

Programovací jazyky. imperativní (procedurální) neimperativní (neprocedurální) assembler (jazyk symbolických instrukcí)

Škola: Gymnázium, Brno, Slovanské náměstí 7 III/2 Inovace a zkvalitnění výuky prostřednictvím ICT Název projektu: Inovace výuky na GSN

Dolování v objektových datech. Ivana Rudolfová

Jazyky pro popis dat

XMW4 / IW4 Pokročilé SELECT dotazy. Štefan Pataky

Transkript:

4 TVEZEWXYHMNR LSTVSKVEQY-RJSVQEXMOENITSHTSVSZ RETVSNIOXIQRERGSZER Q ^)ZVSTWO LSWSGM PR LSJSRHYEVS^TS XYLPEZR LSQ WXE4VEL] 4VELE)9-RZIWXYNIQIHSZE% FYHSYGRSWXM Dotazování nad XML daty a jazyk XPath BI-TWA Peter Vojtáš prezentaci připravil Martin Kruliš

Dotazování nad XML daty Problém dotazování XML je jazyk na ukládání strukturovaných dat. Předpokládá se, že bude potřeba v datech také vyhledávat. Fulltextové vyhledávání nestačí. Nerespektuje strukturu dokumentu. Historie Do roku 1998 se vyvíjely XML-QL a XQL (neustálený vývoj). Dnes se používá XPath (1.0 a 2.0) jednoduchý dotazovací jazyk Je součástí mnoha dalších technologií (XSLT, XLink, ). XQuery jazyk vycházející z SQL (pro složité dotazy) BI-TWA XPath a XSLT 2

XPath XPath (v 1.0) Jednoduchý dotazovací jazyk nad XML Syntaxe dotazu není vyjádřena v XML Zápis se podobá cestě v adresářové struktuře Analogie podadresářů a podelementů Dotaz se vyhodnocuje nad XML DOM stromem Případně podobnou strukturou, která je celá v paměti. Výsledkem XPath dotazu může být Množina uzlů DOM stromu Množina řetězců Číslo (float) Pravdivostní hodnota (ano/ne) BI-TWA XPath a XSLT 3

XPath Kontext vyhledávání Každý XPath dotaz je vyhodnocován v rámci kontextu. Kontext je definován: Kontextovým uzlem (elementem), v rámci kterého se vyhledává. Dalšími parametry (rozsah, proměnné, ). Osy (axes) definice směru vyhledávání Osy definují relativní pohyb po dokumentu. Např: child přímý syn uzlu (toto je výchozí osa) descendant potomek uzlu (v libovolné hloubce) parent přímý rodič (obdobně ancestor předek) following-sibling následující uzel na stejné úrovni preceding předchozí uzly (v pořadí definovaném dokumentem) attribute uzel typu atribut BI-TWA XPath a XSLT 4

XPath osy preceding ancestor preceding-sibling parent following-sibling self namespace child attribute following descendant descendant-or-self BI-TWA XPath a XSLT 5

XPath formát dotazu Formát dotazu Základní dotaz se skládá z kroků, které jsou oddělené lomítkem. Začíná-li lomítkem, bere se místo kontextu kořen dokumentu. Jeden krok je definován jako osa::test[predikát] Osa určuje, v jakém směru se krok provádí. Testem může být jméno (elementu, atributu, ) nebo typ. Typové testy jsou např. text() (textový uzel) nebo comment(). Predikáty filtrují výsledek a může jich být lib. mnoho. Do výsledku se zahrnou všechny uzly, které kroku vyhovují. Např. child::foo vybere všechny potomky s názvem foo. Predikáty mají tvar [výraz], kde výraz je vnořený XPath dotaz. Výsledek dotazu se převádí na boolean (pokud je třeba). Predikát se testuje v každém uzlu, který vyhovuje zvolenému kroku. Uzel se zařadí do výsledku, pouze pokud všechny predikáty daného kroku vrátí true. BI-TWA XPath a XSLT 6

XPath příklady Příklady jednoduchých dotazů: Všechny elementy s názvem foo, které jsou vnuky kontext. elem. child::*/child::foo Elementy bar, které jsou dětmi lib. foo (v celém dokumentu) /descendant::foo/child::bar Všechny atributy bar všech následujících elementů foo following::foo/attribute::bar Všechny následující elementy foo, které vlastní atribut bar following::foo[attribute::bar] Všechny elementy title, které mají textový obsah Úvod /descendant::title[child::text()='úvod'] Všechny děti foo a bar kontextového uzlu child::*[self::foo or self::bar] BI-TWA XPath a XSLT 7

XPath vestavěné funkce Vestavěné funkce a operátory XPath obsahuje knihovnu vestavěných funkcí. Volání funkce lze použít téměř na libovolném místě. Volání funkce je také XPath dotaz. Příklady: string(), number(), boolean() převede argument na jiný typ count(expr) vrací počet uzlů vrácený dotazem expr position() pozice kontextového uzlu v rámci svých sousedů last() index posledního uzlu v daném kontextu id(id) vrací množinu uzlů s daným ID (ID atributu dle DTD) concat(), substr() zřetězení a podřetězec sum(nodes) převede hodnoty daných uzlů na čísla a sečte je V rámci výrazů lze také používat běžné operátory. +, -, *, div, mod, and, or, <, >, =,!=, BI-TWA XPath a XSLT 8

XPath zkrácená syntax Zkrácená syntax Většina os má volitelný kratší zápis: child je výchozí a není třeba jej uvádět (child::foo ~ foo) self::* má zkratku "." a parent::* má zkratku ".." Jako v adresářové struktuře. "//" je zkratka za "/descendant-or-self::node()/" Tedy //foo vyhledá všechny elementy foo v celém dokumentu. Naopak.//bar vyhledá elementy bar jen v rámci kontextového elementu. attribute má zkratku "@" (attribute::bar ~ @bar). Zkrácené predikáty Existuje pouze zkratka pro pozici ([position() = 42] ~ [42]). Tzn. foo[3]/bar[5] je 5. bar uvnitř 3. foo v rámci kontext. elementu. Příklad co hledá následující dotaz?..//chapter[@title="intro"]/para[last()] BI-TWA XPath a XSLT 9

XPath příklady Příklady dotazů nad databází zaměstnanců Který zaměstnanec je definovaný uprostřed seznamu zaměstnanců? Zaměstnanci, kteří vedou víc než jednu skupinu? ID pana Mitkina? V kolika skupinách je Mitkin členem? Skupiny, které nemají vedoucího? Lidé, kteří nic nedělají? nejsou vedoucí ani členové skupiny ani nadřízení zamestnanci.xml BI-TWA XPath a XSLT 10

XPath příklady Příklady dotazů nad databází zaměstnanců Který zaměstnanec je definovaný uprostřed seznamu zaměstnanců? //zamestnanec[position()=ceiling(last() div 2)] Zaměstnanci, kteří vedou víc než jednu skupinu? ID pana Mitkina? V kolika skupinách je Mitkin členem? Skupiny, které nemají vedoucího? Lidé, kteří nic nedělají? nejsou vedoucí ani členové skupiny ani nadřízení BI-TWA XPath a XSLT 11

XPath příklady Příklady dotazů nad databází zaměstnanců Který zaměstnanec je definovaný uprostřed seznamu zaměstnanců? //zamestnanec[position()=ceiling(last() div 2)] Zaměstnanci, kteří vedou víc než jednu skupinu? //zamestnanec[count(vedouci) > 1] ID pana Mitkina? V kolika skupinách je Mitkin členem? Skupiny, které nemají vedoucího? Lidé, kteří nic nedělají? nejsou vedoucí ani členové skupiny ani nadřízení BI-TWA XPath a XSLT 12

XPath příklady Příklady dotazů nad databází zaměstnanců Který zaměstnanec je definovaný uprostřed seznamu zaměstnanců? //zamestnanec[position()=ceiling(last() div 2)] Zaměstnanci, kteří vedou víc než jednu skupinu? //zamestnanec[count(vedouci) > 1] ID pana Mitkina? string(//zamestnanec[prijmeni='mitkin']/@id) V kolika skupinách je Mitkin členem? Skupiny, které nemají vedoucího? Lidé, kteří nic nedělají? nejsou vedoucí ani členové skupiny ani nadřízení BI-TWA XPath a XSLT 13

XPath příklady Příklady dotazů nad databází zaměstnanců Který zaměstnanec je definovaný uprostřed seznamu zaměstnanců? //zamestnanec[position()=ceiling(last() div 2)] Zaměstnanci, kteří vedou víc než jednu skupinu? //zamestnanec[count(vedouci) > 1] ID pana Mitkina? string(//zamestnanec[prijmeni='mitkin']/@id) V kolika skupinách je Mitkin členem? count(//skupina[clen/@id = string(//zamestnanec[prijmeni='mitkin']/@id)]) Skupiny, které nemají vedoucího? Lidé, kteří nic nedělají? nejsou vedoucí ani členové skupiny ani nadřízení BI-TWA XPath a XSLT 14

XPath příklady Příklady dotazů nad databází zaměstnanců Který zaměstnanec je definovaný uprostřed seznamu zaměstnanců? //zamestnanec[position()=ceiling(last() div 2)] Zaměstnanci, kteří vedou víc než jednu skupinu? //zamestnanec[count(vedouci) > 1] ID pana Mitkina? string(//zamestnanec[prijmeni='mitkin']/@id) V kolika skupinách je Mitkin členem? count(//skupina[clen/@id = string(//zamestnanec[prijmeni='mitkin']/@id)]) Skupiny, které nemají vedoucího? //skupina[not(//zamestnanec/vedouci/@skupina = @id)] Lidé, kteří nic nedělají? nejsou vedoucí ani členové skupiny ani nadřízení BI-TWA XPath a XSLT 15

XPath příklady Příklady dotazů nad databází zaměstnanců Který zaměstnanec je definovaný uprostřed seznamu zaměstnanců? //zamestnanec[position()=ceiling(last() div 2)] Zaměstnanci, kteří vedou víc než jednu skupinu? //zamestnanec[count(vedouci) > 1] ID pana Mitkina? string(//zamestnanec[prijmeni='mitkin']/@id) V kolika skupinách je Mitkin členem? count(//skupina[clen/@id = string(//zamestnanec[prijmeni='mitkin']/@id)]) Skupiny, které nemají vedoucího? //skupina[not(//zamestnanec/vedouci/@skupina = @id)] Lidé, kteří nic nedělají? nejsou vedoucí ani členové skupiny ani nadřízení //zamestnanec[not(vedouci or (//skupina/clen/@id = @id) or (//zamestnanec/@vedouci = @id))] BI-TWA XPath a XSLT 16

XQuery XQuery Složitější dotazovací jazyk vydaný W3C v lednu 2007. Je nadmnožinou XPath 2.0 a vývoj byl koordinován i s XSLT. Konstruktivní syntax (podobná např. SQL) Schéma je založeno na příkazech FOR, LET, WHERE, ORDER BY a RETURN. Jednotlivé bloky využívají XPath k vybírání částí XML dokumentu. Výstupem může být téměř cokoli (např. nově zkonstruovaný XML dokument). Na rozdíl od XPath dovoluje např. deklarovat vlastní funkce. XQuery je funkčně podobné XSLT. XQuery bylo původně určeno pro velké XML databáze. XSLT je složitější a nabízí silnější prostředky. BI-TWA XPath a XSLT 17

Transformace a prezentace XML

XSL a prezentace XML Problém s prezentací XML dat Např. HTML lze snadno prezentovat. Používá dobře známé značky, které prohlížeč umí zobrazit. Vzhled se snadno modifikuje CSS XML dovoluje návrh vlastních značek. Prohlížeč neví, jak kterou značku zobrazit. XSL (Extensible Stylesheet Language) Řeší otázku prezentace libovolných XML dat. Mnohem silnější než CSS (umožňuje libovolné změny v datech). XSL = XSLT + XSL-FO (+ XPath) XSLT jazyk pro transformace dokumentů. XSL-FO speciální sada značek (formátovacích objektů) BI-TWA XPath a XSLT 19

XSLT XML dokument XSLT procesor Výsledný dokument (XML, HTML nebo plain text) XSLT XSL Transformations Jazyk popisující transformace XML dokumentů. Transformace je uložena opět jako XML dokument. Výstupem transformace může být. Nový XML dokument HTML dokument Čistě textový soubor BI-TWA XPath a XSLT 20

XSLT Princip fungování Transformace se skládá ze šablon. Každá šablona vyhledává části původního dokumentu pomocí XPath. Následně popisuje, co se má z nalezeného fragmentu sestavit. Zápis transformace Dokument je uzavřen v kořenovém elementu: <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/xsl/transform"> Uvnitř se nachází elementy, které nastavují parametry zpracování. <xsl:output method="text html xml" /> <xsl:include href=" " />, <xsl:import href=" " /> A také šablony BI-TWA XPath a XSLT 21

XSLT Šablony Definují se elementem <xsl:template>. Template musí mít definovaný atribut match nebo name. match definuje XPath dotaz, který vybírá uzly pro šablonu. name pojmenovává šablonu, aby na ni šlo později odkázat. Volitelně může mít také definovanou priority. Obsahem šablony je text a elementy, které se vygenerují do výstupu, když je šablona použita. Uvnitř je také možné používat další konstrukce XSLT (např. cykly). Pokud je šablon více, vybírá se ta, která nejlépe vyhovuje zpracovávanému uzlu. Pravidla jsou poměrně komplikovaná (viz reference XSLT). Na počátku se vybírá šablona, která odpovídá celému dokumentu. BI-TWA XPath a XSLT 22

XSLT Vkládání hodnot Hodnoty lze do šablon vkládat elementem <xsl:value-of />. Podmínky Element má atribut select, který obsahuje XPath dotaz. XPath dotaz se vyhodnotí, převede na string a vloží do výstupu. Kontextový uzel pro dotaz odpovídá uzlu, který se zpracovává v šabloně. Nabízí standardní možnosti větvení šablon. Podmínka je vyjádřena v XPath (převádí se na boolean výraz). <xsl:if test="expr">... </xsl:if> <xsl:choose> <xsl:when test="expr">...</xsl:when>... <xsl:otherwise>...</xsl:otherwise> </xsl:choose> Příklad 1 BI-TWA XPath a XSLT 23

Cykly XSLT Cyklus se vytváří konstrukcí <xsl:for-each select=" ">. Atribut select obsahuje XPath dotaz, jehož výsledkem je množina uzlů. Tělo cyklu se provede pro každý uzel z množiny. While-cyklus není v XSLT definován, ale lze jej nahradit rekurzí. Třídění Uvnitř cyklu je možné uvést element <xsl:sort>, který definuje, v jakém pořadí mají být uzly zpracovány. Důležité atributy select XPath dotaz vracející data, která se budou porovnávat. data-type typ dat (jak se mají porovnat). order určuje pořadí (vzestupně/sestupně). Příklad 2 BI-TWA XPath a XSLT 24

XSLT Rekurzivní zpracování a volání šablon V rámci šablony je možné nechat rekurzivně zpracovat děti zdrojového uzlu voláním <xsl:apply-templates />. Volitelně může definovat XPath výraz (které uzly mají být zpracovány) Pro každý uzel zvlášť se vybírá šablona, která mu vyhovuje nejvíc. Uvnitř apply-templates lze použít element sort (jako u cyklu). Pojmenované šablony je také možné volat <xsl:call-template>. Atribut name definuje, která šablona se má volat. Kontext zpracovávaného uzlu zůstává stejný. Volání může definovat parametry <xsl:with-param... /> Hodnota parametru je definována v těle nebo atributem select. Parametry jsou přístupné v XPath dotazech volané šablony ($param). BI-TWA XPath a XSLT 25

XSLT Proměnné Definují se konstrukcí <xsl:variable name="...">. Hodnotu mají definovanou v těle elementu nebo přes atribut select. Hodnoty proměnných se nedají měnit. Nastavené proměnné lze používat v XPath dotazech ($variable). Proměnné můžou být globální i lokální (def. v rámci jedné šablony). Složitější techniky vytváření výstupu V některých situacích je potřeba poskládat výstupní elementy s možností větší kontroly. K tomu slouží speciální elementy: <xsl:element name="..."> vytvoří element <xsl:attribute name="..."> přidá elementu atribut <xsl:text> vloží do výstupu text Příklad 3 BI-TWA XPath a XSLT 26

XSLT Vestavěná pravidla Aby bylo možné šablony jednoduše spojovat rekurzí (pomocí apply-templates), je definováno několik vestavěných pravidel. Tato pravidla se používají vždy (nejde je zrušit). <xsl:template match="* /"> <xsl:apply-templates/> </xsl:template> Rekurzivně zpracuje děti. <xsl:template match="text() @*"> <xsl:value-of select="."/> </xsl:template> Atributy a text vypíše. Komentáře a P.I. se odstraní. <xsl:template match="processing-instruction() comment()"/> Příklad 4 BI-TWA XPath a XSLT 27

XSLT Časté způsoby použití zobrazení v prohlížeči Provázání prezentačních dat s XML souborem Odkaz na transformační skript se zapisuje těsně za preambuli. <?xml version="1.0" encoding="utf-8"?> <?xml-stylesheet type="text/xsl" href="adresar.xsl"?> <adresar>...</adresar> Ruční transformace skriptem Na straně klienta Použití např. JavaScriptu (např. objekt XSLTProcessor()) Vhodné např. pro fragmenty XHTML v technologii AJAX Na straně serveru Pokud prohlížeč neumí ani XML, ani JavaScript Např. třída XSLTProcessor v PHP BI-TWA XPath a XSLT 28

XSL-FO XSL Formatted Objects Sada XML elementů sloužících k formátování výstupu. Jsou orientovány na sazbu (tj. řeší detailně např. i rozměry). Na rozdíl např. od HTML, které může být zobrazeno různě. Struktura XSL-FO dokumentu <?xml version="1.0" encoding="utf-8"?> <fo:root xmlns:fo="http://www.w3.org/1999/xsl/format"> <fo:layout-master-set> <fo:simple-page-master master-name="a4">...</fo:simp...>... </fo:layout-master-set> <fo:page-sequence master-reference="a4">... </fo:page-sequence> </fo:root> Obsah stránky Seznam formátovacích šablon pro stránky BI-TWA XPath a XSLT 29

XSL-FO Vlastnosti formátování Veškerý obsah (text, obrázky, ) se při formátování chová jako obdélníková oblast. Existují různé typy oblastí: Page veškerý obsah je formátován na stránky (logické celky). Region stránka se dále dělí na regiony (záhlaví, zápatí, tělo, ). Block obsah se seskupuje do bloků (blok je např. jeden odstavec). Line reprezentuje obsah na jednom řádku. Inline oblasti na nejnižší úrovni v rámci řádku (jednotlivé znaky, ). V rámci jednoho bloku lze obsah formátovat různě. Klasický text, tabulky, seznamy, Blok může mít i další parametry (podobné CSS). Font, barvy, okraje, odsazení, Do výstupu je možné vkládat foreign objekty (např. obrázky). BI-TWA XPath a XSLT 30

XSL složitější transformace XML dokument HTML dokument WML stránky plain text Prohlížeč XSLT procesor XSL-FO dokument XSL formatter PDF XSLT XSLT šablona XSLT šablona šablona TeX zdrojový kód TeX BI-TWA XPath a XSLT 31

XSLT další příklad použití Příklad problému Řada firem pracuje s daty ze stejné domény. Např. záznamy o obchodování na burze. Záznamy o obchodních transakcích exportují do XML. Každý má vlastní formát (schéma). Otázka integrace Firmy potřebují začít komunikovat i mezi sebou. Změna interních systémů (formátů) může být velmi nákladná. Řešení Definujeme univerzální XML formát, který zahrnuje prvky všech zúčastněných firem. Každá firma si pouze vytvoří XSLT transformace z a do univerzálního formátu. BI-TWA XPath a XSLT 32

XSLT další příklad použití Lokální XML formát XSLT XSLT Lokální XML formát univerzál. XML formát Lokální XML formát XSLT XSLT Lokální XML formát BI-TWA XPath a XSLT 33

Další informace www.w3c.org WWW Consortium vydavatel standardů, které se týkají XML. www.w3schools.com Pěkné tutoriály (a stručné reference) v angličtině týkající se XML, webu a jiných technologií, zejména od W3C. Jiří Kosek knihy i web Známý český popularizátor a publicista (nejen) XML. Nakladatelství O'Reilly Vydalo řadu pěkných knih o XML a souvisejících technologiích. BI-TWA XPath a XSLT 34