Next: 2 Yleistä muunnoksista Up: SGML-dokumenttien automaattisesta muuntamisesta Previous: Sisällys

1 Johdanto

What you see is all you get. Brian Kernighan

Tässä tutkielmassa käsitellään Standard Generalized Markup Language (SGML) [ISO86] -standardin mukaisia dokumentteja koskevia automaattisia muunnosohjelmia ja muunnoksiin liittyviä ongelmia. Johdannon jälkeen käsitellään muunnoksia yleensä. Luvussa 3 keskitytään muunnoksiin, joissa sekä lähtö- että maalidokumentit ovat SGML-muotoisia. Luvussa 4 keskitytään tietokantoja koskeviin muunnoksiin. Loput muunnokset käsitellään luvussa 5.

Standard Generalized Markup Language on lyönyt itsensä läpi dokumenttistandardina. Suomessa SGML:ää käyttäviä suuryrityksiä ovat esimerkiksi Nokia, Wärtsilä Diesel ja Valmet. Ulkomaisia tunnettuja SGML:n käyttäjiä ovat mm. USA:n puolustusministeriö ja British Airways. Jyväskylän yliopistokin on rakenteisten dokumenttien tutkimuksen lisäksi ryhtymässä käyttämään SGML:ää esimerkiksi julkaisutietokannan muodossa.

SGML:n historiallista kehitystä voitaisiin lähteä seuraamaan kustantamon toiminnasta. Ennen tietokoneita käsikirjoituksien mukaan liitettiin kirjoitetut ohjeet siitä, kuinka kustantamo halusi painotalon painavan kirjoituksen. Kappaleen viereen voitiin esimerkiksi kirjoittaa: "Tämä kappale 12-pisteen Helvetica Medium Italic -kirjasinlajilla, sisennys 1 tuuma." Tätä merkintätapaa kutsuttiin englanniksi nimellä markup, josta nimitys on siirtynyt myös nykyään käytettäviin tietokonesysteemeihin. Merkinnät oli helppo kirjoittaa, koska tavallinen kieli kelpasi.

Tietokoneiden tulon myötä otettiin käyttöön myös uudenlaiset merkintäkielet. Yhteensopivuusongelmia ei juuri ollut vielä tässäkään vaiheessa, sillä käsikirjoitukset toimitettiin edelleen paperille kirjoitettuna, josta ne siirsi painokoneiden ymmärtämään elektroniseen muotoon pienehkö ammattilaisten joukko.

Mikrotietokoneiden yleistymisen myötä kirjailijat alkoivat toimittaa tekstejään elektronisessa muodossa. Silloin syntyivät ensimmäiset yleiset tekstin asettelukielet, esimerkiksi nroff kuusikymmentäluvun lopulla. Myöhemmän vaiheen systeemejä edustaa TeX. Eri käyttöjärjestelmät ja tekstinkäsittelyohjelmat alkoivat pian saada aikaan sekavuutta. nroff-merkatun dokumentin muuttaminen TeXiksi ei ole merkintöjen erilaisuuksien vuoksi helppoa.

Todellinen elektronisen tekstinkäsittelyn kulta-aika koitti WYSIWYG-tekstinkäsittelyohjelmien myötä (WYSIWYG = What You See Is What You Get). Esimerkiksi Microsoft Word kuuluu tähän ohjelmaluokkaan. Hankaluutena on, samoin kuin edellisen kauden ohjelmistoilla, asettelukomentojen sijoittelu tekstin sekaan. WYSIWYG-tekstinkäsittelyohjelmaa käytettäessä merkintöjä ei vain yleensä näe. Muunnosongelma tuli vain entistä suuremmaksi, koska tarjolla on entistä useampia käyttäjiä, käyttöjärjestelmiä ja ohjelmia. Lisäksi WYSIWYGin helppokäyttöisyydellä on tapana aiheuttaa turhaakin ominaisuuksilla leikittelyä. Kustantamo, joka voi ottaa vastaan yleisimmillä ohjelmilla ja käyttöjärjestelmillä luotuja käsikirjoituksia, joutuu hankkimaan tai tekemään muunnosohjelmat kymmeniä eri formaatteja varten. On nimittäin muistettava, että kustantamo ei suinkaan laita painoon kirjailijan tekemää tekstiä sellaisenaan. Mahdollisesti teksti käy läpi useita muutoksia, ensin kustantamon omassa käytössä olevaan monipuoliseen formaattiin ja sitten ehkä vielä painamista varten omaan formaattiin.

American National Standards Institute (ANSI) asetti vuonna 1978 työryhmän muodostamaan tekstinmerkintästandardin, joka olisi yksiselitteinen ja niin monipuolinen, että muita merkintätapoja ei tarvittaisi. Työ siirtyi International Standards Organisationille (ISO), ja 1986 syntyi SGML. Voisi sanoa, että se uudisti tekstidokumenttien ajattelun täysin. SGML:llä kuvataan dokumentin looginen rakenne ottamatta mitään kantaa esitystapaan. Kustantamoa ajatellen tämä on ideaalista: kaikki kirjailijat voivat toimittaa kirjan SGML-muotoisena dokumenttina, jolloin kustantamolle jää vapaat kädet kirjan visuaalisessa esityksessä. SGML-muotoisen dokumentin käsittely on tietokoneellakin helppoa sen tiukan rakenteisuuden vuoksi. Kirjailijaakin SGML:n käyttö hyödyttäisi: tutkimusten mukaan tavallisilla tekstinkäsittely- ja julkaisuohjelmilla kirjoittavat käyttävät jopa 30% ajastaan informaation etsimiseen ja toiset 30% tyylien käyttämiseen [Arb95]. Lisäksi teknologia uudistuu täydellisesti parin vuoden välein, jolloin joudutaan vanhan laitteiston ja ohjelmistokannan uusimisen lisäksi muuttamaan myös dokumentit uudelle tekniikalle.

Tekstimuotoisten dokumenttien yleisestä taloudellisesta merkityksestä kertonee se, että joidenkin arvioiden mukaan USA:n bruttokansantuotteesta menee 20% uuden informaation tuottamiseen - tästä 90% on tekstimuotoista dokumentaatiota [Arb95].

SGML ei ole suinkaan ainoa standardi rakenteisille dokumenteille. Se lienee kuitenkin laajimmin tunnettu ja käytössä oleva. Muita standardeja ovat esimerkiksi Office (tai Open) Document Architecture (ODA) [ISO89], jossa loogisen rakenteen lisäksi voidaan ilmaista myös tekstin asettelu, ja Hypermedia/Time-based Structuring Language (HyTime) [ISO92], jota voidaan pitää laajennettuna SGML:nä; HyTime soveltuu esimerkiksi multimediaesitysten rakenteiseen kuvailuun. HyTimen SGML:ää edistyneemmät linkit ovat saaneet jotkin ohjelmistojen tekijät lisäämään HyTime-ominaisuuksia SGML-selailuohjelmiinkin [Syn94].

Jonkinlainen SGML-tietämys on tarpeen tämän tutkielman ymmärtämiseksi. Riittävä kuvaus on esimerkiksi artikkelissa A Gentle Introduction to SGML [TEI]. Lisäksi olisi hyödyllistä tietää jotakin (relaatio)tietokannoista ja ehkä LaTeXista [Lam94]. Kertauksen vuoksi alla on vielä yksinkertainen SGML:n mukainen dokumenttityyppimääritys ja sen mukainen dokumentti selityksineen:


<!-- Tämä on kommentti.
     Tästä alkaa dokumenttityyppimääritys: -->
<!DOCTYPE memo [
<!ELEMENT memo    - - (otsikko? , kappale+)>
<!ELEMENT otsikko - O (#PCDATA)>
<!ELEMENT kappale - O (#PCDATA)>
<!ATTLIST kappale
          tyyli   (normaali | tarkea) tarkea>
]>

<!-- Tästä alkaa dokumentti: -->
<memo>
  <otsikko>
    Tämä on vapaaehtoinen otsikko
  </otsikko>
  <kappale>
    Tämä on normaali kappale. Sisennykset eivät ole 
    välttämättömiä, mutta ne auttavat ihmisiä loogisen 
    rakenteen erottelussa.
  <kappale tyyli="tarkea">
    Tämä on tärkeä kappale!
</memo>

Yo. dokumenttityyppimääritys soveltuu esimerkiksi muistilappuja varten. Muistilapussa on vapaaehtoinen otsikko, jota seuraa yksi tai useampia kappaleita. Kappale-elementillä on attribuutti, jolla voidaan ilmaista kappaleen tärkeys; oletusarvona on normaali-tyylinen kappale. Otsikko ja kappale koostuvat normaalista tekstistä, jonka tarkempaan rakenteeseen tämä dokumenttityyppimääritys ei ota kantaa.

SGML:n mukaisessa dokumentissa dokumentin rakenne kuvaillaan rakennemerkinnöillä (engl. markup). Merkinnät tunnistaa tavallisesti hakasulkeista (< >), vaikka standardi mahdollistaa myös muiden merkkien määrittelyn. SGML-dokumentti jakautuu loogisiin kokonaisuuksiin, joita voidaan kutsua elementeiksi (engl. tag). Usein puhutaan myös alkuelementistä (engl. start-tag), elementin sisällöstä (engl. content) ja loppuelementistä (engl. end-tag). Otsikko-elementin tapauksessa nämä olisivat järjestyksessä ``<otsikko>'', ``Tämä on vapaaehtoinen otsikko'' ja ``</otsikko>''. Yleisesti on määritelty, että ``</'' tarkoittaa sulkevaa elementtiä eli loppuelementtiä.

Lähteistä voisi sanoa sen verran, että viittauksilla standardeihin on lähinnä se merkitys, että kiinnostunut lukija voi niiden avulla löytää helposti tarkat tiedot mainituista standardeista. Varsinaisesti standardeja ei tässä tutkielmassa käsitellä eikä oteta kantaa niissä esitettyihin väitteisiin tai tutkimustuloksiin.

WWW-lähteistä on pidettävä mielessä se, että varsinkin yksityisten henkilöiden ylläpitämät sivut voivat hävitä tai siirtyä ilman varoitusta lyhyellä aikavälillä. Paras tapa lähteissä mainittujen WWW-dokumenttien uudelleen etsimiseksi on käyttää jotakin hakuohjelmaa laittaen hakusanoiksi dokumentin otsikon ja kirjoittajan.

Kaikki tekstissä mainitut ohjelmistot on koottu liitteeseen A. Liitteessä on mainittu ohjelman tekijät sekä WWW-linkki, josta ohjelman voi hakea tai josta sitä voi tiedustella. Liitteessä B on kerrottu, mistä tekstissä mainitut dokumenttityyppimääritykset voi hakea WWW:n avulla. Vaikka tämän tutkielman painopiste onkin - käytännöllisistä syistä - vapaasti saatavilla olevissa ohjelmistoissa, ei se tarkoita, että kaupallisia ohjelmia olisi vähän tarjolla, päinvastoin.

Joillakin ohjelmistovalmistajilla on myös (mielestäni kiusallinen) tapa julkaista dokumentaatio ainoastaan elektronisessa muodossa, joka seuraa ohjelman mukana. Ohjelmaa omistamatta on lähes mahdotonta tutustua tällaisiin lähteisiin.

Kielenkäytöstä voisi sanoa vielä sen verran, että kaikille asioille ei ehkä ole löytynyt virallista suomenkielistä vastinetta. Välttämättä sellaista ei olekaan. Epäselvissä tapauksissa on pyritty kirjoittamaan englanninkielinen vastine sulkuihin suomennoksen jälkeen.


Heikki Toivonen -- Last modified 28.1.1997 --