XML (Extensible Markup Language)

17.4.1999

Juha Parhankangas
Ti
Teknillinen Korkeakoulu
Email: jparhank@cc.hut.fi

Niko Stenberg
S
Teknillinen Korkeakoulu
Email: nstenber@cc.hut.fi

Tiivistelmä

WWW:n merkitys tärkeänä informaatiolähteenä on ymmärretty sen alkuajoista lähtien. Verkosta on aina ollut saatavilla tietoa, varsinkin tekstipohjaiseina dokumentteina, mutta WWW -ympäristöä on silti pyritty jatkuvasti kehittämään huomattavasti viihtyisämmäksi ja käyttäjäystävällisemmäksi, koska tällöin voidaan hyödyntää myös muita tiedonvälitysmenetelmiä kuin lukemista. WWW:n hypertekstidokumentit onkin jo pitkään koottu Standard General Markup Languageen (SGML) pohjautuvan Hypertext Markup Languagen (HTML) avulla. HTML on yksinkertainen ja laitteistoriippumaton kuvauskieli, joten sen suosio on ollut ilmeinen. Ongelmaksi sitä käytettäessä on kuitenkin noussut jäykkä formaatti ja sen heikkoutena voi pitää myös sitä, että kielestä puuttuu täysin SGML:n tarjoama joustavuus uusien rakenteiden suhteen. Vuonna 1996 W3C (World Wide Web Consortium) päätti suunnitella uutta kuvauskieltä, jotta ratkaistaisiin HTML:n ja SGML:n heikkoudet. Tuloksena on uusi kuvauskieli XML, joka yhdistää molempien edellämainittujen kielten parhaita puolia.

1. Johdanto

Extensible Markup Language (XML) on yksinkertaistettu versio standardisoidusta kuvauskielestä SGML. SGML määrittelee elektronisten dokumenttien rakenteen ja ulkoasun. Se on kuitenkin turhan kompleksinen, jotta sitä voisi käyttää suoraan WWW:n hypertekstien kuvauskielenä, joten siihen pohjautuva HTML (Hypertext Markup Language) on tähän mennessä ollut paras vaihtoehto dokumenttien määrittelemiselle. Vuonna 1996 W3C:n aloittama uuden kuvaukielen suunnittelu eteni joulukuuhun 1997 mennessä sille asteelle, että voitiin julkaista ehdotus XML 1.0:n suositukselle ja Helmikuussa 1998 W3C julkaisi suosituksen. Työ XML:n parissa jatkuu yhä ja nykyään kehitelläänkin työkaluja, joita XML voisi käyttää hyväkseen. Näitä ovat nimiavaruudet, XML Linking Language, XML Pointer Language ja XSL, Extensible Style Language. [9]

XML on ensisijaisesti suunniteltu vastaamaan WWW -palvelujen tarjoajien vaatimuksia. Kieli on pyritty suunnittelemaan nopeimmaksi mahdolliseksi elektronisen julkaisemisen ja tiedonsiirron tarpeisiin. XML on otettu vastaan sekä Euroopassa ja Aasiassa, joten se on jo nyt kansainvälinen kuvauskieli. [7]

2. Tavoitteet

Päätavoitteina XML:ää suunnitetaessa on ollut saada suoraviivainen ja helppokäyttöinen kieli koko Internetin laajuudelle. Kielen tulee sallia dokumentin runsas muotoilu, mutta olla yhteensopiva ja toimiva.
W3C asetti XML:lle suosituksessaan seuraavat tavoitteet:
  1. XML:ää tulee olla helppo käyttää Internetissä.
    Käyttäjien tulisi voida katsoa XML-dokumentteja yhtä nopeasti ja helposti kuin HTML-dokumenttejakin. Käytännössä tämä tulee olemaan mahdollista vasta kun XML-selaimet ovat yhtä yleisiä ja toimintavarmoja kuin HTML-selaimet.

  2. XML tulee tukemaan monentyyppisiä sovelluksia.
    XML:n tulisi olla hyödyllinen monentyyppisille sovelluksille, kuten julkaisuun, selailuun, sisällön analysointiin, jne. Vaikka XML:n alkuperäinen painotus oli dokumenttien muodostus siirtoon verkon yli, sen ei haluta rajaavan XML:ää.

  3. XML tulee olemaan yhteensopiva SGML:n kanssa
    Suurin osa ihmisistä, jotka työskentelevät XML:n parissa tulevat yrityksistä, joilla on suuria määriä materiaalia SGML:stä. XML suunniteltiin olemaan yhteensopiva olemassaolevien standardien kanssa, mutta samalla sen haluttiin mahdollistavan vapaarakenteisten dokumenttien lähetyksen verkon yli.

  4. Tulee olemaan helppoa tehdä XML-dokumentteja prosessoivia ohjelmia.

  5. Vaihtoehtoisten piirteiden määrä XML:ssä täytyy pitää ehdottomassa minimissään, ideaalisesti nollassa.
    Vaihtoehtoiset piirteet tuovat vääjäämättä mukanaan yhteensopivuusongelmia käyttäjien vaihtaessa dokumentteja.

  6. XML-dokumenttien tulisi olla helppolukuisia ja verrattain selviä.
    XML-dokumentin sisällöstä tulisi saada selvää ilman XML-selaintakin, esim. tekstieditorilla.

  7. XML:n tyyli tulisi valmistella nopeasti.
    Yleisesti ottaen standardien tekeminen on kovin hidasta. XML:ää tarvittiin pian ja se kehitettiin mahdollisimman nopeasti.

  8. XML:n tyyli tulee olemaan formaalia ja tiivistä.
    XML ilmaistaan EBNF-sääntöjen (Extended Backus-Naur Form)[10] mukaan ja sen tulee olla käyttökelpoista moderneille ohjelmointityökaluille ja -tekniikoille.

  9. XML-dokumentteja tulee olemaan helppo luoda.
    Vaikka hyviä editoreita ilmestyykin, täytyy XML:ää voida luoda myös käsin tavallisella tekstieditorilla. Tämä on tärkeää myös sisällön dynaamisessa luonnissa mm. CGI-ohjelmilla ja skripteillä.

  10. Kompaktiuden merkitys XML:ssä on minimaalinen.
    Useat SGML:n ominaisuudet suunniteltiin siten, että kirjoitettaessa sitä käsin, päästäisiin mahdollisimman pienellä vaivalla. XML:n lähtökohta on toisenlainen, tarkoituksena tuoda kielelle selkeä ja konsistentti muoto. Useimmat nykyaikaiset editorit sitä paitsi tuovat käyttäjälle hyviä oikopolkuja tietynlaisen tekstin kirjoitukseen.
[5]

3. Kielen rakenne

Jokaisella XML -dokumentilla on looginen ja fyysinen rakenne. Se kootaan yksiköistä, joita kutsutaan kokonaisuuksiksi (engl. entity). Kukin kokonaisuus voi viitata muihiin kokonaisuuksiin, jotka siten liitetään dokumenttiin mukaan. Aivan dokumentin alussa sijaitsee kokonaisuus, jota nimitetään juureksi. Dokumentin looginen rakenne koostuu määrittelyistä, elementeistä, kommenteista, merkkiviittauksista sekä käsittelyohjeista. Nämä kaikki merkitään dokumenttiin.[5]

Dokumenttiin on kuuluttuva vähintään yksi kokonaisuus. Siinä on myös oltava täsmälleen yksi juuri, eikä sen mikään osa saa esiintyä muissa kokonaisuuksissa. Kaikissa muissa elementeissä, jossa alkutagi kuuluu johonkin toiseen elementtiin, on lopputagingin kuuluttava samaan elementtiin. Toisin sanoen alku- ja lopputagien on vastattava toisiaan, aivan kuten HTML:ssä ja SGML:ssäkin.[5]

Kokonaisuudet voivat olla parsittuja tai parsimattomia. Parsitun kokonaisuuden sisältöviitteet on korvattu viitteiden kohteella esimerkiksi tekstillä. Parsimattoman kokonaisuuden sisältö voi olla tai olla olematta tekstiä ja vaikka sisältö olisikin tekstiä, sen ei tarvitse olla XML:ää. Kullakin parsimattomalla kokonaisuudella on viite, joka on nimi. Tämän avulla saadaan oikea sovellus käynnistettyä tarvittaessa. Parsittuja kokonaisuuksia voi kutsua niiden viitauksilla ja parsimattomia kokonaisuuksia niiden nimellä.[5]

XML ei korvaa HTML:ää, mutta se on SGML:ää, joten se voidaan prosessoida käyttäen SGML -työkaluja. XML:n avulla voidaan esimerkiksi määritellä HTML -versioita. Suurena erona juuri HTML:ään voi pitää sitä, että XML:ssä ei ole valmiiksi määriteltyjä tageja vaan käyttäjän pitää itse määritellä nämä. Näiden tagien avulla sisällön muokkaaminen käy joustavammin ja tehokkaammin kuin HTML:n avulla. Tagien määrittämisen jälkeen käyttäjän tulee luoda DTD (Document Type Definition), jotta tagien tarkoitus määritettäisiin.[1]

XML:n syntaksi on siis kovin samanlainen HTML:n kanssa. Elementti kootaan dokumentissa alku- ja lopputagin avulla esim.<elementti> ja </elementti>. Tagien väliin asetetaan elementin sisältö. Eroksi HTML:ään muodostuukin se, että sisällön tarkoitusta ei rajoiteta XML:ssä mitenkään.[2]

DTD on joukko sääntöjä. Sen avulla määritellään, mitkä tagit ovat sallittuja, mitä attribuutteja tageilla ja missä suhteessa eri tagit ovat toisiinsa. Se kuuluu välttämättömänä osana XML -dokumenttiin. DTD:n avulla saadaan dokumentin rakenne määriteltyä miellyttävällä tavalla, koska näin saadaan dokumenttikohtaisesti määriteltyä, mitkä piirteet ovat olennaisia asian esittämiselle.[3]

4. XML verkossa

4.1 Linkit

Jotta XML voisi korvata HTML:n WWW:n pääselauskielenä, täytyy luonnollisesti olla mahdollisuus siirtyä dokumenteista toiseen hyperlinkkien avulla. XML:ään tätä mahdollisuutta toteuttaa The XML Linking Working Group. Hanke tunnetaan nimellä Extensible Linking Language (XLL), mutta se on nyt jaettu kahteen komponenttiin: XML Linking Language (XLink) ja XML Pointer Language (XPointer). Hyperlinkkien lisäksi nämä komponentit tuovat pari uudistusta tietojen linkittämiseen.

XLink määrittelee rakenteita, joita voi sijoittaa XML:ään kuvaamaan objektien välisiä linkkejä. XLink käyttää XML:n syntaksia näiden rakenteiden määrittelyyn.HTML:n yksisuuntaisen linkin lisäksi XLink mahdollistaa kaksisuuntaisen linkin ja linkin, jolla on useampi kohde.

XPointer määrittelee kielen, jota XLink käyttää hyödyntäessään linkkejä. XPointerin avulla linkillä voi päästä käsiksi XML-dokumentin rakenteeseen ja elementteihin. XPointer mahdollistaa esim. sisällön lisäämisen XML-dokumenttiin toisesta XML-dokumentista.
[6]

4.2 Tyyli

Verkkojulkaisua tehdessä on sisällön lisäksi tyyli osoittautunut erittäin tärkeäksi. Sen voi nykyisin selvästi huomata WWW:tä selaillessaan. HTML:n perustagien suomat muotoilumahdollisuudet ovat useimpiin tarkoituksiin riittävät, mutta muotoilu on työlästä toteuttaa ja muokata. Useissa tapauksissa pyritään suurten sivukokonaisuuksien (esim. yritysten sivujen) toteuttamisessa yhtenäiseen tyyliin ja tarve erillisille tyylimäärittelyille on selvä. Niinpä HTML:n rinnalle kehitettiin CSS-mekanismi (Cascding Style Sheets), joka sallii sisällön esittämisen erikseen määritellyn tyylin mukaisesti.

Samanlainen mekanismi haluttiin myös XML-dokumenttien esittämiseen ja niinpä W3C kehittääkin nyt muotoilukieltä Extensible Style Language, XSL. CSS:ää voi tietyin rajoituksin myös käyttää XML-dokumenttien kanssa, mutta XML:n mahdollisuudet tiedon esittämisessä menevät huomattavasti HTML:n ohi. Siksi haluttiin kehittää näitä mahdollisuuksia paremmin hyödyntävä mekanismi. XSL soveltuu erittäin hyvin esim. valmiista datasta generoitaviin XML-sivuihin tai suurten sivukokonaisuuksien muotoiluun. CSS:ään verrattuna XSL sallii huomattavasti kompleksisemman muotoilun ja tekstin lisäksi grafiikkaakin on mahdollista generoida annetun datan perusteella.Lisäksi muotoilujen on mahdollista olla päällekkäisiä. SGML-dokumenttien esittämiseen tarkoitettu DSSSL (Document Style Semantics and Specification Language) on liian monimutkainen käytettäväksi verkkojulkaisussa, kuten on itse SGML:kin. XSL:n tarkoitus on yhdistää CSS:n ja DSSSL:n parhaat puolet, mutta olla tarpeeksi yksinkertainen.
[8]

4.3 Käyttökohteet

XML-perheen mukanaan tuomat mahdollisudet ovat lukuisat. Vaikka koko paketti ei vielä olekaan kasassa on monilla tahoilla tekeillä sille perustuvia käyttökohteita.

Erityisen käyttökelpoisen XML:stä tekee sen mahdollisuus saada tietoa muiden dokumenttien rakenteesta sisällön lisäksi. Tämän avulla saadaan ainakin tietokantasovelluksiin ja hakupalveluihin uusia ominaisuuksia. Voisi kuvitella esim. hakupalvelun, jossa hakusanalle voisi lisäksi antaa elementin tai kategorian, johon sana kuuluu. Näin voisi hakea esim. yksilöllisesti otsikkotietoja, laulun sanoja, tai sanoja erityisiltä tietokoneaiheisilta sivuilta.

Mahdollisuus lisätä linkin takana olevia resursseja XML-dokumenttiin on myös melkoinen uudistus. Esim. suurten sivukokonaisuuksien ylläpitäjille tämä on varmasti tervetullutta. Muutoksia täytyy tehdä vain yhteen dokumenttiin, muiden dokumenttien päivittäessä sisältöään tästä kyseisestä dokumentista.

XML:ään perustuvat kielet ovat yksi käyttöalue, jolta on jo poikinut useita tuotteita. W3C:n kehittämä MathML on näistä yksi esimerkki. MathML:llä voi upottaa dokumentteihin matemaattisia kaavoja, jotka kieli muotoilee. W3C:n kehittämä on myös SMIL eli Synchronized Multimedia Integration Language, joka on XML:ään perustuva kieli multimediaesitysten tekemiseen verkkoon. SMIL-esityksiä voi kirjoittaa HTML:n tapaan vaikka tekstieditorilla ja ne voivat sisältää mitä tahansa mediatyyppiä. Erityisesti videovirta dokumentin osana on herättänyt kiinnostusta.
[4]

5. Yhteenveto

Internetin verrattain lyhyen historian aikana on WWW-palvelu noussut huikean laajaan suosioon. WWW:n kuvauskielenä toimiva HTML mahdollistaa laiteriippumattoman visuaalisen sisällön luomisen siirrettäväksi Internetissä. HTML:n helppo rakenne on saanut aikaan sen, että WWW-sivujen määrä on nyt käsittämättömän suuri ja verkkosurffauksesta on tullut muotia. Erottuakseen verkkojulkaisujen massasta WWW-sivun on oltava tyylikäs. HTML:n ensimmäinen versio tarjosi varsin suppeat mahdollisuudet sivujen muotoiluun ja käyttäjilleen ne eivät tahtoneet riittää. Ajan kuluessa HTML on uudistunut tuoden uusia elementtejä sivuihin, yrittäen näin korjata tilannetta. Valitettavasti uudistukset ovat tuoneet mukanaan yhteensopivuusongelmia ja WWW:n suosio sivujen tekijöille ylläpito-ongelmia.

XML yrittää nyt ottaa harppauksen parempaan tavoitteenaan korjata nämä ongelmat. Keinoinaan XML:llä on kiinteiden elementtien sijaan vapaasti määriteltävät elementit. Yhteensopivuusongelmien tulisi XML:ää käytettäessä vähentyä huomattavasti. Tyylimäärittelyn ollessa vapaampaa XML-dokumentit ovat rakenteeltaan vapaampia ja XSL-tyylimäärittelyt tuovat mukanaan helpon tavan muotoilla sisältöä monin tavoin. Sisällön esitykseen myös käyttäjä voi vaikuttaa. XML-dokumentin rakenne on hyvin järjestelty tiettyjen resurssien ollessa tietyssä paikassa. Tämä helpottaa XML-dokumenttien ylläpitoa ja muuttamista. Lisäksi dokumenttien rakenteellisiin tietoihin pääsee käsiksi. Lukuisista muutoksista huolimatta XML pyrkii säilyttämään HTML:n helppouden.

XML on suunnittelun alkuhetkistä lähtien ollut melkoisen hypen lähteenä. WWW:n suosion takia "vallankumous" on ymmärrettävästi saanut huomiota osakseen. Kun XML-paketin oheisstandardit saadaan valmiiksi nähdään lunastaako se odotukset. Itse XML on jo ehditty todeta hyväksi päätellen siitä johdettujen kielten suosiosta.

6. Lähdeluettelo

[1] Anon, XML Introduction, 3.2.1999 [Viitattu 16.4.1999]
< http://www.webbedenvironments.com/articles/39.html>

[2] Anon, XML Syntax, 3.8.1998 [Viitattu 16.4.1999]
< http://www.engineering.uiowa.edu/~lahirsch/Potential2.htm>

[3] Anon, XML-2 (4) Definition of DTD, [Viitattu 16.4.1999]
< http://www.amdahl.com/doc/products/ess/trn/xml-2/xml4.htm>

[4] Bray T., Connolly D., W3C Extensible Markup Language (XML) Activity, 11.4.1999 [Viitattu 16.4.1999]
< http://www.w3.org/XML/Activity>

[5] Bray T., Paoli J., Sperberg-McQueen, Extensible Markup Language (XML) 1.0 (W3C Recommendation 10-February-1998), 10.2.1998 [Viitattu 15.4.1998]
< http://w3c.org/TR/1998/REC-xml-19980210>

[6] Cover R., Extensible Linking Language (XLL), 1.4.1999 [Viitattu 16.4.1999]
< http://www.gslis.utexas.edu/~sandenaw/xll.html>

[7] Cover R., Extensible Markup Language (XML), 16.4.1999 [Viitattu 16.4.1999]
< http://www.oasis-open.org/cover/xml.html>

[8] Cover R., Extensible Stylesheet Language (XSL), 16.4.1999 [Viitattu 16.4.1999]
< http://www.oasis-open.org/cover/xsl.html>

[9] Sandenaw S., Wood I., Extensible Markup Language (XML), 21.4.1998 [Viitattu 15.4.1999]
< http://www.gslis.utexas.edu/~sandenaw/xml.html>

[10] Venter H., Extended Backus Naur Form (EBNF), 19.9.1997, [Viitattu 16.4.1999]
< http://www.cs.upe.ac.za/staff/csabhv/slim/ebnf.html>