XSLT extensible Stylesheet Language Transformation

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.

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

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

Dotazování nad XML daty a jazyk XPath

PRG036 Technologie XML

XPath je jazyk, který slouží k

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

Tvorba informačních systémů

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

Optimalizace procesu generování map

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

XSLT a jmenné prostory

Tvorba informačních systémů

Kartografická webová aplikace. Přednáška z předmětu Počítačová kartografie (KMA/POK) Otakar Čerba Západočeská univerzita

XML snadno a rychle Martin Kuba, ÚVT MU

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

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

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

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

Lehký úvod do XML v kartografii

APLIKACE XML PRO INTERNET

Dotazování nad stromem abstraktní syntaxe

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

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

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.

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

Úvod do XSLT 2.0. Jirka Kosek Copyright 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:

Kaskádové styly (CSS)

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

Využití XML v DB aplikacích

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

NSWI096 - INTERNET JavaScript

PRG036 Technologie XML

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

Příklad buňka tabulky

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

TVORBA MAP PRO ATLAS MEZINÁRODNÍCH VZTAHŮ

MBI - technologická realizace modelu

VÝVOJ INTERNETOVÝCH APLIKACÍ - VIA

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

TRANSFORMACE OBJEKTOVÉ PETRIHO SÍTĚ Z JAZYKA OPNML DO GRAFU TRANSFORMATION OF OBJECT-ORIENTED PETRI NET FROM OPNML LANGUAGE TO GRAPH

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

DJ2 rekurze v SQL. slajdy k přednášce NDBI001. Jaroslav Pokorný

Alena Malovaná, MAL305

XML terminologie a charakteristiky. Roman Malo

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

Ukazka knihy z internetoveho knihkupectvi

Jazyky pro popis dat

Výměnný formát XML DTM DMVS PK

CSS V DIGITÁLNÍ KARTOGRAFII

Oracle XML DB. Tomáš Nykodým

Překladač XSL šablon

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í

RDF a RDF Query. Jakub Nerad 1. prosince Nerad () RDF a RDF Query 1. prosince / 16

TRANSFORMACE XML DOKUMENTŮ POMOCÍ JAZYKA XSLT

Interaktivní databáze s webovým rozhraním pro uchovávání a

Úvod do databázových systémů

Další XML technologie

Obsah prezentace. Co je to XML? Vlastnosti. Validita

Vysoká škola ekonomická v Praze

XML. Aleš Keprt

3. přednáška z předmětu GIS1 atributové a prostorové dotazy

XQuery: dotazovací jazyk nad XML

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

Úvod do programovacích jazyků (Java)

Jazyky XQuery a XPath 1

Pravidla dokumentace

Java a XML. 10/26/09 1/7 Java a XML

Wichterlovo gymnázium, Ostrava-Poruba, příspěvková organizace. Maturitní otázky z předmětu INFORMATIKA A VÝPOČETNÍ TECHNIKA

Kritéria hodnocení praktické maturitní zkoušky z databázových systémů

XFORMS JAKO NÁHRADA WEBOVÝCH FORMULÁŘŮ XFORMS - WEB FORMS SUCCESSOR

SCHÉMOVÉ JAZYKY. Přednáška z předmětu KMA/POK. Otakar ČERBA Západočeská univerzita v Plzni

Mapové služby podle OGC

XML schémata XML teorie a praxe značkovacích jazyků (IZI238)

Programovací jazyk Pascal

VYSOKÉ UČENÍ TECHNICKÉ V BRNĚ BRNO UNIVERSITY OF TECHNOLOGY

Úvod do databázových systémů

PHP a XML. Stručný obsah

API pro práci s XML. Jirka Kosek. Poslední modifikace: $Date: 2014/12/17 17:15:28 $ Copyright Jiří Kosek

Modely vyhledávání informací 4 podle technologie. 1) Booleovský model. George Boole Aplikace booleovské logiky

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

Vývoj Internetových Aplikací

OBJECT DEFINITION LANGUAGE. Jonáš Klimeš NDBI001 Dotazovací Jazyky I 2013

Logický datový model VF XML DTM DMVS

POLOPROVOZ ZNALOSTNÍ DATABÁZE INTERPI DOKUMENTACE

RDF serializace Turtle

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

Střední průmyslová škola elektrotechnická Praha 10, V Úžlabině 320 M A T U R I T N Í T É M A T A P Ř E D M Ě T U

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.

SQL SQL-SELECT. Informační a znalostní systémy. Informační a znalostní systémy SQL- SELECT

<knihy:clanek xmlns:kniha=

KIV/ZIS cvičení 5. Tomáš Potužák

PostGIS Topology. Topologická správa vektorových dat v geodatabázi PostGIS. Martin Landa

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

Práce se soubory opakování

UML. Unified Modeling Language. Součásti UML

Západočeská univerzita v Plzni Fakulta aplikovaných věd Katedra informatiky a výpočetní techniky. Dokumentace k programu MMDoc

První kapitola úvod do problematiky

Databázové systémy. Cvičení 6: SQL

Transkript:

XSLT extensible Stylesheet Language Transformation Přednáška z předmětu Počítačová kartografie Otakar ČERBA Západočeská univerzita v Plzni 12. 11. 2007 Poslední aktualizace: 1. 12. 2010

XSLT Na pomezí mezi SQL (dotazovacími jazyky) a programovacími jazyky Obsahuje dotaz na data, ale také možnost úpravy (modifikace) těchto dat Nemá plnou funkčnost obojího, ale možnosti Dotazovací jazyky XSLT Programovací jazyky

Základní princip

Zdroje informací Kosek, J. XSLT v příkladech Kosek, J. Přednášky předmětu IZI238 (MP3) Nič, M. XSLT 2.0 Tutorial W3C: XSLT Tutorial W3C Schools: The extensible Stylesheet Language Family Holman, G. K. What Is XSLT Tennakoon, W.T.M.S.B. Visualization of GML data using XSLT Extensible Stylesheet Language (XSL)

XSL extensible Stylesheet Language XSLT XSL FO Transformační část Formátovací část

Transformační jazyky Kaskádové styly (CSS) W3C standard Document Style Semantics and Specification Language (DSSSL) ISO/IEC 10179/1996 Formatted Output Specification Instance (FOSI) CSS Ano Ano Ne CSS Vlastnost Používání v HTML Používání v XML Transformační část Syntaxe XML Ne Ano Ano XML

XSLT 2.0 XSLT 2.0 společně XPath 2.0 získaly 23.1.2007 (verze 1.0-16.11.1999) oficiální statut W3C Recommendation. Specifikace XSLT 2.0, XPath 2.0 a XQuery je tvořena celkem osmi dokumenty: 1. XSL Transformations (XSLT)Version 2.0 2. XML Path Language (XPath)2.0 3. XQuery 1.0 and XPath 2.0 Functions and Operators 4. XQuery 1.0 and XPath 2.0 Data Model (XDM) 5. XQuery 1.0: An XML Query Language 6. XSLT 2.0 and XQuery 1.0 Serialization 7. XML Syntax for XQuery 1.0 (XQueryX) 8. XQuery 1.0 and XPath 2.0 Formal Semantics

XSLT 2.0 XSLT zásadně změnilo charakter. Od stylového jazyku (jakési dokonalejší verze kaskádových stylů) se posouvá spíše do oblasti programovacích jazyků, o čemž svědčí doplnění a zdokonalení práce s funkcemi, podmíněné výrazy apod. I have started to use XSLT 2.0 as my primary programming language (in combination with Python) and I am amazed by its power. Miloslav Nič

Základní princip Šablona (Template) Výběr části zdrojového dokumentu XPath Definování transformačních pravidel

XPath Jednoduchý dotazovací jazyk, využívá se v aplikacích XSLT, XPointer, XML Schema (refernční integrita), XML Query (XQuery) XForms a dalších jazycích, proto tvoří samostatný standard.

XML Infoset XSLT procesor nepracuje přímo s fyzickou reprezentací XML dokumentu v souboru, ale operuje (dotazuje se) nad abstraktním modelem dokumentu, který si obvykle vytvoří v paměti. Model vychází se samostatné specifikace XML Infoset (XML Information Set). Celý dokument je reprezentován jako strom, který obsahuje uzly několika typů.

XML Infoset typy uzlů Každý uzel ve stromové reprezentaci má kromě typu i svůj obsah. Ten se skládá z textu, který uzel obsahuje. Pro elementy, které nejsou listy, se text získá tak, že se spojí textové uzly, které jsou jeho potomky. Kořenový uzel Element Atribut Textový uzel Instrukce pro zpracování Komentář Jmenný prostor

XML Infoset - příklad <Atlas> <Mapa>Klaudyjánova mapa</mapa> <Mapa>Fabriciova mapa</mapa> <Mapa>Helwigova mapa</mapa> <Autor>Jan Novák</Autor> </Atlas> / Atlas Mapa Mapa Mapa Autor Klaudyjánova mapa Fabriciova mapa Helwigova mapa Jan Novák

Vztahy mezi uzly

Začátek cesty (výběr uzlů) Od aktuálního uzlu relativní cesta Mapa Od kořene absolutní cesta /Mapa Od libovolného prvky např. od prvku s konkrétním ID

Komponenty cesty Identifikátor osy ten určuje, ve kterém směru se budeme od aktuálního uzlu pohybovat Test uzlu umožňuje vybírat jen některé uzly na základě jejich typu a názvu Predikát vybrané uzly můžeme dále filtrovat pomocí podmínek, které jsou testována pro každý uzel

Identifikátory osy Celkem 13 druhů Při zápisu se za identifikátor osy doplňují dvě dvojtečky Např. ancestor:: ancestor-or-self parent child descendant following following-sibling preceding self attribute namespace

Test uzlu Konkrétní název uzlu Znak * libovolný element prefix:* libovolný element konkrétního prefixu processing-instruction() comment() text() node()

Zkrácené názvy uzlů child::para para attribute::id @id self::node(). parent::node().. /descendant-or-self::node()/child::nadpis //nadpis

Predikáty - příklady Mapa /Mapa //Mapa * Mapa/* */Mapa @nazev Mapa/@nazev //*[@*] Mapa[1] Mapa[last()] Atlas/Sekce[3] /Mapa[2] Atlas//Mapa //Atlas/Mapa..//Mapa....//Mapa //Mapa[lang='cs'] //Mapa[lang='cs']/Autor //Mapa[lang='cs'][4] //Mapa[4][lang='cs'] preceding::*[1] preceding-sibling::*[1]

XPath operátory Sjednocení výrazů: Logické spojky: and, or, not Relační operátory: =,!=, <=, <, >=, > Matematické operátory: +, -, *, div, mod

XPath funkce Práce s uzly: last(), position(), count()... Řetězcové funkce: string(), concat(), substring()... Logické funkce: boolean(), not(), true(), false() Funkce pro práci s čísly: sum(), round()... Rozšiřující funkce definované v XSLT document() generate-id() format-number()...

Připojení stylu Připojení v rámci XML dokumentu <?xml version="1.0" encoding="utf-8"?> <?xml-stylesheet href="styl.xsl" type="text/xsl"?> <dokument>... </dokument> Připojení v rámci stylového procesoru saxon -o Reserse.html Reserse.xml reserse_html.xsl

Hlavička stylu <?xml version="1.0" encoding="utf-8"?> <xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/xsl/transform" version="1.0">... </xsl:stylesheet>

xsl:output Formát výstupního dokumentu method xml, html, xhtml, text encoding kódování výstupu + dalších 15 atributů (např. Standalone, version apod.) <xsl:output method="xml" encoding="utf-8"/>

Šablona Šablona (Template) Výběr části zdrojového dokumentu XPath Definování transformačních pravidel <?xml version="1.0"> <CartoGuide> </CartoGuide> <xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/ XSL/Transform" version="2.0"> <xsl:output method="xml"/> <xsl:template match= / > <CartoGuide> </CartoGuide> </xsl:template> </xsl:stylesheet>

xsl:apply-templates <Kartografie> <Stat>France</Stat> <Stat>Spain</Stat> </Kartografie> <CartoGuide> <Country/> <Country/> </CartoGuide> <xsl:template match= / > <CartoGuide> <xsl:apply-templates select= Stat /> </CartoGuide> </xsl:template> <xsl:template match= Stat > <Country/> </xsl:template>

xsl:value-of <Kartografie> <Stat>France</Stat> <Stat>Spain</Stat> </Kartografie> <CartoGuide> <Country>France</Country> <Country>Spain</Country> </CartoGuide> <xsl:template match= / > <CartoGuide> <xsl:apply-templates select= Stat /> </CartoGuide> </xsl:template> <xsl:template match= Stat > <Country> <xsl:value-of select=. /> </Country> </xsl:template>

xsl:value-of <Kartografie> <Stat>France</Stat> <Stat>Spain</Stat> </Kartografie> <CartoGuide sum= 2 > <Country>France</Country> <Country>Spain</Country> </CartoGuide> <xsl:template match= / > <CartoGuide sum= {count(//stat)} > <xsl:apply-templates select= Stat /> </CartoGuide> </xsl:template> <xsl:template match= Stat > <Country> <xsl:value-of select=. /> </Country> </xsl:template>

xsl:element <Kartografie> <Stat>France</Stat> <Stat>Spain</Stat> </Kartografie> <xsl:template match= / > <CartoGuide> <xsl:apply-templates select= Stat /> </CartoGuide> </xsl:template> <xsl:template match= Stat > <xsl:element name= Stat{.} > <xsl:value-of select=. /> </xsl:element> </xsl:template> <CartoGuide> <CountryFrance>France</CountryFrance> <CountrySpain>Spain</CountrySpain> </CartoGuide>

xsl:for-each <Kartografie> <Stat>France</Stat> <Stat>Spain</Stat> </Kartografie> <xsl:template match= / > <CartoGuide> <xsl:for-each select= Stat > <Country> <xsl:value-of select=. /> </Country> </xsl:for-each> </CartoGuide> </xsl:template> <CartoGuide> <Country>France</Country> <Country>Spain</Country> </CartoGuide>

Rozhodovací procesy <xsl:if test="podmínka"> příkazy </xsl:if> <xsl:choose> <xsl:when test="podmínka"> příkazy </xsl:when> <xsl:when test="podmínka"> příkazy </xsl:when> <xsl:when test="podmínka"> příkazy </xsl:when>... <xsl:otherwise> příkazy </xsl:otherwise> </xsl:choose>

Další možnosti XSLT Parametry a proměnné Řazení a seskupování Používání klíčů Kombinování stylů Výstup do více souborů Více souborů na vstupu

Stylové procesory Saxon Verze SA a B Verze 6.x a 8.x Saxon 9.0 (3.11.2007), Saxon 6.5.5 Verze Java a.net Xalan XT libxslt/xsltproc MSXML.Net System.Xml

XSLT v kartografii Převod mezi různými datovými a metadatovými formáty (např. GML, JML, cgml, LandXML apod.) Tvorba vektorových digitálních map neboli převod prostorových dat do vektorových grafických formátů, například SVG nebo VML Vytváření jednoduchých dotazů a filtrů

XSLT 2.0 - sekvence Pro digitální kartografii (především pro generování map) je výhodná práce sekvencemi a textovými řetězci, které mohou představovat seznamy souřadnic (např. ve formátu GML nebo SVG). Otázkou je rychlost transformačních procesorů, které jsou většinou napsány v Javě, při zpracování takového objemu dat, který je v oblasti geoinformačních technologií běžný.

<aaa> <bbb>b1</bbb> <bbb>b2</bbb> <bbb>b3</bbb> </aaa> <xsl:template match="/aaa"> <yyy> <xsl:value-of select="bbb[3],bbb[1],bbb[2]"/> </yyy> <xxx> <xsl:value-of select="bbb[2],12,'c',bbb[1]"/> </xxx> </xsl:template> <yyy>b3 b1 b1 b2</yyy> <xxx>b2 12 12 c b1</xxx>

XSLT 2.0 - prohledávání Prohledávání a rozřazování rozsáhlých dokumentů obsahující prostorová data s vekým počtem atributů zjednoduší a zřejmě také zrychlí používání klíčů a možnost seskupování dat na základě zadaného výrazu (velice jednoduše se budou například řadit obce na základě příslušnosti k obci s rozšířenou působností).

<aaa> <bbb v="a2"/> <ccc v="1"/> <ddd v="1"/> <eee v="a2"/> <fff v="1"/> <ggg v="zz3"/> </aaa> <xsl:template match="/aaa"> <xsl:for-each-group select="*" groupby="@v"> <sss><xsl:apply-templates select="."/></sss> <ggg id="{current-grouping-key()}"> <xsl:apply-templates select="currentgroup()"/> </ggg> </xsl:for-each-group> </xsl:template> <xsl:template match="*"> <xsl:copy-of select="."/> </xsl:template> <sss> <bbb v="a2"/> </sss> <ggg id="a2"> <bbb v="a2"/> <eee v="a2"/> </ggg> <sss> <ccc v="1"/> </sss> <ggg id="1"> <ccc v="1"/> <ddd v="1"/> <fff v="1"/> </ggg> <sss> <ggg v="zz3"/> </sss> <ggg id="zz3"> <ggg v="zz3"/> </ggg>

XSLT 2.0 - matematika XSLT 2.0 integrovala řadu funkcí EXSLT, které jsou při tvorbě digitálních map nezbytné. Například se jedná o matematické funkce (součet, průměr, maximum, minimum) používané při tvorbě grafů a diagramů při generování kartodiagramů nebo při generování intervalů stupnic při generování kartogramů.

<aaa> <a>5</a> <a>3</a> <a>7</a> <a>2</a> </aaa> <bbb>99</bbb> <ccc>7</ccc> <ddd>2</ddd> <eee/> <xsl:template match="/aaa"> <bbb> <xsl:value-of select="max(1 to to 99)"/> </bbb> <ccc> <xsl:value-of select="max(a)"/> </ccc> <ddd> <xsl:value-of select="min(a)"/> </ddd> <eee> <xsl:value-of select="max(b)"/> </eee> </xsl:template>

XSLT 2.0 - schémata Práce s datovými typy XML Schema, které jsou přebírány i do dalších aplikací (např. jazyky RELAX NG, OWL) je důležitá z hlediska tvorby obecného sémantického dokumentu a také snažší kontrole správnosti dokumentu (zabrání se tak například používaní textových řetězů místo čísel apod.).

XSLT 2.0 regulární výrazy Práce s regulárními výrazy patří mezi další výhody druhé verze XSLT. Například v SVG souborech půjde odstranit vysoké hodnoty jednotlivých souřadnic (dojde ke zmenšení velikosti souborů), odříznutá hodnota bude do souboru vrácena pouze jednou ve formě translační transformace.

Atlas mezinárodních vztahů