Esipuhe 1 Esipuhe Wanhaan hyvään aikaan tekstin prosessointi sujui kutakuinkin seuraavasti: - kirjoittaja kirjoitti käsikirjoituksen (esim. kirjoituskoneella) ja lähetti sen kustantajalle - Käsikirjoituksen hyväksymisen, oikolukemisen, editoimisen, yms. jälkeen kustantajan taittaja suunnitteli tuotettavan teoksen ulkoasun (sommittelu, taitto [layout]) kirjoittamalla käsin ulkoasun ohjeet käsikirjoituksen marginaaliin (palstat, kirjasimet, fonttikoot, tekstin välistys, ) - Seuraavaksi latoja latoi käsikirjoituksen annettujen ohjeiden perusteella, tuloksena konkreettinen ohje esim. kirjan painamiseksi - Lopuksi tuotos julkaistiin käyttäen erilaisia markkinointi- ja jakelukanavia Erityyppisillä töillä oli siis eri vaiheet ja eri tekijät - tosin ammattikirjoittajat siirtyivät hiljalleen käyttämään suoraan myös formatointikieliä (esim. ntroff ja TEX) 73275 RAKENTEISET DOKUMENTIT (kevät 2004) luentorunko ON 10
Esipuhe What You See Is What Yout Get (-live with it!) Nykyiset tekstinkäsittely- ja julkaisuohjelmat ([desktop publishing]) tarjoavat näennäisen helpon tavan tehdä kaiken itse yhdeltä istumalta 80-luvulta alkanut WYSIWYG-buumi, hyvää: - kehittyneet ohjelmat helppokäyttöisiä ja intuitiivisia (työpöytämetaforat) - mahdollisuus lopputuloksen näkemiseen jo kirjoitusvaiheessa, joten esimerkiksi pienimuotoinen julkaisutoiminta on mahdollista helposti - mukana monipuolisia formatointi ja taitto-ominaisuuksia, Internetin myötä myös jakelu Ongelma: työstä tulee helposti käsityötä (suuret dokumentit!) - dokumenttien suunnittelu jää helposti puolitiehen (=tehdään huonosti) - rakenne parhaimmillaankin implisiittistä, kirjoittajan rooli on epäselvä Ratkaisuja: hyvä suunnittelu(!), etsi/korvaa-toiminnot, tyylit, mallit, 73275 RAKENTEISET DOKUMENTIT (kevät 2004) luentorunko ON 11
Esipuhe Dinosaurus, joka elää & voi hyvin: LaTeX Kaikki eivät kuitenkaan kirjoita tuotoksiaan MS Office Wordillä - erityisesti korkeakoulumaailmassa huomattava osa akateemisista kirjoittajista vannoo LaTeXin nimeen (joskus jopa fanaattisuuteen asti ) TeX on tekstin ja matemaattisten kaavojen ladontaan tarkoitettu pitkän linjan tietokoneohjelma, jonka ensimmäinen versio julkaistiin jo 1982 (D. Knuth). Ohjelmatoteutuksia löytyy nykyään useille eri käyttöjärjestelmille LaTeX on TeXin varaan rakentuva makropakkaus (ensimmäinen versio oli L. Lamportin käsialaa), jonka avulla kirjoittajat voivat latoa ja tulostaa korkealaatuisia (tekstipainotteisia) dokumentteja ammattimaisen taittomallin mukaisesti Työskentely LaTeXilla tapahtuu periaatteessa ohjelmankehitystyöstä tuttujen pelisääntöjen mukaisesti - kirjoittaja kirjoittaa lähdekoodit ascii-muodossa (ns. käsikirjoitustiedostot) tekstinkäsittelyohjelmalla (esim. emacs).tex-tiedostoiksi - lähdekoodi käännetään (tyypillisesti komentorivipohjaisella) latexohjelmalla graafiseen muotoon.dvi-tiedostoiksi, joka voidaan edelleen muuntaa tulostettavaan muotoon (tai lähdekoodia voi korjata) 73275 RAKENTEISET DOKUMENTIT (kevät 2004) luentorunko ON 12
Esipuhe LaTeX-esimerkki Tyypillinen (englanninkielinen) LaTeX-tiedosto näyttää esim. seuraavalta: \documentclass[a4paper]{article} \begin{document} \title{latex-example}\author{ossi Nyk\"{a}nen} \maketitle \abstract{this article demonstrates LaTeX basics. Read some introductionary book for details.} % Tästä se alkaa \section{introduction} \LaTeX{} really is something, especially if you want to input equations in your text\footnote{assuming you know \LaTeX codes, that is.}. Here's an example: \begin{equation}\label{pred} \forall x \in X: P(x). \end{equation} If you wan't to know what \ref{pred} means, please consult your elementary logic book. \end{document} Huomaa: erikoismerkit, käskyt, kommentit sekä tiedoston rakenne 73275 RAKENTEISET DOKUMENTIT (kevät 2004) luentorunko ON 13
Jos kaikki tarvittava on työkoneella valmiiksi asennettuna, kääntäminen Unixissa tai Linuxissa sujuu helposti komennolla latex koe.tex Esipuhe Dokumentin katselu ja ps-tiedoston tuottaminen tulostamista varten on yhtä helppoa: xdvi koe.dvi & dvips -o koe.ps koe.dvi Tuloksena on ammattimaisen ulkoasun omaava sivupahanen, jossa ilmaiseksi saatiin varsin paljon dokumentin rakenne LaTeX-komennoilla merkkaamalla: - palstoitus ja marginaalit (alaviittaus) - eri tyylit tekstin eri osille (otsikko, tiivistelmä, vakiokentät, ) - otsikoiden numerointi, kaavan numerointi & viittaukset, jne. Juuri tämä on LaTeXin idea: systeemi tarjoaa ammattimaisen rakenteen ja ulkoasun kirjoittajan keskittyessä olennaiseen, eli sisällön tuottamiseen LaTeX-systeemissä "LaTeX taittaa" ja "TeX toimii latojana". Käytännössä tämä tarkoittaa sitä, että kirjoittaja muotoilee tekstinsä ja sen rakenteen LaTeXin käskyjen avulla halutuksi, josta esitysversio sitten käännetään 73275 RAKENTEISET DOKUMENTIT (kevät 2004) luentorunko ON 14
LaTeX pyrkii tekemään teksteistä paitsi hyvän näköisiä, ennen kaikkea luettavia (hyvä sisäänrakennettu typografinen malli & johdonmukainen rakenne) Esipuhe LaTeXista on olemassa eri versioita. Nykyinen versio on LaTeX2e - LaTeX3 on jo kehitteillä (ks. LaTeX Project Home Page, http://www.latex-project.org/ ) Windows-käyttöön tottuneille (ja miksei muillekin) LaTeX on oikeastaan aivan oma maailmansa. Verkosta löytyy runsaasti aiheeseen liittyvää materiaalia - aluksi kannattaa lukea esim. - Pitkänpuoleinen johdanto LaTeX2e:n käyttöön (ks. esim. http://www.tug.org/tex-archive/info/lshort/finnish/lyhyt2e.pdf ). Tämän jälkeen helpon pääsyn lisämateriaaliin, oppaisiin ja ohjelmistoihin tarjoaa esim. - Jukka Korpelan TeX-sivusto (ks. http://www.cs.tut.fi/~jkorpela/softa/tex.html ) 73275 RAKENTEISET DOKUMENTIT (kevät 2004) luentorunko ON 15
Esipuhe WWW & HTML Internetin suosion myötä tietoverkkojen arvo arkipäiväisen informaation levittelyssä huomattiin. Kirjoittaminen ei vain saisi olla kohtuuttoman vaikeaa World Wide Webin lanseeraama HTML esitteli 90-luvun alussa suurelle yleisölle yksinkertaisen mutta rakenteellisen merkintäkielen - idea: teksti + yksinkertainen merkkaus - nopea oppia perusideat leviävät ja HTML otetaan todella nopeasti laajamittaiseen käyttöön Ongelmia: - helppous johtaa löysyyteen, merkkaus sekaisin rakenne- ja muotoilumäärityksiä ja selaimet sallivat #%&"-koodit mukisematta - ulkoasullisesta rajoittuneisuudesta johtuen kuvaileva merkkaus ei saa suosiota, vaan koodeja aletaan käyttää myös formatointiin Tulos: HTML lipsuu kohti formatointikieltä: WWW-WYSIWYG. Ei hyvä Oppiminen tapahtuu kantapään kautta: takaisin sorvin ääreen 73275 RAKENTEISET DOKUMENTIT (kevät 2004) luentorunko ON 16
Esipuhe XHTML-esimerkki Tyypillinen XHTML-tiedosto (versio 1.1) näyttää esim. seuraavalta: <?xml version="1.0" encoding="iso-8859-1"?> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/tr/xhtml11/dtd/xhtml11.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head><title>html-esimerkki</title></head> <body><!-- Tästä se alkaa... --> <h1>johdanto</h1> <p>valitse HTML kun haluat liittää kuvia ja linkkejä tekstiisi (ja tunnet HTML-merkkauksen perusteet). Esimerkki:</p> <p><img src="kuva.gif" alt="kuva"> <a href="http://matriisi.ee.tut.fi/hmopetus/">hm ammattiaineen kotisivut</a></p> <p>jos et ymmärrä tämän dokumentin merkitystä, käy läpi HTMLkielen perusteet.</p> </body> </html> Huomaa: erikoismerkit, tagit, kommentit sekä tiedoston rakenne HTML:ään palataan yksityiskohtaisemmin ponnahduslautana XML:ään 73275 RAKENTEISET DOKUMENTIT (kevät 2004) luentorunko ON 17
Esipuhe Paluu juurille Rakenteisten dokumenttien perusajatuksena on kohdistaa dokumenttien suunnittelun huomio oikeisiin kohtiin: - dokumenttien rakenteen suunnittelu sisällön merkityksen näkökulmasta, ei ulkoasun - komponenttiajattelu (dokumenttien peruspalasia ovat elementit) - dokumenttien ulkoasun ei ole pakko suoraan vastata niiden sisällöllistä rakennetta ja päinvastoin Kyseessä ei ole uusi asia! - rakenteisten dokumenttien moderni esiinmarssi alkoi käytännössä SGML-standardin (ISO 8879:1986) valmistuttua 1986 - SGML:n kehitystyö alkoi jo 1980 - pohjana IBM:n GML (Generalized Markup Language) vuodelta 1969! (Goldfarb, Mosher, Lorris) SGML osoittautui kuitenkin varsin raskaaksi isojen poikien standardiksi (esimerkiksi IBM, USA:n Puolustusministeriö) - suppea käyttö ei saavuttanut laajaa suosiota 73275 RAKENTEISET DOKUMENTIT (kevät 2004) luentorunko ON 18
Esipuhe Kerran vielä pojat SGML:n idea on hyvä, mutta spesifikaatio on mammuttimainen (~500 sivua) W3C:n SGML Working Group: XML 1.0 vuonna 1998 (~30 sivua) - XML on SGML:n sovellusprofiili - Vaatii käytännössä tuekseen myös muita standardeja ja tietämystä! Yleisöystävälliset tavoitteet - yhteensopivuus SGML:n kanssa ja sen hyvät puolet - dokumenttien sekä niitä prosessoivien ohjelmien suunnittelun ja lukemisen helppous ja selkeys - spesifikaatiossa vähän valinnaisia piirteitä ja soveltaminen täsmällistä - dokumenttien käyttö Internetissä on yksinkertaista XML-standardiperheen ydin on tällä hetkellä valmis ja XML:ää tukevien sovellusten kriittinen massa on ylitetty 73275 RAKENTEISET DOKUMENTIT (kevät 2004) luentorunko ON 19
Esipuhe Nimiä ja termejä Jo tässä vaiheessa lienee syytä kertoa jotain niistä kirjainhirviöistä, joita kurssin kuluessa tullaan käyttämään (osaan palataan tarkemmin myöhemmin) WWW = World Wide Web W3C = WWW Consortium HTML =Hypertext Markup Language (ks. http://www.w3.org/markup/ ) SGML = Standard Generalized Markup Language XML = Extensible Markup Language (ks. http://www.w3.org/xml/ ) DTD = Document Type Definition CSS = Cascading Style Sheets (ks. http://www.w3.org/style/ ) XSL = Extensible Stylesheet Language (ks. http://www.w3.org/style/xsl/ ) XML-standardiperhe XML 1.0 + Namespaces (nimiavaruudet) + XSL + 73275 RAKENTEISET DOKUMENTIT (kevät 2004) luentorunko ON 20
2 Johdatus rakenteisiin dokumentteihin Rakenteinen dokumentti = rakenteellinen dokumentti dokumentti, jossa erotetaan toisistaan dokumentin 1) rakenne, 2) sisältö ja 3) ulkoasu (tai esitystapa) jotakin systemaattista ja yksikäsitteistä menetelmää käyttäen Perusidea: tekstinpätkän merkitys riippuu sen sijainnista dokumentissa (tai lähdetiedostossa) Erityyppisen tiedon erottaminen toisistaan perustuu merkkaus- ja syntaksikäytäntöihin ja sopimuksiin merkkauksen tulkinnoista - tiedostotasolla kaikki voidaan hyvin tehdä esimerkiksi ascii-merkkeinä! Kannattaa muistaa että rakenteisella dokumentilla ei aina ole ulkoasua: rakenteisia dokumentteja käytetään julkaisutoiminnan lisäksi esimerkiksi tiedon siirtämiseen ohjelmistojen välillä 73275 RAKENTEISET DOKUMENTIT (kevät 2004) luentorunko ON 21
Esimerkki Oheisessa kuvassa on eritelty dokumentin sisältö, koodaus, rakenne ja ulkoasu "MUIS- TIO" 1) RAKENTEEN VALINTA Kerron pomolle, että uusi tietokantamme on susi 0) ASIASISÄLLÖN MÄÄRITTÄMINEN 3) ULKOISEN ESITYSMUO- DON VALINTA 2) (ASIA)SISÄLLÖN KOODAUS PENA OY MEMO 1.1.2000 To: Pentti Pomo Fr: Timo Työmies Uusi tietokantamme on susi! TUL- KIN- TA Ilmeisestikin dokumenttien sisältö, rakenne ja ulkoasu voidaan eriyttää vain jos käytetyt välineet sen sallivat (abstraktit dokumentit tai tietokoneiden käyttö)! työvaiheiden (0-)1-2-3 erottaminen toisistaan on joskus hyvin vaikeaa! 73275 RAKENTEISET DOKUMENTIT (kevät 2004) luentorunko ON 22
Miksi dokumentin rakenne pitää erikseen merkitä? Jos vapaamuotoista informaatiota halutaan käsitellä automaattisesti tietokoneella, täytyy käsiteltävän datan rakenne ja merkitys erikseen kuvata, koska tietokone ei automaattisesti ymmärrä sen merkitystä - sama pätee tietenkin myös ihmisiin (joskin ihmiset osaavat tehdä luovia arvauksia) Jotta dataa osattaisiin käsitellä tietona, pitää datan merkitys esittää jollakin tavalla datan jakaminen erityyppisiin elementteihin, joiden sisältö ja keskinäinen suhde on hyvin määritelty ( rakenteistaminen) Rakenteistamisen perustehtävä on merkityksellisten tietoelementtien yksilöinti valitun sovellusalueen näkökulmasta Käytännössä dokumentit sisältävät kuitenkin yleensä myös muitakin loogisia osia kuin pelkkiä elementtejä (esim. XML-dokumentti sisältää myös deklaraatioita, kommentteja, merkkiviittauksia ja prosessointiohjeita) Rakenteistettu tieto sisältää siis myös metatietoa, jota voidaan käyttää hyväksi sekä dokumentteja kirjoittaessa (rakenteen oikeellisuuden varmistaminen) sekä luettaessa (elementtien tunnistaminen) 73275 RAKENTEISET DOKUMENTIT (kevät 2004) luentorunko ON 23
Tietokoneen ei voida sanoa ymmärtävän esimerkiksi XML-dokumentin sisällön merkitystä, sillä dokumenttien validoiminen & jäsentäminen tapahtuu niiden rakennepuiden muodossa (elementtien sisältö on vain jotain tekstiä) Dokumentin rakenteen yksikäsitteinen esittäminen mahdollistaa (jopa yksittäisten) dokumenttien käyttämisen tietokantojen tapaan Yksikäsitteiset rakennemääritykset helpottavat myös dokumenttien jäsentämistä Viime kädessä se, mitä rakenteistamisella ajetaan takaa, pitää kertoa luonnollisella kielellä käytetyn merkintäkielen ulkopuolella. Yleensä tämä kerrotaan dokumentoimalla merkkauksessa käytetty skeema eli tietorakenne - syntaksin määrittely (rakenne ~ syntaksi) - merkityksen määrittely (elementtisanaston kuvaus ~semantiikka) - käytön määrittely (sovellusalue ja käyttöesimerkit ~ pragmatiikka) 73275 RAKENTEISET DOKUMENTIT (kevät 2004) luentorunko ON 24
Miksi dokumentin ulkoasu halutaan erottaa sen rakenteesta? Kirjoittaja haluaa keskittyä olennaiseen (tai ainakin hänen pitäisi tehdä niin!) Ulkoasumääritykset eivät yleensä ole yksikäsitteisiä - pelkkään ulkoasulliseen koodaukseen pidättäytyminen joko hukkaa metatietoa tai asettaa kohtuuttoman suuria tarkkuusvaatimuksia ulkoasun suhteen (=epäkäytännöllistä) Aineiston automaattinen käsittely on huomattavasti helpompaa (tai yleensäkin mahdollista) kun tietorakenteet on kuvattu niiden merkityksen kautta Toisinaan myös yhdestä ja samasta lähdedokumentista halutaan tuottaa vähällä vaivalla erilaisia esitysversioita tai esiintymiä Ulkoasun erottaminen rakenteesta ei kuitenkaan aina ole helppoa tai edes tarkoituksenmukaista! 73275 RAKENTEISET DOKUMENTIT (kevät 2004) luentorunko ON 25
Yleiskäyttöiset rakennemäärittelyt Yleensä halutaan käsitellä useita tietyn rakenteen omaavia dokumentteja: tällöin päädytään samantyyppisten dokumenttien luokkaan Samantyyppisten dokumentin rakenteen määrittelemiseen käytetty menetelmä (esimerkiksi merkintäkieli) voidaan edelleen standardoida (esimerkiksi HTML), minkä seurauksena esimerkiksi dokumenttien hallinta, luettavuus, laitteistoriippumattomuus ja siirrettävyys paranevat (jos standardia noudatetaan!) Myös merkintäkielten määrittelyyn käytetty menetelmä voidaan standardoida, tällöin tuloksena on standardi kuvauskielten määrittämiseen (esimerkiksi SGML tai XML) Muiden kehittämien & laajemmin käyttöönotettujen standardien hyödyntämisen merkittävänä puolena voidaan pitää myös - saatavilla on valmiiksi mietittyjä rakennemäärittelyjä ja ohjelmia - eri valmistajien ohjelmistokomponenttien yhteiskäyttö helpottuu Uuden merkintäkielen kehittäminen on työlästä joten olemassa olevien ratkaisujen hyödyntäminen on erittäin suositeltavaa 73275 RAKENTEISET DOKUMENTIT (kevät 2004) luentorunko ON 26
Rakenteettomat dokumentit? Kannattaa huomata, että tietokoneiden näkökulmasta rakenteettomia dokumentteja ei ole olemassakaan - rakenteisuudessa on siis kyse lähinnä - kenen tai minkä näkökulmasta rakenteita merkataan & kuka merkkauksen ymmärtää - miten yksityiskohtaisesti ja miten rakenne esitetään Tietokoneen näkökulmasta rakenteisuus tarkoittaa käytännössä sitä, että tietoa lukeva järjestelmä osaa sijoittaa luetun tietoalkion oikeaan paikkaan omassa tietorakenteessaan (tai osaa sivuuttaa sen tarpeettomana) Huomaa: Kaikki kommunikointi edellyttää sovittuja tietorakenteita; perinteisten tietokoneohjelmien tapauksessa näiden rakenteiden on oltava yksikäsitteisiä Rakenteellisuus ei kuitenkaan ole vain staattisten dokumenttien ominaisuus; esimerkiksi yksinkertaiset sähköpostiviestit koodataan SMTP:n (Simple Mail Transfer Protocol) mukaisesti tarkkaa etikettiä (protokollaa) noudattaen (Jos SMTP muuten vain kiinnostaa, ks. http://www.imc.org/rfc821 ) 73275 RAKENTEISET DOKUMENTIT (kevät 2004) luentorunko ON 27
Esimerkki: SMTP-keskustelusta Seuraavassa lähetetään postia SMTP-palvelun avulla: S: MAIL FROM:<Smith@Alpha.ARPA> R: 250 OK S: RCPT TO:<Jones@Beta.ARPA> R: 250 OK S: RCPT TO:<Green@Beta.ARPA> R: 550 No such user here S: RCPT TO:<Brown@Beta.ARPA> R: 250 OK S: DATA R: 354 Start mail input; end with <CRLF>.<CRLF> S: Blah blah blah... S:...etc. etc. etc. S: <CRLF>.<CRLF> R: 250 OK Huomioita: jotta hommassa olisi järkeä, vastaanottajan on tiedettävä mitä lähettäjältä on tulossa, SMTP ei koodaa varsinaisen asiasisällön rakennetta lainkaan (pelkkää ascii-tekstiä) eikä perus-smtp-viestissä voi olla merkkijonoa "<CRLF>.<CRLF>"! 73275 RAKENTEISET DOKUMENTIT (kevät 2004) luentorunko ON 28
Yleiskäyttöiset tyyli/ulkoasumäärittelyt Samalla tavoin kuin dokumenttien rakenteen määrittämiseen käytetty menetelmä voidaan standardoida, voidaan pyrkiä standardoimaan myös dokumenttien ulkoasun (esitystavan) kuvausmenetelmät Soveltajalla vaihtoehtoina ovat: - olemassaolevan standardien formatointi, taitto, tyyli, tms. -kielen hyödyntäminen (TeX, RTF, HTML, CSS, PDF, DSSSL, postscript,...) - kokonaan oman ulkoasu/formatointimäärityksen kehittäminen Hyödyt ja haitat ilmeisiä: - annettujen tyyli/formatointikielten opiskelu ja niiden puutteiden kanssa eläminen, mutta valmiit selaimet, tulostinajurit,??-komponentit,... - kokonaan oman & kaikenkattavan ulkoasumäärityksen kehittäminen, mutta aivan kaiken suunnitteleminen & toteuttaminen itse Kannattaa kuitenkin muistaa, että kaikki työ ei tähtää julkaisutoimintaan - dokumentteja voidaan käyttää myös datakorttien ja tietokantojen tapaan 73275 RAKENTEISET DOKUMENTIT (kevät 2004) luentorunko ON 29
Dokumenttijärjestelmistä Oheisessa kuvassa ovat esillä tyypillisen dokumenttijärjestelmän eri osat tai komponentit (kaikkia ei välttämättä aina tarvita, osa taas otetaan käyttöön vasta tarvittaessa, mahdollisesti esimerkiksi verkon kautta): DOKUMENTTI- STANDARDI DOKUMENTTI- PROSESSORI & (KOHDE-) SOVELLUS DOKUMENTTI- TIETOKANTA TYYPPI- MÄÄRITYS- TIETOKANTA OBJEKTI- TIETOKANTA DOKUMENTTI- EDITORI OBJEKTI- EDITORI 10010100 10010010 01001011 01101010 10101000 10111111 JÄSENNIN & VALIDAATTORI ULKOINEN KÄYTTÖ & ILMIASUT TYYLI- TIETOKANTA Käytännössä tarvitaan siis 1) sopimuksia, 2) ohjelmistoja, 3) teknisiä alustoja, 4) oheisstandardeja sekä 5) sovelluksia ja käyttötapoja 73275 RAKENTEISET DOKUMENTIT (kevät 2004) luentorunko ON 30
Dokumenteista Mikä sitten on dokumentti? Dokumentti on aistittavaksi ja ymmärrettäväksi tarkoitettu tietokokonaisuus, joka koostuu yhdestä tai useammista fyysisistä osista (esim. tiedostoista) ja voidaan sen loogisen rakenteen pohjalta jäsentää merkityksellisiksi osiksi (Lähde)dokumentti ([source document], esimerkiksi XML-dokumentti) = dokumentti, josta tuotetaan (voidaan tuottaa) useita erilaisia, periaatteessa samasisältöisiä dokumentteja tai dokumenttien osia (Kohde)dokumentti, dokumentin esitysversio, ulkoinen esitysmuoto tai ilmentymä ([presentation instance], esimerkiksi WWW-sivu tai paperille tulostettu artikkeli) = lähdedokumentista (mahdollisesti) jäsentämällä tuotettu esityskelpoiseksi versioksi Lähde- ja kohdedokumentti ovat asiayhteydestä riippuvia suhteellisia käsitteitä! Huomaa, että tietokoneiden myötä dokumentti voi olla siis staattinen (~pysyvä) tai dynaaminen (~pyyntöhetkellä ohjeen mukaisesti kasattu) 73275 RAKENTEISET DOKUMENTIT (kevät 2004) luentorunko ON 31
Dokumentin looginen ja fyysinen rakenne Rakenteellisista dokumenteista erotetaan yleensä käsitteellisesti: Looginen rakenne datan ja metadatan jäsentäminen yksikäsitteisesti luettavaan muotoon merkkauksen ([markup]) avulla. Fyysinen rakenne dokumentin konkreettisesti muodostavat osat, ns. entiteetit (esimerkiksi tiedostot tms. objektit) Ulkoasun määrittely jätetään yleensä esitystapamäärityksen ja siten tavallaan prosessointijärjestelmän huoleksi (näin voi tietenkin tehdä VAIN jos esitystavan määritykseen käytettävä koodaus on riittävän vahvaa) Termien selvennyksiä: Kielioppimäärittely = kokoelma nimiä, symboleita ja sääntöjä, joka määrittelee ns. oikein muodostettujen dokumenttien laillisen rakenteen (vrt. kielen syntaksi tai kielioppi) Dokumentin tyyppimäärittely = valitun kieliopin puitteissa tehtävä määrittely, jolla tarkasteltavien dokumenttien looginen rakenne rajataan joksikin tietyksi (vrt. erisnimien ja lauserakenteiden valinta) 73275 RAKENTEISET DOKUMENTIT (kevät 2004) luentorunko ON 32
Esimerkkejä dokumenteista Tarkoituksesta riippuen, informaatio on mahdollista jäsentää tai tulkita dokumenteiksi usein eri tavoin, oheisessa kuvassa on esitelty erilaisia dokumentteja <!ENTITY AB "Abe Lincoln"> TULKIN- TA <?xml version="1.0"?> <!DOCTYPE poem [ <!ENTITY % names "http://1.2.3.4/names.ent"> %names; ]> <poem> There is no use of cursing darkness <author>&nn;</author> </poem> PROSES- SOINTI "There is no " ASCII-KOODATTUJA TEKSTI- DOKUMENTTEJA XML- DOKUMENTTI ARTIKKELI, WWW-SIVU, CD-ROM JA NAUHOITE Huomaa, että dokumentti voi siis olla myös kertakäyttöinen (esim. selainten avulla katseltavat & ajohetkellä generoitavat dynaamiset dokumentit) Jokaiseen dokumenttiin liittyy aina jokin koodaus, sisältö, rakenne ja ulkoasu! 73275 RAKENTEISET DOKUMENTIT (kevät 2004) luentorunko ON 33
Dokumenttien käsittelyyn liittyviä termejä Dokumentin tyyppi = se rakenne- ja koodausmääritys, jonka mukaan dokumentti on kirjoitettu Dokumentin jäsentäminen = dokumentin rakenteen tunnistaminen ja lukeminen auki rakennepuun (tms.) muodossa (jäsentäminen on käänteinen toimenpide dokumenttien generoimiselle tuottosääntöjen avulla) Dokumentin prosessointi = dokumentin rakennedatan käsittely suhteessa annettuun merkitykseen tai ilmiasuun, lopputuloksena yleensä dokumentin esittäminen tai muu tulkinta (toimenpide sisältää yleensä jäsentämisen) Dokumentin validoiminen = dokumentin rakenteen ja tyypin tarkistaminen annettua rakenne- ja tyyppimäärittelyä X vastaavaksi Dokumenttiluokka = Tietyn tyyppimäärittelyn X toteuttavien dokumenttien joukko Yksi ja sama tiedosto voi kuulua yhteen tai useampaan (sisäkkäiseen) dokumenttiluokkaan (mikäli käytetty koodauskäytäntö sen sallii) 73275 RAKENTEISET DOKUMENTIT (kevät 2004) luentorunko ON 34
Lisää dokumenttien käsittelyyn liittyviä termejä (Dokumentti)prosessori = (yleiskäyttöinen) sovellus, joka osaa jäsentää annetun kieliopin mukaisia dokumentteja sekä sovitun rajapinnan puitteissa välittää niitä auki luettuina dokumentteja varsinaisesti käsittelevälle sovellukselle Tyylimääritys = ohje kuinka kuvata dokumenttirakenteita (visuaalisesti) toisina dokumenttirakenteina Lopuksi on hyvä mainita vielä että: Dokumentti-käsitteen abstraktius riippuu asiayhteydestä ja tarkoituksesta (vrt. tekstidokumentti, XML-dokumentti, Word-dokumentti, paperiasiakirja, WWWhakukoneen tuottama sivu, kivikirjoitus, veistos, ääninauha) Kuten sanalla "dokumentti", myös sanalla "esiintymä" on useita eri merkityksiä - esiintymällä saatetaan eri asiayhteyksissä tarkoittaa esimerkiksi "kohdedokumenttia", "tietyntyyppistä dokumenttia" tai vaikkapa täsmällisenä teknisenä terminä XML-dokumentin esittelyosaa seuraavaa kokonaisuutta (=merkinnällinen osa tekstimuotoista XML-dokumenttia) 73275 RAKENTEISET DOKUMENTIT (kevät 2004) luentorunko ON 35
Muita yleisesti käytettyjä perustermejä Koodaus = tiedon tai informaation esittäminen valitun merkkijärjestelmän ja sovitun koodauskäytännön puitteissa Formaali kieli = Sopimus, joka luettelee kielen sanat kielelle valitussa merkistössä (lauseet ovat formaalin kielen sanoja, joille on sovittu jokin erikoismerkitys) Syntaksi = kielioppi, joka kertoo millaisia kielen oikein muodostetut sanat ja lauseet ovat (rakenteellisia dokumentteja määritellään yleensä generatiivisten kielioppien avulla; tällöin dokumentteja vastaavat ns. jäsennyspuut) Semantiikka = (kielen) merkitys tai tulkinta, joka kuvaa osan kielen sanoista ja lauseista metakielelle, jossa merkityksen arvioiminen tapahtuu Syntaksi ja semantiikka voivat olla joko täsmällisiä (formaaliset kielet, tietokonekielet, matemaattinen logiikka) tai epätäsmällisiä (luonnolliset kielet) Hierarkkinen rakenne = puu, jolla on yksikäsitteinen juuripiste (esim. XMLdokumenteilla tätä juurta kutsutaan ns. dokumenttientiteetiksi) 73275 RAKENTEISET DOKUMENTIT (kevät 2004) luentorunko ON 36
Tuttu esimerkki rakenteisesta dokumentista <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/tr/xhtml1/dtd/xhtml1-transitional.dtd"> <html> <head> <title>moi maailma!</title> <meta http-equiv="content-type" content="text/html; charset=iso-8859-1"/> </head> <body> <!-- Dokumentin runko alkaa --> <h1>otsikko</h1> <p>tekstiä ja <b>vahvennettua</b> tekstiä</p> </body> </html> Huomaa: koodauksen valinta (esim. 7-bittinen ascii-merkistö), kuvauskielen ilmoittaminen, elementtien merkitseminen tagien avulla, koodien nimien merkitys, entiteetit, kommentointi,... HTML-dokumentin esittäminen on "selaimen asia" (ellei toisin määrätä) 73275 RAKENTEISET DOKUMENTIT (kevät 2004) luentorunko ON 37
Dokumentin rakenteen esittämisen keinoja Kaksi esimerkkiä: Hierarkkiset elementtirakenteet = sisäkkäisiä elementtimäärityksiä, joiden parsiminen tuottaa elementtien puurakenteen (ns. [properly nesting elements]) Formatointirakenteet = "päällekkäisiä rakennemääritelmiä", jotka eivät (välttämättä) määritä selvärajaisia elementtejä Vrt. esim. <b>fat</b> <i>and</i> <i><b>lean</b></i> <b>fat</b> <i>and <b>lean</i></b> (Jälkimmäinen rivi ei ole HTML-määrityksen mukainen!) Tietorakenteiden näkökulmasta formatointirakenteet vastaavat usein virtoja Rakenteisissa dokumenteissa käytetään hierarkkisia elementtirakenteita, jotta elementtirakenteen olisivat selvärajaisia (modulaarisia ja siten esim. kieliopin näkökulmasta yhteydettömiä); näin dokumenttien rakenne-, tyyppimäärittely sekä jäsentäminen ovat suoraviivaisia operaatioita 73275 RAKENTEISET DOKUMENTIT (kevät 2004) luentorunko ON 38
Rakenteiden merkitsemistapoja & termejä Proseduaalinen tai spesifi merkkaus tarkat ohjeet elementtien käsittelemiseksi dokumentin osana tyyliin "tämä elementti tekee sitä tai tätä tai näyttää siltä tai tältä" (tyypillinen juuri formatoinnissa) Vrt. HTML-esim. <i><font face="arial" size="12"> Think twice before walking on ice</font></i> Deklaratiivinen tai kuvaileva merkkaus abstrakti kuvaus elementin roolista tai merkityksestä dokumentissa tyyliin "tämä elementti on X" (tätä ideaa käyttävät juuri SGML, XML sekä HTML) Vrt. HTML-esim. <blockquote>think twice before walking on ice</blockquote> Yleiskäyttöinen merkkaus vs. sovelluskohtainen merkkaus tukevatko useat sovellukset tai onko jopa standardoitu? 73275 RAKENTEISET DOKUMENTIT (kevät 2004) luentorunko ON 39
Kontekstivapaa merkkaus naapurielementit eivät vaikuta Vrt. HTML-esim. <b>fat</b> <i>and</i> <i><b>lean</b></i> 2 Johdatus rakenteisiin dokumentteihin Kontekstuaalinen merkkaus elementeillä on jokin tietty rakenteesta riippuva konteksti Vrt. HTML-esim. <ul> <li>yksi</li> <li>kaksi</li> <li>kolme</li> </ul> SGML ja XML merkkaustavat ovat deklaratiivisia, kontekstuaalisia ja yleiskäyttöisiä HTML - erityisesti vanhemmat versiot - on tavallaan yhdistelmä kaikkia ym. merkitsemistapoja (sisältäen joskus virheellisiäkin formatointirakenteita, sillä vaikka HTML-dokumentin määritelmän mukaan pitää olla oikein muodostettu, dokumentteja ei yleensä validoida, joten virheistä ei jää kiinni) 73275 RAKENTEISET DOKUMENTIT (kevät 2004) luentorunko ON 40
Huomautuksia tiedä mitä olet tekemässä! Rakenteisten dokumenttien soveltaminen (esimerkiksi oman merkkauskielen kehittäminen XML:llä) edellyttää - aitoa tarvetta asiasisällön rakenteistamiselle (=motivaatio) - tietoa siitä, mitä välineitä & standardeja halutaan käyttää tai saada käyttöön (esim. kirjanpaino- tai WWW-tekniikan perusteet, tyylien käyttö ja työssä tarvittavat ohjelmat) - yleisessä tapauksessa tarvitaan konkreettista ohjelmointitaitoa; esim. XML-dokumentilla sinänsä ei vielä tee paljoa -- homman hyöty realisoituu vasta sovelluksissa Erilaisten tyylikielten käyttö on vähintään yhtä vaikeita asioita kuin XMLstandardiperheen teknisten asioiden kanssa painiskelukin! Jos haluaa ruveta harrastamaan polkupyöräilyä, muttei ryhtyä polkupyörämekaanikoksi, kannattaa mieluimmin ostaa valmis pyörä ja säätää sen satula ja tanko oikealle korkeudelle (eikä ryhtyä etsimään malmia oman polkupyörän rungon valamista varten) -- vrt. XML 1.0 ja XSL:n sekä HTML/DocBooksovellusten välinen suhde 73275 RAKENTEISET DOKUMENTIT (kevät 2004) luentorunko ON 41