Next: 3.1 Muunnokset yhden DTD:n puitteissa - editointi Up: SGML-dokumenttien automaattisesta muuntamisesta Previous: 2 Yleistä muunnoksista

3 SGML-muunnokset

To iterate is human, to recurse divine. L. Peter Deutsch

Tässä kappaleessa keskitytään kuvailemaan muunnoksia, joissa sekä lähtö- että maalidokumentit ovat SGML-dokumentteja. Koska HyperText Markup Language (HTML) (katso liite B) -dokumentit voidaan kuvata SGML-standardin mukaisella dokumenttityyppimäärityksellä (Document Type Definition, DTD), käsitellään siksi myös HTML-dokumenttien muunnoksia tässä yhteydessä. HTML-lyhenteellä on kaksi merkitystä: HTML DTD ja HTML DTD:n mukaisen dokumentin rakennemerkinnät. On kuitenkin huomattava, että on olemassa useita dokumenttityyppimäärityksiä, joita kaikkia yleisesti vain sanotaan HTML:ksi.

Dokumenttityyppimääritykset, jotka kuvailevat eri tyyppiset SGML-dokumentit, ovat sekä SGML:n voima että heikkous. SGML-standardi on pieni (standardien mittakaavassa) [ISO86], mutta silti erittäin mukautuva ja käyttökelpoinen. Tämä on pitkälti juuri tiettyjä käyttökohteita varten räätälöityjen dokumenttityyppimäärityksien ansiota. Heikkous DTD:t ovat sen vuoksi, että ei ole olemassa (eikä voikaan olla) mitään yleispätevää reseptiä, jolla yhtä DTD:tä vastaava dokumentti voitaisiin muuntaa vastaamaan toista DTD:tä.

SGML-dokumenttien muuntamiseen liittyy lähes väistämättä rekursiivisuus. Rekursiivisuus jo sinällään on yksi paljon ongelmia aiheuttava alue ohjelmoinnissa. Dokumentit pitää myös jäsentää (engl. parse). Tämä on kuitenkin suhteellisen helppoa rakenteisuuden vuoksi. Ongelmia aiheuttavat edelleen useat DTD:t eli jäsennin (engl. parser) pitää tehdä vain tiettyä DTD:tä varten tai sitten sen on pystyttävä jäsentämään myös DTD ja sen jälkeen dokumentti (katso kuitenkin 3.2.2).

SGML-dokumenttien muuntamiset voidaan jakaa kahteen ryhmään: dokumentin muuttaminen vanhan DTD:n puitteissa ja dokumentin muuttaminen vastaamaan uutta DTD:tä.



Heikki Toivonen -- Last modified 28.1.1997 --