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 CSV (comma separated values) yksinkertaiselle taulukkomuotoiselle datalle monipuolisempia rakenteita mutkikkaammilla tekniikoilla 1 2 Kiinteämuotoisissa rakenteissa tiedon osilla on kiinteä sijaintipaikka tietorakenteessa. Merkkaus (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 Merkkaus 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 Merkkaus 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 Merkkaus 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 Ensimmä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), CML (Chemical..), WML (WAP-sivut), ebxml (electronic business), WSDL (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 Dow</description> <recipe id="117"> <comment> <title>rhubarb Cobbler</title> Rhubarb Cobbler 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> Combine all and use as cobbler, pie, or crisp. </step> </preparation> 11 12 2
XML-rakenne, esimerkki Esimerkin 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) E B F A C D juuri (root) lehti (leaf) särmä (edge) 13 14 B:n, C:n ja D:n isä (parent of B,C, ad D) B A C D A:n lapsisolmut (Children of A) A:n sisältö (Contents of A) B A C D E:n ja F: n esi-isät (ancestors of E and F) A:n jälkeläiset (descendants of A) E F C:n velisolmu (sibling of C) E F 15 16 description collection step recipe id:117 title date ingredient ingredient preparation comment nutrition related Rhubarb Cobbler Wed. 14 Jun 95 name: diced rhubarb amount:2.5 unit:cup <!-- Should bananas Combine Rhubarb Chobbe calories:170 Garden related:42 17 Eri 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 Elementtisolmu (element node) kuvassa nurkista pyöristetty suorakaide dokumentin rakenneosaa kuvaava solmu jälkeläissolmujen kooste elementtisolmulla aina nimi (name) -kuvaa solmun merkitystä 18 3
Attribuuttisolmu (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ä Elementin 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
Elementin 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. Elementin lopettaa loppumerkki alkaa "</"-merkkityhdistelmällä seuraavana elementin (tyyppi)nimi lopuksi ">"-merkki Alku- ja loppumerkinnöissä olevien elementtinimien pitää olla samat kirjoitusasua myöten (case sensitive) Tekstin esitystapana on Unicode-merkistö. Oletusarvoisesti käytetään UTF-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 Tulkitsematta jätettävä CDATA-lohko (CDATA section) mahdollistaa myös erikoismerkkien '<' ja '&' käyttämisen ilman viittaustekniikka. CDATA-lohkon alkumerkki CDATA-lohkon loppumerkki Lauseke <![CDATA[a<b & b>c]]> vastaa tekstiä a<b & b>c 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 27 28 Nimetyt kohteet ja viittaukset XML:ssä 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> Elementit eivät ole aidosti sisäkkäisiä 29 XML-tekstiin voidaan sisällyttää viittauksia nimettyihin kohteisiin (entity references) Dokumentti itsessään on nimetty kohde Nimetty kohde (entity) voi olla dokumentin sisäinen (internal) tai ulkoinen (ulkoinen). Ulkoiset kohteet ovat tyypillisesti erillisiä tiedostoja tai muita resursseja Aiemmin esillä olleet erikoismerkit &,<,, ja > ovat valmiiksi nimettyjä kohteita, joiden nimet ovat amp, lt, apos, quot ja gt Viittaukset näihin kohteisiin ovat: &, < jne 30 5
Nimetyt kohteet ja viittaukset XML:ssä Nimetyt kohteet ja viittaukset XML:ssä Nimetyt tekstikohteet ovat merkkijonoja, joilla (ainakin loogisesti) korvataan niihin osoittava viittaus. Merkkijonoon voi sisältyä merkkauksia ja viittauksia. Viittauksen rakenne: &nimi; Olkoon merkkijono University of Helsinki nimetty kohteksi univ (<!ENTITY univ "University of Helsinki">) Jos tekstissä on viittaus &univ se korvataan tekstillä University of Helsinki joka paikassa missä viittaus esiintyy 31 Viittauksia nimettyihin kohteisiin voi käyttää myös attribuuttien arvoissa rajoituksia, esim. ei merkkauksia Ulkoiseen tekstimuotoiseen kohteeseen kohdistuva viittaus aiheuttaa kohteen tekstin ottamisen osaksi XML-dokumenttia mahdollistaa dokumentin jakamisen osiin Ulkoinen nimetty kohde voi olla myös binäärinen. Näihin viitataan kohdearvoisilla attribuuteilla, eikä tällöin käytetä tekstiviittausten kaltaista korvausta. 32 Dokumentin osia <?xml version="1.1" encoding="iso-8859-1"?> rakennemäärittely <!DOCTYPE features SYSTEM "example.dtd"> <features a="b"> <?mytool here is some information specific to mytool?> El señor está bien, garçon! Copyright 2005 <![CDATA[ <this is not a tag> ]]> <!-- always remember to specify the right character encoding --> </features> käsittelyohje merkkiviittaus CDATA-lohko kommentti 33 6