Lataa itsellesi pikaohje XSLT:n ja XPathin syntaksista.
Esimerkki 1: Tee itse seuraavat kaksi tiedostoa, joihin sijoitat omaa dataa. Katsele tulosta IE:lla tai Firefoxilla. Muista tarkistaa, ettei tiedostossasi ole kirjoitusvirheitä, väärinpäin meneviä heittomerkkejä tms.
<?xml version="1.0" ?>
<?xml-stylesheet type="text/xsl"
href="message.xsl"?>
<viesti tyyppi="lopullinen">
<tervehdys>So long and thanks for all the fish!</tervehdys>
</viesti>
Yllä siis pieni XML-tiedosto ja alla sen muunnosohjelma.
<?xml version="1.0" ?>
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="html"
indent="yes"/>
<xsl:template match="/">
<html>
<xsl:apply-templates/>
</html></xsl:template>
<xsl:template match="viesti">
<head><title>
<xsl:value-of select="@tyyppi"/>
viesti
</title></head>
<body><p><xsl:value-of select="."/></p></body></xsl:template>
</xsl:stylesheet>
Tyylitiedoston nimiavaruus on valittu niin, että uusi selain osaa näyttää muunnoksen, joten se siis tapahtuu asiakaskoneella.
<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" href="tiny.xsl"?>
<tiny>
<line>
Tässä tulostuu lyhyt rivi
</line>
</tiny>
Transformaatio: tiny.xsl
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
<xsl:template match="line">
<html>
<head><title>
pikkuinen esimerkki apply-templates käytöstä
</title></head>
<body>
<xsl:apply-templates/>
</body></html>
</xsl:template>
</xsl:stylesheet>
Sama esimerkki edelleen kehitettynä on tiedostoissa: tiny2.xml and tiny2.xsl.
Esimerkki 3: XML dokumentti-ilmentymä: animals.xml
<?xml version="1.0" ?>
<?xml-stylesheet type="text/xsl" href="animals.xsl"?>
<creatures>
<animal>
<name>Penny</name>
<species>kissa</species>
<picture>penny.jpg</picture>
</animal>
<animal>
<name>Mette</name>
<species>koira</species>
<picture>mette.jpg</picture>
</animal>
</creatures>
Transformaatio: animals.xsl
<?xml version="1.0" ?>
<xsl:stylesheet
xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
<xsl:template match="/">
<html>
<head><title>Animals - for-each</title></head>
<body><table border="1">
<xsl:for-each select="creatures/animal">
<tr><td><xsl:value-of select="name"/></td>
<td><xsl:value-of select="species"/></td>
<td><xsl:value-of select="picture"/></td></tr>
</xsl:for-each>
</table></body></html>
</xsl:template>
</xsl:stylesheet>
Harjoitus 5b-c: lisää XSLT -muunnosesimerkkejä, XT muunnin
9b Luennolla esiteltiin myös kirjasta "Beginning XML" otettu esimerkki XSLT-tyylitiedostosta, joka muuntaa yhden yrityksen tietokantamallin mukaisen tuotetiedoston toisen yrityksen järjestelmän ymmärtämään muotoon. Tuotetiedosto on nimeltään CompanyA.xml, ja muunnoksen suorittava tiedosto order.xsl. Kokeile muunnosta myös Microsoftin muunnosohjelmalla msxsl.exe, joka löytyy tämän ohjeen kanssa saman hakemiston alihakemistosta aineisto. Kopioi se omalle levyllesi sellaiseen hakemistoon, jonka nimi on helppo kirjoittaa komentotulkkiin. Tutki ensin tiedostoja ja aja sitten ohjelma komentoikkunassa (em. hakemistossa) kirjoittamalla komentoriville
D:\temp\msxsl CompanyA.xml order.xsl
Muunnostiedosto tulee tulokseksi. Jotta muunnostiedosto tallentuisi, aja uudelleen:
D:\temp\msxsl CompanyA.xml order.xsl -o CompanyB.xml
ja tutki tulostiedostoa.
Jos asetat parametrin -v käskyn loppuun, se vaihtaa arvon validateOnParse asentoon True, jolloin dokumentti myös validoidaan siinä olevaan DTD- tai schema -viittaukseen nähden.
Muita prosessoreita:
Saxon, asennusohje ja käyttö. Toinen vaihtoehtoinen muunnosohjelma on
xt, jonka uusia versioita löytyy netistä osoitteesta http://www.blnz.com/xt/. Linuxissa on asennettuna muunnosohjelma
xsltproc, jota voi suoraan ajaa edunix.metropolia.fi -koneella. Tiedostot vain mainitaan eri järjestyksessä eli $xsltproc -o CompanyB.xml order.xsl CompanyA.xml 5c Oheisesta muumitiedostosta voit
tehdä vaikkapa yksinkertaisen salakirjoitustoteutuksen, jonka
muunnosperiaate löytyy luentokalvoista. Ohessa muutetaan isot kirjaimet pieniksi, tee muunnoksesta erilainen. Tee XML-tiedosto, ja sille
muunnokset, jotka salakirjoittavat ja purkavat salatun tekstin.
Tarvitset tähän xt- tai msxml-ohjelman. <?xml version="1.0"
encoding="UTF-8"?> <?xml version="1.0"
encoding="UTF-8"?> Muita esimerkkejä (opiskelu
vapaaehtoista): Harjoitus 5 d- h: XSLT -muunnokset,
yritä itse Nyt voit lähteä
yrittämään omien
muunnosten tekemistä käyttäen annettuja esimerkkejä
pohjana.
Valitse vähintään 2 tehtävää alla
olevista. 5d Lajittelu: tee muunnos, joka
lajittelee XML-tiedoston elementit aakkosjärjestykseen. Valitse
käsittelyyn jokin suhteellisen yksinkertainen XML-tiedosto.
Käytettävä käsky on muotoa: eli ohjelmanpätkä
näyttää seuraavanlaiselta: 5 e Voit myös koostaa yhden
tulosdokumentin joukosta XML-tiedostoja. Alla on käytetty
muumitiedostoa ensisijaisena lähdedokumenttina. Käytä
tätä
esimerkkiä hyväksesi ja muokkaa siitä oma versio.
<?xml version="1.0"
ja mamman.xml voisi sisältää
vaikkapa Muunnos voisi näyttää
seuraanlaiselta:
<?xml version="1.0”
?> <xsl:output method="xml"
indent="yes" />
<xsl:template match=”jäsen"> <xsl:template match=”varusteet"> </xsl:stylesheet>
Tiedosto ei aukea selaimessa! Korjaa koodia niin, että siitä tulee hyvinmuodostettu XML dokumentti tulokseksi. 5f Luennolla esitettiin myös Kayn
esimerkki jalkapallotuloksista (originally presented in http://www-106.ibm.com/developerworks/library/x-xslt/ ) ja niiden tulostuksesta taulukkomuodossa
HTML-dokumenttina. Tee luentokalvoissa olevista XML-tiedostosta
ja muunnostiedostoista itsellesi kopiot. Kokeile niitä ja
tutustu niiden logiikkaan. Voit tehdä niistä oman version.
5g. Tee
XSLT-tyylitiedosto joka muuntaa tiedoston catalog.xml
HTML-kieliseksi. Käytä XML-tietoista selainta tuloksesi
tarkistamiseen. Huom: tämä on melko vaikea tehtävä.
<perhe>
<jäsen>Mamma</jäsen>
<jäsen>Pappa</jäsen>
<jäsen>Muumi</jäsen>
</perhe>
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="xml"
indent="yes"/>
<xsl:template match="/perhe">
<SUKU>
<xsl:apply-templates/>
</SUKU>
</xsl:template>
<xsl:template match="jäsen">
<OLENTO>
<xsl:value-of select="translate(current(),
'abcdefghijklmnopqrstuvwxyzåäö',
'ABCDEFGHIJKLMNOPQRSTUVWXYZÅÄÖ')"/>
</OLENTO>
</xsl:template>
</xsl:stylesheet>
Jos haluat vielä käydä läpi muunnoksen tekemisen askel askeleelta, tutustu Roger Costellon (PowerPoint-)oppaisiin:
<xsl:sort select="."
data-type="text" order="ascending"/>
<xsl:template match="//elementit">
<ul>
<xsl:for-each select="elementti"
<xsl:sort select="." data-type="text"
order="ascending"/>
<li>
<xsl:value-of select="."/>
</li>
</xsl:for-each>
</ul>
</xsl:template>
<perhe>
<jäsen
varusteet="mamman.xml">Mamma</jäsen>
<jäsen
varusteet="papan.xml">Pappa</jäsen>
<jäsen>Muumi</jäsen>
</perhe>
<varusteet>
käsilaukku
</varusteet>
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<suku>
<olento>
<xsl:value-of select=”.”/>
</olento>
<xsl:if test="@varusteet">
<xsl:apply-templates
select="document(@varusteet)"/>
</xsl:if>
</suku>
</xsl:template>
<varusteet>
<xsl:value-of select=”.”/>
</varusteet>
</xsl:template>
Päivittänyt: Jaana Holvikivi Muutettu 9.2.2012