XML-oppaan taustatekniikka


XML-oppaan tuottamiseen käytetty taustatekniikka on ehtinyt kokea jo useita vaiheita ja menetelmiä. Seuraavassa on lyhyt kuvaus taustatekniikan historiasta ja nykytilasta. Kuvauksen voi lukea myös esimerkkinä joidenkin XML-teknologioiden hyödyntämisestä käytännössä - hyödyntämisen lopputuloksethan näette edessänne.

Tämä sivu ei pohjimmiltaan kuulu XML-oppaaseen, joten lukemisen voi jättää hyvällä omallatunnolla väliin.

Vaihe 1: kaikki alkoi HTML:stä

Aluksi kirjoitin kaikki oppaan sivut suoraan HTML-muotoon ja osa sivuista on vieläkin olemassa vain HTML:nä. Varsin pian HTML-perusta alkoi kuitenkin haitata muutamien ideoiden toteuttamista, joita halusin oppaassa kokeilla. Halusin esimerkiksi tehdä sanastosta kaksi eri versiota: englanti - suomen ja suomi - englannin. Halusin myös saada ennen kaikkea sanaston mutta myös koko oppaan PDF-muotoon tyylikkäämpää ja helpompaa tulostusta varten.

Sanasto kuitenkin oli (ja on edelleenkin, mutta se on työn alla...) hyvin staattinen ja käytännössä ainoa keino toteuttaa ideat oli joko vääntää ohjelmakoodia sanaston käsittelyyn tai sitten kirjoittaa se käsin uudestaan kaikkiin haluttuihin muotoihin. Ohjelmointi ei kuitenkaan tuntunut erityisen mielekkäältä, sillä se ei ole erityisen joustava ratkaisu - esimerkiksi sanastohaun toteuttaminen oli vaikeampaa kuin olisin halunnut. Ironista tässä on, että XML on luotu juuri tällaisten tilanteiden välttämiseksi. Jälleen kerran suutarin lapsilla ei ole kenkiä...


Vaihe 2: uudet tuulet puhaltavat...

Määrittelyjä kuvaavat sivut olivat ensimmäiset, jotka kirjoitin HTML:n sijaan XML:ksi. Käytin kirjoittamiseen itse kehittämääni rakennemäärittelyä koska sen tekeminen ja käsittely on hyvää harjoittelua. Todellisuudessa on aika harvoin syytä tehdä omia rakennemäärittelyjä, sillä niitä löytyy valmiina ja osa on vieläpä hyviä. Suosituimpiin löytyy valmiina tyyli- ja muunnossäännöstöjä ja muuta tarpeellista. Itse todennäköisesti käyttäisin sivuston tekemiseen Docbookia.

Jotta sivut näkyisivät HTML-selaimilla, täytyi sivut muuntaa HTML-muotoisiksi. Joten tein muunnosta varten XSLT-muunnossäännöt. Nyt saan uusista sivuista irti kaiken sen, mitä aikaisemmin halusin tehdä (kunhan vain jostain saisin aikaa tekemiseen).


Vaihe 3: sukellus syvemmälle XML-maailmaan

Varsin nopeasti edellisen vaiheen jälkeen jatkoin systeemin kehittämistä. Nyt kohteena olivat linkit.

Mielestäni pelkästään sivuston sisäiset linkit eivät riitä hyvälle WWW-sivustolle. Sivuston ulkopuolelle vievissä linkeissä on kuitenkin se huono puoli, että niitä joutuu vähän väliä tarkastamaan ja päivittämään. Tästä syystä pyrin aluksi kokoamaan linkit yhdelle linkkisivulle sen sijaan, että olisin ripotellut niitä ympäri sivustoa. Tämä ei ollut erityisen käyttäjäystävällinen ratkaisu.

Ongelman ratkaisemiseksi - tai lähinnä tulevan työmäärän vähentämiseksi - rakensin sivustoa varten yksinkertaisen linkkivaraston, joka sisältää niin sivuston sisäiset kuin ulkoisetkin linkit. Luonnollisesti käytin XLink-määrittelyä hyväkseni. Tällä hetkellä linkkivarasto ei tosin taida olla XLinkin mukainen, sillä olen muutellut sitä aika lailla...

Linkkivaraston lisäksi kuvasin sivuston rakenteen (sekä fyysisen että loogisen hakemisto- ja tiedostorakenteen) XML:nä, jälleen omaa rakennemäärittelyä käyttäen. Tässä olisi voinut käyttää esimerkiksi RDF:ää mutta nykyisellään järjestelmä on vähän yksinkertaisempi kuin mitä se olisi RDF:ää käyttäen.

Enää puuttui liima, joka liittäisi itse sivut, linkkivaraston ja sivuston rakenteen yhteen. Tätä varten laajensin alkuperäisiä XSLT-muunnossääntöjäni. Säännöt muuntavat XML-sivut HTML:ksi ja lisäävät niihin linkkien oikeat URL:t. Kun jokin linkki joskus muuttuu, pystyn korjaamaan muutoksen yhteen paikkaan ja sen jälkeen päivittämään sivujen linkit automaattisesti.

Tai näin päivityksen teoriassa pitäisi toimia. Käytännössä XSLT-säännöt eivät tee ihan kaikkia asioita, joita niiden pitäisi tehdä, joten joudun täydentämään sivuja käsin ennen kuin laitan ne näkyville. Lisäksi HTML-sivujen tuottaminen on niin hidasta (lähinnä sivuston sisäisten linkkien luomisen takia), ettei kovin montaa sivua kannata tehdä kerralla uudestaan.


Vaihe 4: tulevaisuus

Ongelmista huolimatta olen varsin tyytyväinen nykyiseen järjestelmään ja sen mahdollisuuksiin. XSLT-säännöt ovat jatkuvan kehittämisen alla ja vähä vähältä ne toivottavasti muuttuvat parempaan suuntaan. Sivukartta on ensimmäinen ylimääräinen etu, minkä nykyisestä järjestelmästä saan: se syntyy täysin automaattisesti.

Näköpiirissä on ainakin kaksi suurta projektia XML-oppaan taustatekniikan kehittämisessä:

  1. Vanhojen HTML-sivujen muuntaminen XML-muotoon. Tämä on lähinnä raakaa työtä, joka vaatii vain aikaa ja hermoja.

  2. PDF-version luominen sivustosta. Kunhan aika riittää, niin todennäköisesti alan kehittämään tätä puolta. PDF:n tuotantoa pystyy kunnolla tekemään vasta kun ensimmäinen kohta on tehty.

Lisäksi sivuston rakenteen muuttaminen RDF-pohjaiseksi on edessä, samoin kuin muun metatiedon lisäys. Jossain vaiheessa kuvat alkavat ilmestyä normaalien bittikarttojen lisäksi myös SVG:nä, kunhan nyt ensin saan edes tehtyä jonkin kuvan. Jo nyt kaikkien kuvien alkuperäinen formaatti on SVG.

Askel kohti suunnittelemaani tulevaisuutta oli pitämäni XSLT-esityksen muuntaminen XML-muotoiseksi. Sen jälkeen tein muunnossäännöt XML-tiedoston muuttamiseksi PDF:ksi ja HTML:ksi ja nyt olen varsin tyytyväinen lopputulokseen. Esityksen kuvat muuten ovat alunperin SVG-kuvia, jotka on konvertoitu PNG:ksi, JPEG:ksi tai GIF:ksi.

Kaiken kaikkiaan varsin opettavaista puuhaa...


Sivua on edellisen kerran päivitetty: 08.06.2001
Kommentteja voi lähettää Henri Ruinille osoitteeseen ruini@iki.fi