XSLT - ohjelmaesimerkkejä. Jaana Holvikivi Metropolia

Samankaltaiset tiedostot
Helsingin yliopisto/tktl XML-metakieli XSLT XSL - extensible stylesheet language XSLT

Hohde Consulting 2004

XSLT - ohjelmoinnin perusteet. Jaana Holvikivi Metropolia

XSL-muunnokset. 9 XSL-muunnokset

9.16 XSLT ja nimiavaruudet (1/3): literaali oletusnimiavaruus

Ensimmäiset XPath-lausekkeet

XSL-muunnokset. 9 XSL-muunnokset

è è è XSL-muunnokset 9 XSL-muunnokset

Digitaalisen median tekniikat. JSP ja XML Harri Laine 1

Digitaalisen median tekniikat. JSP ja XML

XML merkintäkielten perusteet. Luento 2 - XSLT Pekka Aarnio

Extensible Stylesheet Language (XSL)

XML Technologies and Applications - harjoitustyö -

Ylläpitodokumentti. Aija. Helsinki Ohjelmistotuotantoprojekti HELSINGIN YLIOPISTO Tietojenkäsittelytieteen laitos

Helsingin yliopisto/tktl XML-metakieli XSL-FO XSL-FO. XSL-FO sivut

Helsingin yliopisto/tktl XML-metakieli XSL-FO XSL - extensible stylesheet language XSL-FO

XML-datan kysely. Topi Sarkkinen. Seminaarityö. Helsinki HELSINGIN YLIOPISTO Tietojenkäsittelytieteen laitos

Paikkatiedon esittäminen XML-muodossa: Oracle Spatial, SVG ja GML

XML, XHTML ja CSS. T Hypermediadokumentin laatiminen. Mikko Pohja

Tuotteiden tiedot: Lisää uuden tuotteen tiedot. Muuta tai poista tuotteen tiedot. Selaa kaikkien tuotteiden tietoja.

Sisältö. XML, XHTML ja CSS XML XML. XML:n ja HTML:n ero. XML kieliä XML XHTML CSS XSL. T Hypermediadokumentin laatiminen 2002

Hohde Consulting 2004

Johdatusta selainohjelmointiin

XSL Formatting Objects

ICT1TN004. Lomakkeet. Heikki Hietala

Ohjelmointikielet ja -paradigmat 5op. Markus Norrena

XML / DTD / FOP -opas Internal

JavaScript alkeet Esimerkkikoodeja moniste 2 ( Metropolia)

XML standardeja. nimiavaruudet, namespaces XHTML XML Schema linkitys Jaana Holvikivi 1

2. PEHMEÄ XHTML XRAJAHTML

Javascript 2: Ohjelmointikielen ominaisuudet. Jaana Holvikivi Metropolia

1.3Lohkorakenne muodostetaan käyttämällä a) puolipistettä b) aaltosulkeita c) BEGIN ja END lausekkeita d) sisennystä

Digitaalisen median tekniikat css tyylimääritykset

XML prosessori. XML prosessointi. XML:n kirjoittaminen. Validoiva jäsennin. Tapahtumaohjattu käsittely. Tapahtumaohjattu käsittely.

ETL-DEMO. Esimerkki ETL-kuvauskielen käyttöstä

H T M L eli kuinka laadin itselleni päheät kotisivut. Janne Käki

1.3 Lohkorakenne muodostetaan käyttämällä a) puolipistettä b) aaltosulkeita c) BEGIN ja END lausekkeita d) sisennystä

H T M L eli kuinka laadin itselleni päheät kotisivut. Janne Käki

Digitaalisen median tekniikat css tyylimääritykset Harri Laine 1

Digitaalisen median tekniikat css tyylimääritykset

SQL-perusteet, SELECT-, INSERT-, CREATE-lauseet

Esimerkki uudelleenohjauksen teknisestä toteutuksesta

Johdatus XML teknologioihin

XML rakenteen suunnittelu. Jaana Holvikivi

Ohjelmoinnin peruskurssien laaja oppimäärä

812336A C++ -kielen perusteet,

Ohjelmoinnin peruskurssien laaja oppimäärä

C++11 seminaari, kevät Johannes Koskinen

XML - perusteet. Ctl230: Luentokalvot Miro Lehtonen

HTML & CSS. HTML (HyperText Markup Language) Antti Koivisto. ! HTML on sivujen kuvauskieli.

XML JA SEN MUUNTAMINEN XSL-MUUNNOSTEN AVULLA

DOORS 7.1 Test Tracking Toolkit

FinFamily PostgreSQL installation ( ) FinFamily PostgreSQL

2) Aliohjelma, jonka toiminta perustuu sivuvaikutuksiin: aliohjelma muuttaa parametrejaan tai globaaleja muuttujia, tulostaa jotakin jne.

Luento 3: Tietorakenteiden esittäminen

SIMULINK S-funktiot. SIMULINK S-funktiot

Choose Finland-Helsinki Valitse Finland-Helsinki

Web-teknologiat. XML-datan kysely Topi Sarkkinen

Henkiset kilpailut / Cultural competitions

XML-evoluutio ja kestävä kehitys

Muotoilutoliot. XSL:n muotoiluoliot. Muotoiluolio. Muotoilualueet. Lohkoalueiden sijoittelu. Muotoilualueiden sijoittelu. Rivialueiden ominaisuuksia

Lab SBS3.FARM_Hyper-V - Navigating a SharePoint site

811120P Diskreetit rakenteet

811312A Tietorakenteet ja algoritmit , Python-kielinen harjoitustyö

Rakenteisen oppimateriaalin tuottaminen verkossa esimerkki Rhaptos. Antti Auer Koordinaattori, HT Jyväskylän yliopisto Virtuaaliyliopistohanke

Mark Summary Form Taitaja-Mästare 2009

Metsälamminkankaan tuulivoimapuiston osayleiskaava

directive attr1= value1 attr2= value2 %>

PIC-koodin luominen URF-tietokantaan Participant Portal

LUONNOS RT EN AGREEMENT ON BUILDING WORKS 1 THE PARTIES. May (10)

6 XML-työkalut 1. 6 XML-työkalut

Perusteet. Pasi Sarolahti Aalto University School of Electrical Engineering. C-ohjelmointi Kevät Pasi Sarolahti

TM ETRS-TM35FIN-ETRS89 WTG

Helpottuuko sovellusten välinen integraatio XML:n avulla - kokemuksia ja ratkaisuja, teknologiajohtaja Sauli Tujunen, atbusiness Communications Oyj

JHS XXX Paikkatiedon yksilöivät tunnisteet Liite 2: Esimerkki tiedontuottajan URI-palvelun teknisestä toteutuksesta

WindPRO version joulu 2012 Printed/Page :47 / 1. SHADOW - Main Result

DOM ja Ajax. Jaana Holvikivi Metropolia. J.Holvikivi

Sisällys. 3. Muuttujat ja operaatiot. Muuttujat ja operaatiot. Muuttujat. Operaatiot. Imperatiivinen laskenta. Muuttujat. Esimerkkejä: Operaattorit.

JavaScript alkeet Esimerkkikoodeja moniste 2

Ohjelmoinnin peruskurssien laaja oppimäärä

XML-dokumenttien deklaratiivinen kyselykieli. Teemu Kumpulainen

Operatioanalyysi 2011, Harjoitus 2, viikko 38

Kylänetti projektin sivustojen käyttöohjeita Dokumentin versio 2.10 Historia : 1.0, 1.2, 1.6 Tero Liljamo / Deserthouse, päivitetty 25.8.

3. Muuttujat ja operaatiot 3.1

Hohde Consulting 2004

XML johdanto, uusimmat standardit ja kehitys

Tynnyrivaara, OX2 Tuulivoimahanke. ( Layout 9 x N131 x HH145. Rakennukset Asuinrakennus Lomarakennus 9 x N131 x HH145 Varjostus 1 h/a 8 h/a 20 h/a

On instrument costs in decentralized macroeconomic decision making (Helsingin Kauppakorkeakoulun julkaisuja ; D-31)

Helsingin yliopisto/tktl XML-metakieli XPath

XML-merkkaus. Merkkidata, prosessointikomennot, kommentit

Muuttujatyypit ovat Boolean, Byte, Integer, Long, Double, Currency, Date, Object, String, Variant (oletus)

TM ETRS-TM35FIN-ETRS89 WTG

Est.kand Kandidaatintyö ja seminaari: L A T E Xin käyttöönotto

TM ETRS-TM35FIN-ETRS89 WTG

Digitaalisen median tekniikat xhtml - jatkuu Harri Laine 1

7 DTD ja entiteetit: dokumentin fyysinen rakenne

Mark Summary Form Taitaja-Mästare 2009

valitsin on useimmiten html-elementti, jolle tyyli halutaan luoda

Transkriptio:

XSLT - ohjelmaesimerkkejä Jaana Holvikivi Metropolia

XML source XSLT source Source tree Transformation Stylesheet tree Result tree Serialize XML XHTML text

Lajittelu, Sorting <?xml version="1.0"?> <?xml-stylesheet type="text/xsl" href="mooming.xsl"?> <crew> <member name="mamma" gear="handbag" cloth="apron"/> <member name ="Pappa" gear="pipe" cloth="hat"/> <member name ="Mymlan" gear="mirror" cloth="dress"/> </crew>

xsl:sort <?xml version="1.0"?> <xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/xsl/transform" version="1.0"> <xsl:template match="/"> <html> <head><title>moomin belongings sorted</title></head> <body> <xsl:for-each select="//member"> <xsl:sort select="@name" /> <p><xsl:value-of select="@name"/> <ul> <li><xsl:value-of select="@gear"/></li> <li><xsl:value-of select="@cloth"/></li> </ul></p> </xsl:for-each> </body></html> </xsl:template> </xsl:stylesheet>

Merkkien käytöstä Attribute values cannot contain "<" nor "> Consequently, the following is NOT valid: <Body bgcolor="<xsl:value-of select='/fitnesscenter/member/favoritecolor'/>"> To extract the value of an XML element and use it as an attribute value you must use curly braces: <Body bgcolor="{/fitnesscenter/member/favoritecolor}"> Want this: Use this: < > = <= >=!= < > = <= >=!=

Yleinen kopiointiprosessi <?xml version="1.0"?> <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/xsl/transform"> <xsl:output method="xml" /> <xsl:template match=" * @* processing-instruction() "> <xsl:copy> <xsl:apply-templates select=" * @* text processing-instruction() "/> </xsl:copy> </xsl:template> </xsl:stylesheet>

Rekursio: xml tiedosto <?xml version='1.0'?> <?xml-stylesheet type="text/xsl" href="books.xsl"?> <library> <book> <title>pennies from heaven</title> <author>mae West</author> </book> <book> <title>memories</title> <author>bertrand Russel</author> </book> <book> <title>investigations</title> <author>ludwig Wittgenstein</author> </book> </library>

Rekursio: books.xsl <?xml version="1.0"?> <xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/xsl/transform" version="1.0"> <xsl:template match="/"> <html><body> <xsl:element name="table"> <xsl:apply-templates select="//book"/> </xsl:element> </body></html> </xsl:template>...jatkuu

Rekursio (jatkuu) <xsl:template match="*"> <xsl:if test="count(ancestor::*) =1"> <xsl:element name="tr"> <xsl:apply-templates select="child::*"/> </xsl:element> </xsl:if> <xsl:if test="count(ancestor::*)!=1"> <xsl:element name="td"> <xsl:value-of select="."/> </xsl:element> </xsl:if> </xsl:template> </xsl:stylesheet>

Muuttujat ja parametrit: esimerkkinä aakkosten läpikäyminen <xsl:template name="alphabettemplate">. <xsl:param name="alphabet" select=" 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' " /> <xsl:variable name="letter" select="substring($alphabet, 1, 1)" /> <xsl:variable name="remainder" select="substring($alphabet, 2)" /> <xsl:if test="$remainder"> <xsl:call-template name="alphabettemplate"/> <xsl:with-param name="alphabet" select=" remainder " /> </xsl:call-template> </xsl:if> </xsl:template>

Lisää HTML esimerkkejä An XML document representing the results of a soccer tournament lähde: Kay <results group="a"> <match> <date>10-jun-1998</date> <team score="2">brazil</team> <team score="1">scotland</team> </match> <match> <date>10-jun-1998</date> <team score="2">morocco</team> <team score="2">norway</team> </match> <match> <date>16-jun-1998</date> <team score="1">scotland</team> <team score="1">norway</team> </match>

Esimerkki jatkuu: An XML document representing the results of a soccer tournament <match> <date>16-jun-1998</date> <team score="3">brazil</team> <team score="0">morocco</team> </match> <match> <date>23-jun-1998</date> <team score="1">brazil</team> <team score="2">norway</team> </match> <match> <date>23-jun-1998</date> <team score="0">scotland</team> <team score="3">morocco</team> </match> </results>

A basic style sheet for the soccer results <xsl:transform xmlns:xsl="http://www.w3.org/1999/xsl/transform" version="1.0"> <xsl:template match="results"> <html> <head><title> Results of Group <xsl:value-of select="@group"/> </title></head> <body><h1> Results of Group <xsl:value-of select="@group"/> </h1> <xsl:apply-templates/> </body></html> </xsl:template> <xsl:template match="match"> <h2> <xsl:value-of select="team[1]"/> versus <xsl:value-of select="team[2]"/> </h2> <p>played on <xsl:value-of select="date"/></p> <p>result: <xsl:value-of select="team[1] "/> <xsl:value-of select="team[1]/@score"/>, <xsl:value-of select="team[2] "/> <xsl:value-of select="team[2]/@score"/> </p> </xsl:template> </xsl:transform>

A style sheet that computes team standings (osa1) <xsl:transform xmlns:xsl=http://www.w3.org/1999/xsl/transform version="1.0"> <xsl:variable name="teams" select="//team[not(.=preceding::team)]"/> <!-- luodaan globaali node-set, jonka sisältönä kaikki team elementit -- > <xsl:variable name="matches" select="//match"/> <xsl:template match="results"> <html><body> <h1>results of Group <xsl:value-of select="@group"/></h1> <table cellpadding="5"> <tr> <td>team</td> <td>played</td> <td>won</td> <td>drawn</td> <td>lost</td> <td>for</td> <td>against</td> </tr>

A style sheet that computes team standings (osa2) <xsl:for-each select="$teams"> <xsl:variable name="this" select="."/> <xsl:variable name="played" select="count($matches[team=$this])"/> <xsl:variable name="won" select="count($matches[team[.=$this]/@score > team[.!=$this]/@score])"/> <xsl:variable name="lost" select="count($matches[team[.=$this]/@score < team[.!=$this]/@score])"/> <xsl:variable name="drawn" select="count($matches[team[.=$this]/@score = team[.!=$this]/@score])"/> <xsl:variable name="for" select="sum($matches/team[.=current()]/@score)"/> <xsl:variable name="against" select="sum($matches[team=current()]/team/@score) - $for"/> <tr><td><xsl:value-of select="."/></td> <td><xsl:value-of select="$played"/></td> <td><xsl:value-of select="$won"/></td> <td><xsl:value-of select="$drawn"/></td> <td><xsl:value-of select="$lost"/></td> <td><xsl:value-of select="$for"/></td> <td><xsl:value-of select="$against"/></td></tr> </xsl:for-each> </table> </body></html> </xsl:template> </xsl:transform>

A style sheet that computes team standings Tuloksena aivan uudenlainen muotoilu:

Selityksiä edelliseen <xsl:variable name="teams" select="//team[not(.=preceding::team)]"/> luodaan globaali variable teams (node-set, jonka sisältönä kaikki team elementit, samaa ei voi valita kahta kertaa peräkkäin) tämä node set käsitellään sitten kokonaisuudessaan seuraavan sivun <xsl:for-each select="$teams"> silmukassa, viitataan muuttujaan teams dollarimerkillä <xsl:variable name="this" select="."/> jossa määritellään paikallinen variable this, jonka arvoon sijoitetaan osoittimen näyttämän noodin arvo count($matches[team=$this]) lasketaan niiden otteluiden lukumäärä, joille on tosi, että tämä joukkue esiintyy elementin arvona /@score > team[.!=$this]/@score verrataan score attribuuttien arvoja: onko tällä joukkueella enemmän (> >) maaleja kuin toisella, not ehto on!=

XSL funktionaalisena ohjelmointikielenä: esimerkkinä kertoman laskeminen <?xml version="1.0"?> <xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/xsl/transform" version="1.0"> <!-- Defining and Calling the Factorial Function in XSLT --> <!-- A separate file factorial-main.xml provides specific arguments --> <!-- call factorial on selected integer argument n --> <xsl:template match="/arguments/a1"> <html> <head> <title>factorial(<xsl:value-of select="."/>)</title> </head> <body> <xsl:call-template name="factorial"> <xsl:with-param name="n" select="."/> </xsl:call-template> </body> </html> </xsl:template>

XSL funktionaalisena ohjelmointikielenä: kertoman laskeminen jatkuu <xsl:template name="factorial"> <xsl:param name="n"/> <xsl:choose> <xsl:when test="$n = 0">1</xsl:when> <!-- factorial(0) = 1 --> <xsl:when test="$n > 0"> <!-- factorial(n) = --> <xsl:variable name="factor"> <xsl:call-template name="factorial"> <xsl:with-param name="n" select="$n - 1"/> </xsl:call-template> </xsl:variable> <xsl:value-of select="$n * $factor"/> <!-- n*factorial(n-1) --> </xsl:when> </xsl:choose> </xsl:template>

Tapausesimerkki: kirjapaino XML Editor XML documents XML database SVG, MathML & XHTML XQuery XSLT XSL-FO PDF