| Hajautettu dokumenttien hallinta: Johdatus tekstin ja dokumenttien käsittelyyn tietoverkoissa | ||
|---|---|---|
| Edellinen | Luku 5 SGML, XML ja rakenteiset dokumentit | Seuraava |
WWW:ssä jaeltavien dokumenttien merkintäkielen suunnittelussa joudutaan tasapainoilemaan yleiskäyttöisyyden ja yksinkertaisuuden välillä. Sellainen SGML-pohjainen merkintäkieli, joka olisi mahdollisimman monipuolinen ja joustavasti laajennettavissa kaikkiin suuntiin, asettaisi kohtuuttomat vaatimukset selainten tekijöille. Toisaalta yksinkertainen ja ennalta kiinteästi määritelty merkintäkieli, kuten HTML, vanhenee nopeasti ja alkaa jarruttaa kehitystä. HTML:n määrittely on hyvin vaivalloisesti pysynyt mukana siinä kehitysvauhdissa, jolla ohjelmistotuottajat ovat luoneet verkkoon uusia palveluja.
Ratkaisuksi tähän ongelmaan ollaan kehittämässä laajennettavissa olevaa merkintäkieltä XML (Extensible Markup Language).[1] XML-määrittelyn versio 1.0 on W3C:n virallinen suositus, se on päivätty 10.2.1998.[2] Hankkeen tavoitteet ovat erittäin kunnianhimoiset. Siinä pyritään samalla kertaa ratkaisemaan kaikki keskeiset HTML:n ongelmat. (1) Merkintäkielestä halutaan tehdä dynaamisesti laajennettava, (2) hyperlinkeistä halutaan nykyiseen verrattuna oleellisesti monipuolisempia ja (3) selaamisen ja ladonnan ohjaamiseen halutaan laajennettavissa olevat tyylimäärittelyt. Lisäksi näyttää siltä, että XML:stä ollaan luomassa tietoverkoissa olevien resurssien hallinnan ja kuvailun yleistä merkintäjärjestelmää (tästä aiheesta tarkemmin ks. kohta Tietojen paikantaminen).
XML ei ole merkintäkieli samassa mielessä kuin HTML. XML on verrattavissa pikemminkin SGML:ään — se on rajoitettu SGML; se noudattaa SGML-standardia.[3] Rajoittaminen on tehty niin, että sellaiset SGML:n piirteet on pudotettu pois, jotka aiheuttavat tietoverkoissa käytettävien ohjelmien tekemisessä tehokkuus- tai johdonmukaisuusongelmia. SGML:n, HTML:n ja muiden lähisukuisten standardien laatimisesta ja niihin liittyvien ohjelmien — erityisesti selainten ja ladontaohjelmien — tekemisestä on ehtinyt kertyä huomattava määrä kokemusta. XML:n kehittämisessä on mukana suuri joukko tämän alan kaikkein kokeneimpia ihmisiä. Edustettuna ovat kaikki keskeiset SGML-tuotteita ja WWW:ssä käytettäviä ohjelmia tuottavat tahot ja yritykset.
Merkintäkielen laajennettavuus tekee mahdolliseksi ottaa käyttöön uusia palveluja voimassa olevaa standardia muuttamatta. WWW:stä löytyvässä dokumentissa voidaan määritellä uusia rakenneosia, niiden keskinäisiä suhteita, rakenneosiin liittyvää toiminnallisuutta ja ottaa huomioon käyttäjän toivomuksia. Näiden uusien palvelujen käyttömahdollisuus tulee luonnollisesti riippumaan käytettyjen selainten ja niitä tukevien ohjelmien monipuolisuudesta. Standardin mukaiset laajennukset turvaavat kuitenkin vähimmillään sen, että selaimet käsittelevät dokumentin perusosia yhdenmukaisella tavalla; näyttävät julkiseksi tarkoitetut osat ja jättävät muun osan rakenteesta ja toiminnallisuudesta vaille huomiota.
Hyvän esimerkin dokumentin sisäisen rakenteen monipuolisesta hyödyntämisestä tarjoaa sovellus, jossa potilastietoja siirretään sairaalan WWW-palvelimesta yksityisen terveyskeskuksen WWW-palvelimeen. Palvelimissa käytetyt tietokantajärjestelmät voivat olla keskenään täysin yhteensopimattomia. XML:n avulla on kuitenkin mahdollista kuvata potilastietojen hierarkkinen rakenne eri tietokantaohjelmien ymmärtämällä tavalla. Potilastietoja sisältävä XML-muotoinen dokumentti sisältää tällöin varsinaisten henkilötietojen lisäksi hoidossa tarpeellisten tietojen rakenteen ja keskinäisten suhteiden formaalin kuvauksen. Riittävät valtuudet omaava lääkäri voi omaa selaintaan käyttäen hiirellä raahata potilaskansion tietokannasta toiseen ja käyttää luottamuksellisia ja tarkkoja tietoja tilannekohtaisen diagnoosin tekemiseen. On helppo kuvitella, että tällaisella mahdollisuudella voi hätätilanteessa olla suunnaton merkitys.
Laajennettavuus liittyy myös dokumenttien sisältämään toiminnallisuuteen. WWW:n selaimet ovat muuttumassa sellaisiksi, että ne pystyvät yhä enemmän suorittamaan dokumentteihin upotettuja toiminnallisia piirteitä. Yksikertaisimmillaan kyse voi olla vilkkuvista tai vilistävistä tekstinosista. Kehittyneemmissä ratkaisuissa selain voi suorittaa hyvinkin vaativaa tietojen muokkausta. Esimerkiksi karttapiirros voidaan muotoilla, viimeistellä ja yhdistää muuhun aineistoon vasta selaimessa. Tulevaisuudessa kuvien jakelu ei enää perustu ennalta muodostettuihin ja tallennettuihin rasterikuviin, ne muodostetaan vasta selausvaiheessa käyttäjän työasemassa.
Käyttäjän ominaisuuksien ja toivomusten huomioon ottaminen liittyy käyttäjän mielenkiintoprofiilin hyödyntämiseen. Käyttäjä voi määritellä etukäteen, että hänen mielenkiintonsa kohdistuu ensisijaisesti johonkin tiettyyn aihepiiriin eikä hän halua ehkä lainkaan nähdä johonkin toiseen aihepiiriin kuuluvaa aineistoa. Jos aineisto on kuvailtu asianmukaisella tavalla, selain voi kuvailutietojen perusteella korostaa linkkejä toivottuun aineistoon ja jättää kokonaan näyttämättä linkit ei-toivottuun aineistoon.
XML-merkattu dokumentti yksinkertaisimmillaan näyttää seuraavalta:
<?XML version="1.0"?> <oldjoke> <burns>Say <quote>goodnight</quote>, Gracie.</burns> <allen><quote>Goodnight, Gracie</quote></allen> <applause/> </oldjoke> |
SGML:stä tuttu dokumentin tyyppimäärittely ei ole välttämätön. Elementtien nimet voivat olla täysin kirjoittajan itsensä keksimiä eikä niitä välttämättä tarvitse tarkemmin määritellä missään. Selaimet eivät kuitenkaan osaa tehdä mitään järjellistä mielivaltaisesti merkatuille dokumenteille. Jos esimerkiksi niiden elementtien ulkoasuun haluaa jotenkin vaikuttaa, se on tehtävä jäljempänä esiteltävien tyylimäärittelyjen avulla. DTD:n valinnaisuus aiheuttaa vähimmillään sen, että elementtien alut ja loput on aina merkittävä (<burns> Burnsin puheenvuoro. </burns>). Tyhjä elementti ilmaistaan yhdellä erottimella, esim. <applause/>.
W3C:n XML-määrittelyssä puhutaan erikseen hyvin muodostetuista (well-formed) ja laillisista (valid) dokumenteista. Hyvin muodostettu dokumentti on XML-määrittelyn ja kieliopin mukainen. Lisäksi siinä oleville attribuuteille ja entiteeteille on asetettu yksityiskohtaisia ehtoja. Dokumentti voi olla hyvin muodostettu vaikka siihen ei liittyisi lainkaan DTD:tä. Tämä on merkittävä kevennys SGML-standardiin verrattuna. WWW:ssä levitettävät dokumentit tulevat mitä ilmeisimmin olemaan hyvin muodostettuja mutta eivät laillisia.
Hyvin määritelty dokumentti on laillinen (XML-slangin mukaan validi), jos se sisältää XML:n mukaisen dokumentin tyyppiesittelyn (XML document type declaration). Tämä esittely puolestaan joko sisältää tai viittaa dokumentin tyyppimäärittelyyn (XML-dokumenttien tyyppimäärittely tarkoittaa samaa asiaa kuin SGML-dokumenttien DTD). XML-dokumentteihin voi siis liittyä myös DTD ja monissa sovelluksissa se on välttämätöntä. Ilman DTD:tä dokumentin rakenteen yksityiskohtainen hallinta ei ole mahdollista.
XML:n tarkempi kuvaaminen ei liene tässä yhteydessä tarpeen, sillä kehitys etenee hyvin nopeasti. Lisää tietoja nopeasti muuttuvasta tilanteesta saa edellä mainituilta W3C:n sivuilta. [4]Aiheesta on lisäksi ilmestynyt useita kirjoja.
HTML:n käyttämät hyperlinkit edustavat hyvin pientä osaa kaikesta siitä, mitä paikallisesti toimiviin hypertekstijärjestelmiin oli kehitetty jo 1970-luvulla. Hypertekstin perusajatukset ovat vieläkin vanhempia, ne ovat peräisin jo 1940-luvulta — kyseessä on siis varsin vanha keksintö. HTML:ssä käytetyt hyperlinkit eivät kehittyviin tarpeisiin enää riitä. XML:n rinnalle ollaan sen vuoksi tekemässä hyperlinkkien muodostamiseen tarkoitettua standardia XLL (XML Linking Language). Määrittelytyö on vielä kesken. Työn tuloksia kuvaava dokumentti on tasoltaan W3C:n työpaperi.[5]
XLL määrittelee useita erilaisia linkkityyppejä. Niitä ovat esimerkiksi ‘simple’, ‘extended’ ja ‘group’. Näistä ensimmäinen eli simple vastaa oletustoimintansa osalta HTML:n linkkejä. Kyse on yksisuuntaisesta linkistä, jonka käyttäjä aktivoi sillä seurauksella, että selaimen näyttämä dokumentti korvautuu linkin viittaamalla dokumentilla. Yksinkertainen XLL-linkki voisi aktivoitua myös automaattisesti. Se olisi luontevaa, jos linkkiin määritelty käyttäytyminen liittäisi linkin viittaaman dokumentin osaksi linkin sisältävää dokumenttia. Linkin aktivoiminen voi tuoda viitatun dokumentin myös erilliseen ikkunaan.
Extended linkki on monisuuntainen ja linkin aktivoiminen avaa ensin alasvetovalikon, josta käyttäjä otsikkotietojen avulla voi valita, mikä tarjolla olevista vaihtoehdoista valitaan. Esimerkiksi henkilön nimen klikkaaminen voi avata linkin sijaintikohtaan valikon, jossa on lueteltuna mainitun henkilöt linkitetyt artikkelit. Artikkelin valitseminen aktivoi linkin.
Group linkki yhdistää useampia dokumentteja keskenään ja on käyttökelpoinen mm. erillisistä osista koostuvaa laajaa dokumenttia käsiteltäessä (esim. haettaessa erillisissä tiedostoissa olevat kirjan luvut). Minkä tahansa ryhmään kuuluvan dokumentin löytäminen antaa selaimelle tiedot ryhmän kaikkien dokumenttien sijainnista ja mahdollisesti tiedot niiden keskinäissuhteista. Osista koostuva, ryhmäksi määritelty dokumentti voidaan haluttaessa saada yhtenäisenä sekä selattavaksi että tulostettavaksi.
Tyylimäärittelyt ovat osa SGML:n jatkokehitystä. SGML:n esittelyn alkupuolella jo totesin, että asiakirjojen pitkäaikaista käytettävyyttä on SGML:n avulla turvattu osittain ulkoasun kustannuksella. Kirjojen ja lehtien kustantajat eivät ole tyytyneet pelkkään SGML:ään. Rinnalle on kehitetty DSSSL-standardi (ISO/IEC 10179).[6] Sen avulla SGML:n mukaiseen dokumenttiin voidaan liittää lisämerkintöjä, joiden avulla dokumentin rakenneosat kytketään tulostusta ja katselua ohjaaviin tyylimäärittelyihin.
Yksinkertaisimmillaan tyylimäärittelyt koskevat otsikkorivien lihavointia ja sivunvaihtokohtia. Monimutkaisemmaksi asia muuttuu, kun tyylitiedostojen avulla ohjataan taulukkojen ladontaa tai automaattista sisällysluettelojen, sanastojen ja hakemistojen tekoa. Tyylimäärittelyillä voidaan ohjata myös dokumentin eri osien näkymistä selaimessa. Yhdessä ikkunassa voi olla sisällysluettelo, toisessa dokumentin rakennetta kuvaava hierarkkinen kaavio, kolmannessa dokumenttiin piilotetut lukijoiden kommentit, neljännessä valikoituja osia joistakin tärkeimmistä kysymyksistä, jne.
DSSSL on standardina yhtä lailla laaja ja vaativa kuin SGML:kin. Vaikka tarve tyylimäärittelyjen käyttämiseen on ilmeinen, DSSSL ei ole vielä vakiintunut käyttöön. Ohjelmistotarjonta on hyvin pientä ja on mahdollista, että DSSSL:n käytännön merkitys tulee jäämään vähäiseksi. Teoreettisessa mielessä sillä on kuitenkin erittäin suuri merkitys. DSSSL on välttämätön välivaihe siinä pitkässä ja monimutkaisessa kehityshistoriassa, jossa tietoverkkojen käytön pysyviä perusratkaisuja luodaan.
Tyylimäärittelyt ovat tulleet myös HTML:n yhteyteen. Niiden asema WWW:n avulla jaeltavien dokumenttien hyödyntämisessä on kuitenkin hiukan epämääräinen. Selaimiin sisäänrakennetut tyyliominaisuudet tekevät rajan selaimen oletusarvoisen toiminnan ja tyylimäärittelyjen välillä hämäräksi. Suurin osa WWW:stä löytyvistä dokumenteista ei sisällä lainkaan tyylimäärittelyjä. Dokumenttien tuottajat luottavat siihen, että WWW:n selausohjelmat pystyvät tuottamaan riittävän laadukkaan ulkoasun ilman erityisiä tyylimäärittelyjä.
HTML-merkattujen dokumenttien tyylimäärittelyihin on käytettävissä kaksitasoinen ratkaisu: CSS1 ja CSS2. CSS1 (Cascading Style Sheets, level 1) on hyvin suppea ja se on tarkoitettu selainten yhteydessä käytettäväksi. [7]CSS2 (level 2) on paljon laajempi ja sen avulla pystyy yksityiskohtaisesti ohjaamaan dokumentin ladontaa ja erilaisia muunnoksia. Sekä CSS1 että CSS2 ovat W3C:n virallisia suosituksia. CSS1 on päivätty 17.12.1996 ja CSS2 12.5.1998. [8]
Tyylimäärittelyt voidaan liittää HTML-merkattuun dokumenttiin kolmella tavalla. Tyylimäärittelyt voivat olla erillisessä tiedostossa, johon viitataan HTML-dokumentissa olevan Link-elementin tai import-komennon avulla. Toinen mahdollisuus on sisällyttää tyylimäärittelyt itse dokumenttiin sen Head-elementissä. Kolmas tapa on sisällyttää tyyliohjeita yksittäisiin dokumentin elementteihin style-attribuutin avulla.
XSL (XML Stylesheet Language) on W3C:n tyylimäärittelyjen tekemiseen tarkoitettu kieli, jota kehitetään rinnan XML:n kanssa. XSL:n luomisessa hyödynnetään kaikkia niitä kokemuksia, jotka on saatu työstä DSSSL:n, CSS1:n ja CSS2:n parissa. XSL näki ensimmäisen kerran päivänvalon W3C:lle lähetetyn ehdotuksen muodossa 27.8.1997. Tätä kirjoitettaessa se on edelleen luonnosvaiheessa (XSL:ää kuvaava dokumentti W3C Working Draft Version 1.0, 18.8.1998). Käytetty käsitteistö muuttui perusteellisesti vuoden aikana. Luonnos on hyvin vaikeatajuinen ja puutteellinen. Määrittelytyöllä on kuitenkin vahva ohjelmistoteollisuuden tuki ja sen vuoksi standardoinnin nopeaan etenemiseen on syytä suhtautua optimistisesti.
XSL:n perusajatus on, että XML-merkatusta dokumentista poimitaan ensin tyylimäärittelyn (s.o. XSL-tiedoston) avulla halututut elementit, jotka tarpeen mukaan järjestetään uudella tavalla.[9] Toisessa vaiheessa tämä uudelleen järjestetty dokumentti muotoillaan kuvaruudulle, paperille tulostettavaksi tai tiedostoon tallennettavaksi elementtikohtaisten muunnossääntöjen avulla. XSL on siinä määrin yleinen, että se mahdollistaa myös muunnokset, joilla ei välttämättä ole mitään tekemistä tulostamisen tai katselun kanssa.
| [1] | Hankkeen kotisivu on http://www.w3.org/XML. |
| [2] | Määrittelydokumentti löytyy osoitteesta http://www.w3.org/TR. |
| [3] | Ohjelmointitaitoiselle asiaa saattaa valaista kun toteaa, että XML on pikemminkin SGML-- kuin HTML++. |
| [4] | SGML:stä, XML:stä ja niihin läheisesti liittyvistä asioista on erittäin runsaasti aineistoa myös WWW:n osoitteessa:http://www.oasis-open.org/cover/sgmlnew.html. |
| [5] | Kuten muutkin W3C:n dokumentit, myös XLL on saatavissa osoitteesta: http://www.w3.org/TR/. |
| [6] | ISO/IEC 10179:1996: Document Style Semantics and Specification Language. |
| [7] | CSS1 saattaa osoittautua tärkeäksi XML-merkattujen dokumenttien katselussa selaimilla, jotka eivät tue XSL:n käyttöä. |
| [8] | Dokumentit löytyvät W3C:n palvelimesta osoitteesta http://www.w3.org/TR/. |
| [9] | Tältä osin XSL poikkeaa oleellisesti CSS:n ajattelutavasta. CSS säilyttää HTML-merkatun dokumentin rakenteen entisellään ja muuttaa pelkästään sen ulkoasua. |