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:
- 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.
- 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:ää.
- 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.
- Tulee olemaan helppoa tehdä XML-dokumentteja prosessoivia
ohjelmia.
- 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.
- XML-dokumenttien tulisi olla helppolukuisia ja verrattain
selviä.
XML-dokumentin sisällöstä tulisi saada selvää ilman
XML-selaintakin, esim. tekstieditorilla.
- XML:n tyyli tulisi valmistella nopeasti.
Yleisesti ottaen standardien tekeminen on kovin hidasta.
XML:ää tarvittiin pian ja se kehitettiin mahdollisimman
nopeasti.
- 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.
- 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ä.
- 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>