8 XSLT-muunnoskieli 51 8 XSLT-muunnoskieli XML-dokumentti kuvaa siis vain tiedon sisältöä eikä määritä ulkoasua mitenkään. CSS on suunniteltu HTML-dokumenttien ulkoasun kuvaamiseen eli tiedon esittämiseen näyttöruudulla. CSS-kielessä ei ole riittävästi ominaisuuksia rakenteisten dokumenttien käsitelylle. Näin ollen rakenteisille dokumenteille on kehitetty oma tyylikieli XSL (extensible Stylesheet Language), jossa on muunnoskomentoja XSLT (XSL for Transfomations) ja muotoilukomentoja XSLFO (XSL for Formatting Objects) [11,12]. Kuva 8.1 esittää XSL-muunnosprosessia, jossa XSLT-suoritin saa syötteenä XML-dokumentin ja XSLT-tyylipohjan ja muodostaa käskyjen p erusteella uuden XML-dokumentin. XSLmuunnoksia on käsitelty laajasti lähteessä [1, s. 445-517]. Jokainen oikeanmuotoinen XML-dokumentti on puu (tree). Puu on tietorakenne, jossa on solmuja (nodes). Puussa on aina yksi ja vain yksi juurisolmu (root node), jolla voi olla useita lapsisolmuja (child nodes). Jokaisella lapsisolmulla on aina yksi ja vain yksi isäsolmu (parent node). Lehtisolmu (leaf node) on sellainen solmu, jolla ei ole lapsia. Mikä tahansa solmu ja sen lapset muodostavat alipuun (sub tree). Näin ollen puu on hierarkkinen rakenne, jossa voidaan erottaa useita erilaisia alipuita. XML-puussa solmut ovat elementtejä ja elementtien sisältöjä. XLS-muunnoskielessä ominaisuudet (attributes), nimiavaruudet (name spaces), käsittelykomennot (instructions) ja kommentit (comments) on tulkittava omiksi solmuiksi. Lisäksi XMLdokumentin juuri on myös erotettava puun juurielementistä. XSL-suoritin erottaa 7 eri solmutyyppiä, jotka ovat juuri, elementti, teksti, ominaisuus, nimiavaruus, käsittelykomento ja kommentti. Kuvassa 8.2 on esimerkki kurssilistaa kuvaavasta XMLdokumentista 08-00a.xml, jonka puurakenne on kuvassa 8.3. Kuva 8.1 XLS-muunnosprosessi
52 XML-perusteet Kuva 8.2 XML-kurssilista 08-00a.xml, jossa 2 kurssia ZO010 ja ZO020 Kuva 8.3 dokumentin 08-00a.xml XML-puun osa, josta puuttuu kurssi ZO020 (kohta B)
8 XSLT-muunnoskieli 53 Kuvassa 8.4 on XSL-tyylipohja 08-00a.xsl, jolla kuvan 8.2 XML-dokumentti 08-00a.xml muunnetaan HTML-dokumentiksi (kuva 8.5). Tämä muunnos voidaan te hdä Javaohjelmalla XT.exe, joka on osoitteessa http://www.jclark.com/xml/xt.html. Koneessa pitää olla asennettuna Java Virtual Machine, joka on mukana esimerkiksi Windows 2000 Service Pack 2 :ssa. Muunnoskomento annetaan DOS-kehotteeseen muodossa xt 08-00a.xml 08-00a.xsl 08-00a.html, missä 08-00a.html on muunnettu dokumentti (kuva 8.5). Kuvassa 8.6 dokumentti 08-00a.html on avattuna IEE 6 selaimella. Kuva 8.4 XSL-tyylipohja 08-00a.xsl dokumentille 08-00a.xml Kuva 8.5 XML-kurssilista 08-00a.html
54 XML-perusteet Kuva 8.6 XML-kurssilista 08-00a.html avattuna IEE 6 -selaimella 8.1 XML-dokumentti ja sen tyylipohja Kuvassa 8.7 on XML-dokumentti 08-01a.xml, jossa on elokuvaluettelo. Elokuvaluett e- lolle 08-01a.xml on tehty XSL-muunnoskielellä tyylisivu 08-01a.xsl (kuva 8.8), joka on avattu IEE 6 selaimella kuvassa 8.9. Kuva 8.7 elokuvaluettelo 08-01a.xml
8 XSLT-muunnoskieli 55 Kuva 8.8 XSL-tyylipohja 08-01a.xsl dokumentille 08-01a.xml Kuva 8.9 XML-elokuvaluettelo 08-01a.xml avattuna IEE 6 -selaimella
56 XML-perusteet 8.2 Monta XML-dokumenttia ja tyylipohjaa XML-dokumentin 08-02a.xml sisältö on muuten sama kuin dokumentin 08-01a.xml (kuva 8.7) paitsi, että tyylipohjana on dokumentti 08-02.xsl (kuva 8.10). Tyylipohjaan on tehty määritykset, joilla WWW-sivulta voidaan haarautua XML-dokumenttiin 08-02b.xml (linkki Ohjaaja), 08-02c.xml (linkki Vuosi), 08-02d.xml (linkki Toiminta), 08-02e.xml (linkki Draama), 08-02f.xml (linkki Tieteis), 08-02g.xml (linkki Komedia) ja 08-02h.xml (linkki Kauhu). Jokaisella XML-dokumentilla on oma tyylipohja 08-02b.xsl, 08-02c.xsl, 08-02d.xsl, 08-02e.xsl, 08-02f.xsl ja 08-02h.xsl. Tyylipohja 08-02a.xsl järjestää dokumentin 08-02a.xml elokuvat nimen mukaan, tyyl i- pohja 08-02b.xsl järjestää dokumentin 08-02b.xml elokuvat ohjaajan mukaan ja tyyl i- pohja 08-02c.xsl järjestää dokumentin 08-02c.xml elokuvat vuoden mukaan nous e- vaan järjestykseen. Edelleen tyylipohja 08-02d.xsl poimii dokumentista 08-02d.xml toimintaelokuvat (kuva 8.11), tyylipohja 08-02e.xsl poimii dokumentista 08-02e.xml draamat, tyylipohja 08-02f.xsl poimii dokumentista 08-02f.xml tieteiselokuvat, tyylipohja 08-02g.xsl poimii dokumentista 08-02g.xml komediat ja tyylipohja 08-02h.xsl poimii dokumentista 08-02h.xml kauhuelokuvat ja lopuksi jokainen tyylipohja järjestää poimitut elokuvat nimen mukaan nousevaan järjestykseen. Kuvassa 8.12 dokumentti 08-02a.xml on avattu IEE 6 selaimella. Kuva 8.10 XSL-tyylipohja 08-02a.xsl dokumentille 08-02a.xml
8 XSLT-muunnoskieli 57 Kuva 8.11 XSL-tyylipohja 08-02d.xsl dokumentille 08-02d.xml Kuva 8.12 XML-elokuvaluettelo 08-02a.xml avattuna IEE 6 selaimella