SGML-, HTML-, ja XML-kielten eroja ja yhtäläisyyksiä

15.4.1999

Jukka Parviainen
T
Teknillinen korkeakoulu
Jukka.Parviainen@hut.fi

Tiivistelmä

SGML on standardi, jonka avulla voidaan määritellä formaalisti tietyntyyppisen koneisdokumentin rakennetta ja sisältöä. Tämä helpottaa dokumenttien käsittelyä automaattisesti, ohjelmallisesti. SGML on metakieli eli sillä voidaan määritellä muita kieliä.

HTML on SGML:n avulla Webiin suunniteltu dokumenttityyppi, joka kuvaa vain dokumenttien ulkoasun loogista rakennetta. Se on pahasti ylikuormitettu rajallisen informaation kuvauskykynsä vuoksi.

XML on kehitetty, jotta SGML:ää voitaisiin käyttää Webissä. Sille on myös yksinkertaisempaa ohjelmoida sovelluksia kuin SGML:lle ja se on joustavampi ja ilmaisukykyisempi kuin HTML. Myös XML on metakieli.


1 Johdanto

2 SGML

2.1 Sisältöä kuvaava merkkaus

2.2 Dokumenttityypit

2.3 Datariippumattomuus

2.4 Nykytila

2.5 Vahvuudet

2.6 Heikkoudet

3 HTML

3.1 Nykytila

3.2 Vahvuudet

3.3 Heikkoudet

4 XML

4.1 Vahvuudet

4.2 Heikkoudet

5 SGML:n, HTML:n ja XML:n eroja

6 Tulevaisuudennäkymiä

6.1 Korvaako XML HTML:n?

6.2 Korvaako XML SGML:n?

6.3 Onko jokaisella kohta oma merkkauskielensä?

Lähdeluettelo

Lisätietoja


1 Johdanto

Jo 1960-luvulla haudottiin useissa yhteisöissä ajatuksia tietokoneella tapahtuvasta painettavan materiaalin käsittelystä. Jotta tietokoneohjelmat voisivat lukea ja asetella tekstiä oikein, oli tekstin rakenne voitava erottaa sen sisällöstä. Tämä voitaisiin tehdä tekstin sekaan sijoitettavilla merkkauskoodeilla, joista ohjelma tunnistaa tekstin osien keskinäisiä suhteita. Näille merkkauskoodeille tarvittiin formaali kielioppi, jotta kone voisi niitä lukea. Näistä tarpeista sai alkunsa SGML:n (Standard Generalized Markup Languagen) -- merkkauskielten määrittelykielen -- standardointityö. SGML-standardi julkaistiin vuonna 1986. [2]

Maailmanlaajuisen hypertekstijärjestelmän kehittämisen yhteydessä 1990-luvulla määriteltiin sille SGML:llä oma merkkauskielensä; HTML (HyperText Markup Language). Sen kehitystyö jatkuu yhä.

HTML on suunniteltu, ja se sopii oikeastaan vain raporttimallisten hypertekstidokumenttien kuvaamiseen ja välittämiseen. Webin kasvun myötä on kuitenkin huomattu, että tämä ei riitä; tarvitaan tehokkaampia tapoja kuvata hyvinkin erilaista informaatiota sisältäviä dokumentteja, esimerkiksi monimediaa, matemaattisia kaavoja, asiakastietoja tai matkaviestimillä selattavissa olevia sivuja.

2 SGML

SGML (Standard Generalized Markup Language) on kansainvälinen standardi (ISO 8879), jonka avulla voidaan määritellä eri tyyppisten koneisdokumenttien rakennetta ja sisältöä. Nimestään huolimatta se on itse asiassa metakieli, jolla voidaan määritellä merkkauskieliä. [3]

SGML:lle ominaisia piirteitä ovat sisältöä kuvaava merkkaustapa, dokumenttityypin käsite ja riippumattomuus järjestelmästä, jolla tekstiä kirjoitetaan. [5]

2.1 Sisältöä kuvaava merkkaus

SGML:n merkkauskoodit ovat sisältöä kuvaavia -- rakenteenkuvauskielissä kuten HTML:ssä ne ovat usein proseduraalisia (kertovat minkälaiseen tilaan dokumenttia lukeva ohjelma missäkin kohtaa siirtyy). [5]

Käytettäessä sisältöä kuvaavaa merkkausta voidaan samaa dokumenttia lukea tai käsitellä monenlaisilla sovelluksilla [5]. Esimerkiksi huolellisesti toteutetusta elektronisesta "kirjasta" voidaan automaattisesti tuottaa eri tasoisia tiivistelmiä, erilaisia ulkoasuja jne. Samaa tietoa voidaan myös käyttää eri tarkoituksiin: henkilön nimi, osoite ja puhelinnumero voidaan tallettaa tietokantaan, mutta ne voidaan myös asetella tiettyyn ulkoasuun esittämistä varten.

2.2 Dokumenttityypit

SGML:ssä dokumenteilla on tyyppi ja sen määritelmä DTD (Document Type Definition). DTD on yleensä tiedosto, joka sisältää formaalin määrittelyn tietyntyyppiselle dokumentille; mitä osia siinä voi olla, minkälaisia merkkauskoodeja siinä voidaan käyttää missäkin kohtaa jne. Voidaan esimerkiksi määritellä, että ollakseen raportti, dokumentissa on oltava otsikko ja kirjoittajan nimi, jota seuraa tiivistelmä, jonka jälkeen on yksi tai useampia kappaleita. Jos dokumentista puuttuu jokin näistä tai ne ovat väärässä järjestyksessä, se ei ole formaalin määritelmän mukaan raportti. [3,5]

Käyttäjät voivat itse määritellä omia dokumenttityyppejään. Ongelmana on vain, että monimutkainen kieli pitää ensin opetella. Valmiita, vapaasti käytettäviä dokumenttityyppejä on kuitenkin saatavilla useilta toimialoilta.

Dokumentit voidaan myös validoida, eli tarkastaa, että dokumentti on tyyppinsä mukainen. Käytettäessä SGML:ää dokumenttien on oltava valideja.

Formaalisuuden vuoksi samantyyppisiä dokumentteja voidaan käsitellä yhdenmukaisella tavalla [5]. Esimerkiksi HTML:n spesifikaatiot ovat (toistaiseksi) SGML:llä määriteltyjä dokumenttityyppejä, joita selaimet tulkitsevat ja näyttävät lähes yhdenmukaisesti. Selaimet eivät tosin vaadi HTML-dokumenttien olevan valideja.

2.3 Datariippumattomuus

Yksi SGML:n suunnittelun lähtökohta oli, että sen ehdoilla koodatut dokumentit olisivat siirrettäviä. Informaatiota ei saa hävitä, vaikka dokumentti siirretään laitteistosta tai ohjelmistosta toiseen. Tästä syystä SGML-dokumentit ovat tekstidokumentteja. Niissä on lisäksi mahdollista esimerkiksi siirtää sovellusriippumattomasti eri merkistöihin kuuluvia merkkejä merkkijonokorvaus-ominaisuuden avulla. Myös sisältöä kuvaava merkkaus ja dokumenttityypit auttavat tekemään SGML-dokumenteista siirrettäviä. [5]

2.4 Nykytila

Monet suuret teknologiayritykset käyttävät nykyisin SGML:ää jossakin muodossa. Ne ovat kehittäneet omien alojensa merkkauskieliä yhteistyön ja alan kasvun lisäämiseksi. [4]

2.5 Vahvuudet

Joustavuus.
SGML on avoin standardi, jota voidaan käyttää lähes minkälaisen tahansa informaation rakenteen kuvaamiseen. Joustavuus säilyy siirryttäessä järjestelmästä toiseen.[4]
Ilmaisuus.
SGML on voittoa tavoittelematon standardi. Se on lisäksi järjestelmä- ja sovellusriippumaton -- tietyn laitteiston tai ohjelmiston käyttöä ei suosita. Valmiita dokumenttityyppejä on saatavilla Webissä. [4]
Uudelleenkäytettävyys.
Kerran tehdystä dokumentista voidaan automaattisesti tehdä monenlaisia esityksiä tai siitä voidaan hakea tietoja, joita sovellus tarvitsee. [4]

2.6 Heikkoudet

Monimutkaisuus.
SGML:ää käsittelevien ohjelmistojen kirjoittaminen on hankalaa sen monimutkaisten ja harvoin käytettyjen ominaisuuksien vuoksi [4]. Myös SGML:n opettelu on hankalaa, sillä spesifikaatio on monimutkainen ja pitkä.
Huono siirrettävyys Webissä.
Korkean tason SGML-dokumentin esittämiseen täytyy merkatun dokumentin lisäksi siirtää DTD sekä tyylitiedosto ulkoasun kuvaamiseen. Jos joku näistä puuttuu tai jos SGML-instanssi ei ole validi, dokumenttia ei voida esittää. [4]

3 HTML

HTML on tunnetuin ja käytetyin SGML:llä määritelty merkkauskieli. Se on siis yksi tuhansista dokumenttityypeistä. Se on matalan tason kieli, jonka merkkauskoodit ovat proseduraalisia.

3.1 Nykytila

Lähes kaikki Webissä nykyisin selattavissa olevat sivut ovat HTML-dokumentteja (niitä on satoja miljoonia). Niihin upotetaan erilaisia monimedia-liitetiedostoja ja ohjelmoituja elementtejä, mutta niitä kutsutaan kuitenkin HTML-dokumenteiksi. [4]

3.2 Vahvuudet

Ulkoasullisen loogisen rakenteen kuvaaminen.
HTML on tehokas kuvaamaan raportti- tai esitetyyppisen dokumentin ulkoasuun vaikuttavaa loogista rakennetta [4]. Tämän ulkoasun voi kuitenkin "tulostaa" vaikkapa puhesyntetisaattorilla.
Siirrettävyys ja helppokäyttöisyys verkossa.
Monenlaiset järjestelmät ja selaimet voivat vastaanottaa ja esittää HTML-sivuja, koska kieli on pieni, yksinkertainen ja siinä on vakio elementtijoukko. HTML-instansseja näytettäessä niitä ei tarkasteta DTD:tä vastaan ja ulkoasun tyylisivut ovat selaimessa sisäänrakennettuna, eli ainoa siirrettävä tiedosto on itse dokumentti. [4]

3.3 Heikkoudet

Rajoittuneisuus.
Webissä on tarvetta paljon laajemmalle dokumenttityyppivalikoimalle kuin pelkille esitteille tai kirjoitelmille. HTML:ää on yritetty venyttää kykenemään kaikkiin näihin. Selainvalmistajat ovat "lisänneet HTML:ään uusia piirteitä", ohjelmointikielillä on lisätty multimediaa, interaktiivisuutta jne [4]. Jos HTML:stä tehtäsiin laajennettavissa oleva, se menettäisi huomattavasti siirrettävyyttään ja verkkojakelukelpoisuuttaan [4].
Proseduraalinen merkkausmenetelmä.
Merkkauskielten vahvin ominaisuus -- sisällön kuvaaminen -- puuttuu HTML:stä kokonaan. Esimerkiksi hakukoneille HTML-merkkaus on lähes turhaa; dokumenteista voidaan etsiä vain sanojen ilmenemisiä. Monissa teollisissa sovelluksissa tekninen informaatio on tallennettu SGML-muodossa, mutta muunnetaan HTML:ksi vain verkossa esittämistä varten [4].

4 XML

XML on suunniteltu, jotta voitaisiin käyttää SGML:ää Webissä. Se on määritelty poistamalla SGML:stä harvoin käytettyjä ominaisuuksia, jotka vaikeuttavat siirrettävyyttä verkossa ja dokumentteja käsittelevien sovellusten ohjelmointia. XML:n spesifikaatio on huomattavasti yksinkertaisempi ja lyhyempi kuin SGML:n. Tarkoituksena onkin ollut mm. helpottaa dokumenttityyppien määrittämistä. XML:ää tulisi pitää SGML:n roimasti karsittuna versiona -- ei niinkään HTML:n kehittyneempänä versiona. [3]

XML:n spesifikaatiossa todetaan:

"XML on SGML:n osajoukko. Sen määrittelyn tavoite on tehdä SGML:n jakelu, vastaanotto ja käsittely Webissä yhtä helpoksi kuin HTML:n käyttö on tällä hetkellä. XML on suunniteltu helposti toteutettavaksi, ja käytettäväksi yhdessä SGML:n ja HTML:n kanssa." [1]

XML on SGML:n tapaan metakieli, jonka avulla voi määritellä omia dokumenttityyppejä ja siten merkkauskieliä. Esimerkiksi HTML-kielen voi määritellä myös XML:llä -- itse asiassa XHTML-luonnos on jo olemassa.

Koska XML on SGML:ää, sen kirjoittamiseen, hallitsemiseen ja jakeluun on jo olemassa valmiita ohjelmia. Myös XML-selaimia on jo olemassa. [3]

XML on World Wide Web Consortiumin projekti. Spesifikaation kehittäjien joukossa on sekä SGML:n että HTML:n ammattilaisia. Lisäksi eri alojen asiantuntijat Special Interest Groupeissa lähettävät kommentteja ja kritiikkiä kehittäjille sähköpostitse. Myös XML on julkinen formaatti eli se ei ole minkään yrityksen tuote. Useat yritykset ovat kuitenkin sitoutuneet sen kehittämiseen ja käyttämiseen. [3]

4.1 Vahvuudet

Soveltuvuus verkkoon.
SGML ja XML eivät poikkea paljon toisistaan tiedon tallentamisen tehokkuudessa, vaan juuri verkkojaeltavuudessaan. XML-dokumenttien ei tarvitse olla valideja, eikä niiden mukana tarvitse siirtää DTD:tä -- riittää, että ne ovat hyvinmuodostettuja (sovellus voi tulkita DTD:n merkkauskoodien käytön perusteella). DTD:n käyttö ja validointi on kuitenkin tarvittaessa mahdollista. [3,4]
Rakenteelliset Web-sivut.
XML:n avulla voidaan määritellä dokumenttityyppejä, joissa sisällön ja ulkoasun kuvaaminen ovat todella selvästi erotettu toisistaan (tämä on merkkauskielten kehittämisen idea). Esimerkiksi HTML tekee kompromissin; se kuvaa heikosti tai ei lainkaan sisältöä ja toisaalta antaa vain vihjeitä siitä, miten sisältö tulisi esittää. XML-Web-sijojen aineistoihin on mahdollista tehdä nopeita ja monimutkaisia hakuja juuri sisältöä kuvaavien merkkauskielten avulla [4].
Javan todelliset käyttömahdollisuudet.
Nykysin Javaa käytetään korvaamaan HTML:n puutteita Web-sijoissa. Tulevaisuudessa on mahdollista keskittyä Javan tehokkaaseen käyttämiseen tiedonkäsittelyssä. [4]
Linkit.
SGML mahdollistaa yksisuuntaiset linkit loogisen dokumentin sisällä, HTML lisää mahdollisuuden siirtyä myös dokumentista toiseen [4]. XML:ssä tulee olemaan mahdollista mm. kaksisuuntaiset linkit, useaan kohteeseen osoittavat linkit, linkkien hallinta kohdedokumentin ulkopuolella sekä sijojen nimeäminen sijaintiriippumattomasti [4]. Näin voidaan esimerkiksi välttää katkenneiden linkkien syntymistä.

4.2 Heikkoudet

Keveys informaation kuvaamisessa.
Jotkut SGML:n käyttäjät eivät tule toimeen ilman SGML:n monimutkaisia ominaisuuksia, jotka on verkkojaeltavuuden vuoksi XML:stä jätetty pois. Myös heille on kuitenkin jatkossa helpompaa muuntaa korkeatasoiset SGML-dokumenttinsa korkeatasoisiksi XML-dokumenteiksi, kun nykysin ne täytyy muuttaa matalan tason HTML:ksi Web-käyttöä varten. [4]
Vaatimukset tiedonsiirtokapasiteetille.
XML-merkkaus ei sinänsä tule kuluttamaan enempää kaistanleveyttä kuin HTML-merkkaus, mutta koska XML-merkkauskielillä voidaan kuvata useammanlaista informaatiota kuin HTML:llä, on odottettavissa, että siirrettävät tietomäärät kasvavat huomattavasti [4]. HTML-dokumentithan ovat pääasiassa tekstiä tai kuvia, ja esimerkiksi multimedian Web-käyttöä on aikaisemmin hidastanut HTML:n kankeus. Ongelma ei liene kuitenkaan kovin suuri; tiedonsiirtotekniikat kehittyvät myös nopeasti.

5 SGML:n, HTML:n ja XML:n eroja

SGML on ikään kuin äidinkieli ja sillä kuvataan tuhansia erilaisia dokumenttityyppejä. Sitä käytetään esimerkiksi yritysten sisäisessä dokumenttienhallinnassa. Kullakin yrityksellä voi olla useita omaan tarkoitukseensa määriteltyjä dokumenttityyppejä. Dokumenttityyppejä on myös julkisesti saatavilla ja jotkut niistä ovat laajassakin käytössä. Yleensä dokumenttityypit mahdollistavat niillä kirjoitettujen dokumenttien sisällön kuvaamista; eri aloilla erilaiset sisällön osat ovat tärkeitä. SGML:n siirtäminen verkossa on monimutkaista ja sitä tulkitsevien ohjelmien kirjoittaminen vaikeaa. SGML:ää ei ole suunniteltu käytettäväksi Webissä. [3,5]

HTML on yksi SGML:n dokumenttityypeistä ja sitä käytetään Webissä erittäin laajasti [3]. Sen merkkauskoodit kuvaavat parhaiten dokumentteja, jotka ovat verrattavissa tekstinkäsittelyohjelmalla oikeaoppisesti tehtyihin dokumentteihin. Niissä määritellään tekstin osien suhteita toisiinsa ilmoittamalla mm. mikä on otsikko jne., ulkoasu määritellään erikseen tyylimäärityksillä. Selaimissa on valmiina jonkinlainen tyylimääritelmä rakenteen esittämiseksi ja lisäksi käyttäjät voivat itse määritellä omia tyylejään. HTML:n merkkauskoodit pysyvät vakiona ainakin seuraavan suosituksen julkaisemiseen asti. HTML ei kuvaa informaation sisältöä.

XML on SGML:ää, mutta sitä on yksinkertaistettu niin, että jo lyhyellä tutustumisella siihen on mahdollista määritellä omia dokumenttityyppejä. Myös siirrettävyys verkossa ja sovellusten ohjelmointi on helpompaa yksinkertaistusten vuoksi. XML on valmista SGML:ää, joka voidaan validoida tai jäsentää [3].

6 Tulevaisuudennäkymiä

6.1 Korvaako XML HTML:n?

XML ei korvaa HTML:ää, koska jälkimmäinen soveltuu hyvin hypermediadokumenttien esittämiseen ja siirtämiseen Webissä ja XML:stä ja SGML:stä voidaan jatkossakin tehdä helposti lennossa "hypermediaesitys". XML sopii sen sijaan koneisinformaation tuottajille, jotka haluavat tehdä asioita, joihin HTML ei ole tarkoitettu. [3]

6.2 Korvaako XML SGML:n?

XML ei myöskään korvaa SGML:ää, koska se on niin paljon riisuttu malli siitä. SGML:n käyttäjille se tarjoaa kuitenkin paremman mahdollisuuden verkkojakeluun kuin HTML. Olemassaolevia SGML-dokumentteja ei tarvitse muuttaa XML:ksi. XML on tarkoitettu ikäänkuin oikotieksi SGML:ään ihmisille, jotka eivät vielä käytä sitä. On kuitenkin odotettavissa, että suosituimmista SGML:n dokumenttityypeistä ilmestyy myös XML-versio. [3]

6.3 Onko jokaisella kohta oma merkkauskielensä?

XML:n aiheuttamaa Web-kielten sekamelskaa lienee turhaa pelätä. SGML on osoittanut, että vain hyväksi havaitut ja suuressa mittakaavassa käytettävissä olevat dokumenttityypit yleistyvät ja säilyvät. On odotettavissa, että ainakin lähitulevaisuudessa vielä yksityiset ihmiset ja yrityksetkin tekevät tavallisia kotisivujaan HTML:llä -- ehkä tosin seuraavaksi XHTML:llä. Yrityksille, jotka jo käyttävät hyväksi havaittuja SGML-dokumenttityyppejä omassa dokumenttienhallinnassaan, tulee olemaan suuri etu XML:n soveltuvuudesta verkkojakeluun, varsinkin kun suosituimmista DTD:istä ilmestynee XML-versiot. Jos yrityksen dokumentit tuotetaan huolellisesti XML:llä, voidaan aineisto ehkä jatkossa julkaista samoista tiedostoista sekä paperilla että Webissä. Web-sovellusten tarjonta tullee monipuolistumaan ennen kokemattomille alueille uusien tehokkaiden merkkauskielten yleistyessä.

Lähdeluettelo

[1] Bray, T. & Paoli, J. & Sperberg-McQueen, C.M., Extensible Markup Language (XML) 1.0, W3C Recommendation, 10.2.1998
<http://www.w3.org/TR/1998/REC-xml-19980210>
[2] Cover, R., History of Generalized Markup and SGML, 8.10.1997
<http://www.oasis-open.org/cover/general.html#hist>
[3] Flynn, P., Frequently Asked Questions about the Extensible Markup Language, 6.10.1998
<http://www.ucc.ie/xml/>
[4] Lander, R., XML: The New Markup Wave, 20.9.1998
<http://pdbeam.uwaterloo.ca/~rlander/XML/xml_mw.html>
[5] Sperberg-McQueen, C.M. & Burnard, L., A Gentle Inroduction to SGML, 6.3.1996
<http://www-tei.uic.edu/orgs/tei/sgml/teip3sg/index.html>

Lisätietoja

Extensible Markup Language (XML)
Tietoja XML:n vaiheista, suosituksista ja sovelluksista. Virallinen XML-sivu.
HyperText Markup Language, Home Page
Tietoa HTML:n historiasta, suosituksista ja kehityksestä. HTML:n kotisivu.
The SGML/XML Web Page By: Robin Cover
Monipuolista tietoa ja linkkejä SGML:stä ja XML:stä.
Synchronized Multimedia
XML:llä määritelty, Webiin suunniteltu multimedian kuvauskieli.
XHTML 1.0: The Extensible HyperText Markup Language
XML:llä määritelty HTML-spesifikaatio.