Tietomuodoista Merkkauksista Merkkauskielistä XML-tietomalli Tietomuodoista Tiedon tuottamiseen, muokkaukseen ja hyväksikäyttöön voi osallistua useita ohjelmia eri alustoilla eri ohjelmointikielillä toteutettuja Yhteistoiminnan mahdollistamiseksi tarvitaan jaettu tiedonvälitysmuoto binäärinen, esim. kuvamuodot tekstuaalinen esimerkiksi SV (comma separated values) yksinkertaiselle taulukkomuotoiselle datalle monipuolisempia rakenteita mutkikkaammilla tekniikoilla 1 2 Kiinteämuotoisissa rakenteissa tiedon osilla on kiinteä sijaintipaikka tietorakenteessa. (marking) Vaihtuvamuotoisissa rakenteissa osia voi puuttua osat voivat olla hyvin erikokoisia osien järjestystä tai sisältymistä ei voida välttämättä ennakoida osa on jotenkin osoitettava osien merkkaaminen mahdollistaa pääsyn tietoon merkkauksella tieto eristetään ympäristöstään mikä tieto on kyseessä, mistä tiedon esitys alkaa, mihin asti, missä muodossa tieto esitetään muoto voi olla sidottu tiedon tyyppiin, mutta voi olla myös tapauskohtainen 3 4 edellyttää ainakin yhden merkkialkion käyttöä. Merkkialkio voi olla joko alkumerkintä tai loppumerkintä. Molempiakin voi käyttää. Pelkkä alkumerkintä riittää erottelemaan samankaltaisia tietokohteita, esimerkiksi \section teoksen lukuja toisistaan. Jos kohteita on eri tyyppisiä voidaan tarvita eksplisiittinen rajaus valitsemaan merkkauksen kohde, esimerkiksi merkkaus \bold{lihavoitua tekstiä}, tekee rajauksen kaarisuluilla ja määrittää tyypin avainsanalla \bold merkkialkioiden on erotuttava muusta tekstistä yllä olevissa esimerkeissä \-merkillä alkavat sanat tulkitaan merkkialkioiksi HTML-kielessä (kuten myös XML-kielissä) käytetään alkumerkintöjä (begin tag) ja loppumerkintöjä (end tag). Kummatkin alkavat merkillä < (pienempi kuin, less than) ja päättyvät merkkiin > (suurempi kuin, greater than). Näiden välissä on alkumerkinnässä elementin tyyppinimi 1 ja loppumerkinnässä sama tyyppinimi / -merkin jälkeen, esim. <title>otsake</title> Huom: atk-sanakirjassa tag-sanan suomennos on L tägi L 1) lisäksi attribuuttilausekkeita 5 6 1
HTML ja XML-kielet muistuttavat merkkaustavan puolesta toisiaan HTML:ssä merkkauksissa käytettävät elementtien tyyppinimet on kiinnitetty HTML:llä laadittu dokumentti on tarkoitettu esitettäväksi selaimessa, joten eri elementtityypeille on oletusarvoiset esitystavat XML-kielten elementtinimet ovat kielen määrittelijän vapaasti valittavissa XML-elementtien oletusarvoinen esitystapa selaimissa on varsin yksinkertainen, vain hierarkia näkyy HTML perustuu SGML- standardiin (Standard Generalized Markup Language) SGML on metakieli - perusrakenne ja tapa määritellä kieli yleiskäyttöinen vähän rajoituksia varsin monimutkainen, vähän ja kalliita työkaluja SGML standardin 1. versio vuodelta 1986 kieliä suurten dokumenttien esittämiseen, julkaisutoimintaan 7 8 XML-rakenne XML on yksinkertaistettu osajoukko SGML:stä rakenteita rajoitettu nsimmäinen standardiversio vuodelta 1998, viimeisimmät versiot 2006 ( sekä 1.0 että 1.1 - edelliselle laaja tuki, jälkimmäisessä erilainen suhtautuminen merkistöihin, parempi laajennettavuus) XHTML on HTML:ää vastaava XML-standardiin perustuva dokumenttien esityskieli (erot harjoitustehtävänä) XML-kieliä moniin tarkoituksiin: XHTML, SVG (grafiikka), ML (hemical..), WML (WP-sivut), ebxml (electronic business), WSL (web services), XML on tarkoitettu hierarkkisesti jäsennetyn tiedon tekstimuotoisen esitystavan määrittelyyn Lähtökohtana on hierarkkisesti jäsennetty tieto Hierarkia muodostuu toisiinsa sisältyvistä elementeistä Seuraavilla sivuilla on esimerkki xmlreseptikielestä 9 10 XML-rakenne, esimerkki osa 1(M&S) XML-rakenne, esimerkki osa 2(M&S) <collection> <description>recipes suggested by Jane ow</description> <recipe id="117"> <comment> <title>rhubarb obbler</title> Rhubarb obbler made with bananas as the main sweetener. <date>wed, 14 Jun 95</date> It was delicious. <ingredient name="diced rhubarb" amount="2.5" unit="cup"/> </comment> <ingredient name="sugar" amount="2" unit="tablespoon"/> <nutrition calories="170" fat="28%" <ingredient name="fairly ripe banana" amount="2"/> <ingredient name="cinnamon" amount="0.25" unit="teaspoon"/> carbohydrates="58%" protein="14%"/> <ingredient name="nutmeg" amount="1" unit="dash"/> <related ref="42">garden Quiche is also yummy</related> <preparation> </recipe> <!-- should bananas be diced, too. It looks funny with the whole ones--> <step> </collection> ombine all and use as cobbler, pie, or crisp. </step> </preparation> 11 12 2
XML-rakenne, esimerkki simerkin kielessä on päädytty esittämään raaka-ainetiedot attribuuttien avulla. Toinen suunnittelija olisi voinut päätyä erilaiseen ratkaisuun, esimerkiksi <ingredient name="diced rhubarb" amount="2.5" unit="cup"/> olisikin esitetty hierarkiana <ingredient> <name preparation= diced >rhubarb</name> <amount unit= cup >2.5</amount> </ingredient> ja kolmas johonkin muuhun tapaan Hierarkian lähtökohtana on tiedon jäsentäminen hierarkkisena rakenteena, joka voidaan esittää puuna solmu (node) juuri (root) lehti (leaf) särmä (edge) 13 14 :n, :n ja :n isä (parent of,, ad ) :n lapsisolmut (hildren of ) :n sisältö (ontents of ) :n ja : n esi-isät (ancestors of and ) :n jälkeläiset (descendants of ) :n velisolmu (sibling of ) 15 16 description collection step recipe id:117 title date ingredient ingredient preparation comment nutrition related Rhubarb obbler Wed. 14 Jun 95 name: diced rhubarb amount:2.5 unit:cup <!-- Should bananas ombine Rhubarb hobbe calories:170 Garden related:42 17 ri tyyppisiä solmuja: Tekstisolmu (text nodes): kuvassa suunnikas dokumentin tekstitietoa aina lehtisolmu tekstisolmut eivät voi olla puussa vierekkäisinä veljessolmuina - välissä pitää olla jokin muu solmu lementtisolmu (element node) kuvassa nurkista pyöristetty suorakaide dokumentin rakenneosaa kuvaava solmu jälkeläissolmujen kooste elementtisolmulla aina nimi (name) -kuvaa solmun merkitystä 18 3
ttribuuttisolmu (attribute node) kuvassa suorakaide liittyy elementtisolmuun, eli isäsolmuna on elementtisolmu esittää täsmentävää tietoa elementistä nimi - arvo - parina sama nimi ei voi toistua useassa elementtiin liittyvässä attribuuttisolmussa attribuuttisolmut ovat tavallaan eri ulottuvuudessa kuin muut solmut, esimerkiksi XPath-tietomallissa attribuuttisolmuja ei pidetä elementtien lapsina vaikka elementtejä pidetäänkin attribuuttisolmujen isinä Kommenttisolmu (comment node) kuvassa kuusikulmio sisältönä kommenttiteksti kuten ohjelmointikielen kommentti, huom.: esimerkin solmu comment ei ole kommenttisolmu, vaan elementti nimeltä comment kommentti esitetään tekstimuodossa kuten html:ssä eli <!-- kommentti --> 19 20 Ohjesolmu (processing instruction node) ei kuvassa sisältönä kohde ja siihen liittyvä arvo käytetään metatiedon välittämiseen työkaluille jos työkalu tunnistaa kohdenimen se osaa tulkita arvon merkityksen kohteena voisi olla esim. "xml-stylesheet" jolloin XSLT-käsittelijä tunnistaisi kohteen ja tulkitsisi arvona annetun URL:n osoittavan käytettävään XSLTtyylitiedostoon Juurisolmu (root node) kuvassa pieni ympyrä Jokaisella xml-puulla on juurisolmu, joka kuvaa koko dokumenttia juurisolmun lapsina on kommenttisolmuja, ohjesolmuja sekä yksi elementtisolmu, jota kutsutaan dokumentin juurielementiksi (root element) juurielementti on siis eri asia kuin juurisolmu (katso esimerkki selaimessa, example1.xml) 21 22 XML-rakennemallissa solmujen järjestys on merkityksellinen ja sillä voidaan välittää informaatiota esimerkiksi resepti-rakenteessa <preparation>elementtien <step>-alielementtien järjestys kuvaa valmistusvaiheiden järjestystä attribuuttisolmujen järjestyksellä ei kuitenkaan ole merkitystä 23 xml-rakenteinen dokumentti esitetään Unicodekoodattuna tekstinä lementin aloittaa alkumerkintä: alussa "<"-merkki, seuraavana elementin (tyyppi)nimi seuraavana elementtiin liittyviä attribuutteja vastaavat nimi-arvo parit muodossa nimi="arvo" tai muodossa nimi='arvo' tyhjätilamerkein (white space) eroteltuina lopuksi ">"-merkki Tyhjä elementti voidaan merkitä lopettamalla alkumerkintä merkkiparilla "/>". Vaihtoehtona on käyttää loppumerkintää <tyhjä></tyhjä> 24 4
lementin sisältöön kuuluvien solmujen tekstiesitykset sijoitetaan elementin alku- ja loppumerkintöjen väliin puun solmujen järjestyksen mukaisesti. Teksti-, kommentti- ja ohjesolmujen sisältö viedään tekstiesitykseen sellaisenaan. lementin lopettaa loppumerkki alkaa "</"-merkkityhdistelmällä seuraavana elementin (tyyppi)nimi lopuksi ">"-merkki lku- ja loppumerkinnöissä olevien elementtinimien pitää olla samat kirjoitusasua myöten (case sensitive) Tekstin esitystapana on Unicode-merkistö. Oletusarvoisesti käytetään UT-8 koodaustapaa. Myös muita koodaustapoja voi käyttää. Suomenkielisessä tekstissä iso-8859-15 lienee käyttökelpoinen. Merkkejä "<" ja "&" saa käyttää vain niille varattuihin erityistarkoituksiin. Muulloin ne on korvattava < ja & viittauksilla. Muutamia muitakin viittauksia on määritelty, tosin paljon vähemmän kuin HTML:ssä (> ' ") Yleinen viittaus Unicode-merkkiin on muotoa &#N; tai &#xh;, missä N on Unicode merkin desimaaliarvo ja H vastaava heksakoodi. 25 26 Merkkikoodaus määritellään yleensä dokumentin alussa ohjeella, esim. <?xml version= 1.0 encoding= iso-8859-1?> Kommentin esitystapa <! kommentti --> Ohjeen esitystapa <?kohde arvo?> Koko kohdenimen jälkeinen osa tulkitaan arvoksi olipa se minkä muotoinen tahansa Koska tekstiesityksen pitää vastata puurakennetta täytyy elementtien tekstiesitysten olla aidosti sisäkkäisiä <small_example> <first>this is</first> <second>so right</second> </small_example> <small_example> <first>this is<second> </first>so wrong</second> </small_example> lementit eivät ole aidosti sisäkkäisiä 27 28 5