Helsingin yliopisto Tietojenkäsittelytieteen laitos XML-metakieli (2011) Harri Laine 1. Jäsennys ja sarjallistaminen

Samankaltaiset tiedostot
XML kielioppi. Elementtien ja attribuuttien määrittely. Ctl230: Luentokalvot Miro Lehtonen

XML johdatus: DTD. Jaana Holvikivi

XML-merkkaus. Merkkidata, prosessointikomennot, kommentit

6 DTD ja dokumentin tyyppimääritys

Sisältö. XML, XHTML ja CSS XML XML. XML:n ja HTML:n ero. XML kieliä XML XHTML CSS XSL. T Hypermediadokumentin laatiminen 2002

6 DTD ja dokumentin tyyppimääritys

XML / DTD / FOP -opas Internal

XML prosessori. XML prosessointi. XML:n kirjoittaminen. Validoiva jäsennin. Tapahtumaohjattu käsittely. Tapahtumaohjattu käsittely.

Helsingin yliopisto / TKTL XML-Metakieli XML Schema

6 DTD ja dokumentin tyyppimääritys

Digitaalisen median tekniikat xhtml

Digitaalisen median tekniikat xhtml Harri Laine 1

Vaasan yliopiston toimintaa tukevat informaatiopalvelut ovat käytettävissä WWW:n kautta.

815338A Ohjelmointikielten periaatteet Harjoitus 2 vastaukset

Elementtien tyyppideklaraatiot

XML-saatavuuskysely. XML-tiedoston kuvaus. versio

8. Kieliopit ja kielet

Helsingin yliopisto Tietojenkäsittelytieteen laitos XML-metakieli

10 XML ja dokumenttien tyyppimäärittely

2. PEHMEÄ XHTML XRAJAHTML

3 Verkkosaavutettavuuden tekniset perusteet

Luento 2: XML:n syntaksi

Helsingin yliopisto Tietojenkäsittelytieteen laitos XML-metakieli

FORMAALI SYSTEEMI (in Nutshell): aakkosto: alkeismerkkien joukko kieliopin määräämä syntaksi: sallittujen merkkijonojen rakenne, formaali kuvaus

XML, XHTML ja CSS. T Hypermediadokumentin laatiminen. Mikko Pohja

TIEA241 Automaatit ja kieliopit, kevät 2011 (IV) Antti-Juhani Kaijanaho. 19. tammikuuta 2012

XML rakenteen suunnittelu. Jaana Holvikivi

P e d a c o d e ohjelmointikoulutus verkossa

Tutkitaan sitten HTML-dokumenttien anatomiaa, jotta päästään käsiksi rakenteisten dokumenttien käsitteistöön esimerkkien kautta.

Tietueet. Tietueiden määrittely

Digitaalisen median tekniikat xhtml

H T M L eli kuinka laadin itselleni päheät kotisivut. Janne Käki

Poikkeusinfo XML-rajapinnan kuvaus, rajapinnan versio 2 Seasam Group

Jokaisella tiedostolla on otsake (header), joka sisältää tiedostoon liittyvää hallintatietoa

CSE-A1200 Tietokannat

Digitaalisen median tekniikat xhtml - jatkuu Harri Laine 1

05/09/2007. Digitaalisen median tekniikat, s2007 HY/TKTL, XHTML osa 1. Harri Laine 1. XHTML-merkkauskieli. Digitaalisen median tekniikat xhtml

05/09/2007. Digitaalisen median tekniikat, s2007 HY/TKTL, XHTML osa 1. Harri Laine 1. XHTML-merkkauskieli. Digitaalisen median tekniikat xhtml

Digitaalisen median tekniikat xhtml - jatkuu

Säännöllisten kielten sulkeumaominaisuudet

TIEA241 Automaatit ja kieliopit, syksy Antti-Juhani Kaijanaho. 16. marraskuuta 2015

XML Technologies and Applications - harjoitustyö -

ELM GROUP 04. Teemu Laakso Henrik Talarmo

H T M L eli kuinka laadin itselleni päheät kotisivut. Janne Käki

Datatähti 2019 alku. task type time limit memory limit. A Kolikot standard 1.00 s 512 MB. B Leimasin standard 1.00 s 512 MB

Luento 1: Johdanto merkintäkieliin

Tehtävä 2: Säännölliset lausekkeet

Taulukot. 1. Taulukon rakenne: ICT01D Elina Ulpovaara

uv n, v 1, ja uv i w A kaikilla

Digitaalisen median tekniikat. JSP ja XML Harri Laine 1

Helsingin yliopisto/tktl XML-metakieli CSS XML-dokumenttien käsittely. XML-dokumenttien käsittely

8. Kieliopit ja kielet 1 / 22

11.4. Context-free kielet 1 / 17

Helsingin yliopisto/tktl XML-metakieli k2013 CSS XML-dokumenttien käsittely. XML-dokumenttien käsittely

M. Merikanto 2012 XML. Merkkauskieli, osa 2

SISÄLLYS. Johdanto JOHDATUS XML:n PARIIN 1.1 Extensible Markup Languge XML:n edut Mitä XML:llä tehdään? 3

Automaatit. Muodolliset kielet

è è è RDF-perusteet 7 RDF-perusteet

TIEA241 Automaatit ja kieliopit, syksy Antti-Juhani Kaijanaho. 30. marraskuuta 2015

Helsingin yliopisto/tktl DO Tietokantojen perusteet, s 2000 Relaatiomallin peruskäsitteet Harri Laine 1. Relaatiotietokannat DONOTP

Rekursiolause. Laskennan teorian opintopiiri. Sebastian Björkqvist. 23. helmikuuta Tiivistelmä

5 Merkkaus: XML protokollana

Digitaalisen median tekniikat xhtml - jatkuu

eperusteet julkiset rajapinnat

Tietokantojen perusteet k2004helsingin yliopisto/tktl Tietokantojen perusteet, s 2005 relaatiomalli Harri Laine 1.

Ctl160 Tekstikorpusten tietojenkäsittely p.1/15

Digitaalisen median tekniikat css tyylimääritykset

T Syksy 2004 Logiikka tietotekniikassa: perusteet Laskuharjoitus 7 (opetusmoniste, kappaleet )

XML standardeja. nimiavaruudet, namespaces XHTML XML Schema linkitys Jaana Holvikivi 1

TIEA241 Automaatit ja kieliopit, syksy Antti-Juhani Kaijanaho. 3. lokakuuta 2016

5 Merkkaus: XML protokollana

Hohde Consulting 2004

XML merkintäkielten perusteet. Luento 3 Pekka Aarnio

PERUSLASKUJA. Kirjoita muuten sama, mutta ota välilyönti 4:n jälkeen 3/4 +5^2

WWW-ohjelmoinnin kokonaisuus. WWW-OHJELMOINTI 1 Merkkauskielet. Merkkauskielten idea. Merkkauskielet (markup languages) Merkkauskielten merkitys

Säännölliset kielet. Sisällys. Säännölliset kielet. Säännölliset operaattorit. Säännölliset kielet

Digitaalisen median tekniikat. JSP ja XML

HTML & CSS. HTML (HyperText Markup Language) Antti Koivisto. ! HTML on sivujen kuvauskieli.

Hahmon etsiminen syotteesta (johdatteleva esimerkki)

Extensible Stylesheet Language (XSL)

valitsin on useimmiten html-elementti, jolle tyyli halutaan luoda

Johdatus XML teknologioihin

XML merkintäkielten perusteet. Luento 3 Pekka Aarnio

Muodolliset kieliopit

JHS 183 Julkisen hallinnon palvelujen tietomalli ja ryhmittely verkkopalveluissa Liite 3 XML-skeeman kuvaus ja esimerkit

TIEA341 Funktio-ohjelmointi 1, kevät 2008

Rajoittamattomat kieliopit (Unrestricted Grammars)

XHTML - harjoitus. Tehtävä1: Tee xhtml tiedosto käyttäen notepad (muistio) ohjelmaa. Tiedoston tallennus notepad (muistio) ohjelmassa:

(0 1) 010(0 1) Koska kieli on yksinkertainen, muodostetaan sen tunnistava epädeterministinen q 0 q 1 q 2 q3

ULOSOTON HAKIJOIDEN LÄHETTÄMÄT SÄHKÖISET HAKEMUS- JA MUUTOSTIEDOT XML-TIEDOSTOMUODOSSA

Luento 3: Tietorakenteiden esittäminen

6 XML-työkalut 1. 6 XML-työkalut

9 XML perusteet

TIEA241 Automaatit ja kieliopit, kevät 2011 (IV) Antti-Juhani Kaijanaho. 31. maaliskuuta 2011

SÄHKE-hanke. Abstrakti mallintaminen Tietomallin (graafi) lukuohje

15. Ohjelmoinnin tekniikkaa 15.1

Massahaun tulosten tulkintaa

Yleistä. Dokumentin mallintaminen. Dokumentin analysointi. Desktop publishing vs. XML. Tietokantakaavion analysointi. Dokumentin osien analysointi

TIEA241 Automaatit ja kieliopit, syksy Antti-Juhani Kaijanaho. 19. syyskuuta 2016

Luonnolliset vs. muodolliset kielet

Transkriptio:

Jäsennys ja sarjallistaminen Tietorakenteen määrittely Hyvinmuodostettu / validi rakenne Rakenteen määrittely DTD XML-jäsentäjä (parser) on työkalu, joka pystyy muodostamaan puurakenteen tekstuaalisesta XMLesityksestä jäsentäjä tarkistaa XML-rakenteen perussäännöt, eli että dokumentti on hyvinmuodostunut (well-formed) (oikeamuotoinen): yksi juurielementti jokaisella ei tyhjällä elementillä alku- ja lopputunniste elementtien aito sisäkkäisyys attribuuttilausekkeiden muoto oikein nimet noudattavat xml-spesifikaatiota nämä yleistarkistukset voidaan tehdä XML:n yleisvaatimusten perusteella, ilman xml-kielen tarkempaa määritystä 1 2 Jäsennys ja sarjallistaminen Jäsennys ja sarjallistaminen Onko seuraava dokumentti hyvinmuodostunut? Jos ei niin miksi ei? <?xml version= 1.0"?> <p> Tästä alkaa ensimmäinen kappale... </p> <p>...ja tässä ollaan jo toisessa kappaleessa.<br> <font color=red>html</font>-selaimilla ei ole vaikeuksia näyttää tätä dokumenttia. <b>vai onko sittenkin?</b> </p> Validoiva jäsentäjä tarkistaa, että dokumentti on lisäksi annetun rakennemäärittelyn mukainen käyttää sallittuja elementtinimiä elementtien järjestys, sisäkkäisyys ja toistuvuus ovat määritysten mukaisia on käytetty sallittuja attribuutteja Edellyttää rakennemäärittelyä Sarjallistaja (serializer) on työkalu, joka tuottaa puuesityksestä tekstiesityksen 3 4 Rakennemäärittely Rakennemäärittely Rakennemäärittely (schema) on tietyn XMLkielen formaali määrittely Rakennemäärittely voidaan esittää rakennemäärittelykielellä (schema language) formaali kieli kielen rakenteen määrittelyyn toteutus: rakenteen analysoija, joka tarkistaa, että dokumentti on rakennemäärittelyn mukainen (valid) tarjolla useita rakennemäärittelykieliä (esim. DTD, XML Schema) dokumentti validi normalisoitu dokumentti rakenteen analysoija virheellinen rakennemäärittely virheilmoitukset 5 mahdollisesti muokattu, esim. lisätty oletusarvoja 6 Harri Laine 1

Rakennemäärittely Rakennemäärittelyjen tekniikkaa Formaalin rakennemäärittelyn hyötyjä Täsmällinen ja kattava määrittely helpottaa dokumenttien laatimista Rakennemäärittely voi ohjata dokumentin tuottamista Rakenteen mukaisuus tarkistettavissa yleiskäyttöisillä työkaluilla Rakennemäärittely vastaa ohjelmointikielen kielioppia relaatiotietokannan kaaviota Ohjelmointikielten kieliopit kuvataan yleensä BNF-muodossa SGML- ja XML-yhteyksissä käytetään omia määrittelytekniikoita. Näissä keskeisessä roolissa on säännöllisten lausekkeiden (regular expression) käyttö 7 8 Olkoon aakkosto, joka koostuu joukosta alkioita - tyypillisesti Unicode-merkkejä ja/tai elementtinimiä Aakkostoon perustuvat säännölliset lausekkeet noudattavat seuraavia sääntöjä jokainen :n alkio on säännöllinen lauseke jos ja ovat säännöllisiä lausekkeita niin?, *, +,, ja ( ) ovat myös säännöllisiä lausekkeita Säännöllinen lauseke joko hyväksyy tai hylkää aakkoston alkiojonon aakkoston alkio a hyväksyy vain itsensä eli alkion a? hyväksyy :n hyväksymän tai tyhjän jonon * hyväksyy 0 tai useampia :n hyväksymiä jonoja + hyväksyy yhden tai useampia :n hyväksymiä hyväksyy :n hyväksymän, jota seuraa :n hyväksymä (katenaatio) hyväksyy joko :n tai :n hyväksymän (valinta) ( )hyväksyy saman kuin 9 10 Operaattoreiden prioriteetti: *,?, + katenaatio valinta Sulkuja voi käyttää säätelemään operaattorien vaikutusta Esim. ab* c = (a(b*)) c Esimerkkejä: Lauseke (a(b*)) c hyväksyy joko yksittäisen merkin c tai kaikki merkkijonot, joiden alussa on a ja sitä seuraa 0 tai useampia b- merkkejä Lauseke 0 -?(1 2 3 4 5 6 7 8 9)(0 1 2 3 4 5 6 7 8 9)* Hyväksyy kelvolliset kokonaisluvut esim. 0, -200, mutta ei 007 tai -0 Olkoon aakkosto HTML:n elementtinimiä. Elementin table hyväksyttävä rakenne voidaan tällöin määritellä lausekkeella caption? ( col* colgroup* ) thead? tfoot? ( tbody+ tr+ ) 11 12 Harri Laine 2

on XMLstandardissa määritelty sisäänrakennettu rakennemäärittelykieli Yksinkertainen Ilmaisuvoimaltaan pienehkö DTD:llä esitetty rakennemäärittely voi olla erillisessä tiedostossa tai upotettuna osaksi dokumenttia Määrittely kytketään dokumenttiin DOCTYPEelementtinä. Ulkoinen määrittely: <!DOCTYPE juuri SYSTEM uri> tai <!DOCTYPE juuri PUBLIC tunniste uri> Sisäinen määrittely <!DOCTYPE juuri [... ]> juuri: juurielementin nimi uri: määrittelytiedoston URI (Universal Resource Identifier) tunniste: määrittelyn tunnus (jos sellainen on olemassa) : varsinainen määrittely 13 14 Esimerkkejä: <?xml version="1.1"?> <!DOCTYPE collection SYSTEM "http://www.brics.dk/ixwt/recipes.dtd"> <collection>... </collection> DTD -rakennemäärittely koostuu Elementtimäärittelyistä Attribuuttimäärittelyistä Nimettyjen kohteiden esittelyistä <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN "http://www.w3.org/tr/xhtml1/dtd/xhtml1- transitional.dtd"> <!DOCTYPE collection [... ]> 15 16 Elementtimäärittely on muotoa: <!ELEMENT element-name content-model > Sisällön kuvaus (content-model): EMPTY ANY mixed content: (#PCDATA e 1 e 2... e n )* element content: elementtinimiin perustuva säännöllinen lauseke, jossa aiemmin esitetystä poiketen peräkkäisyys (katenaatio) esitetään pilkulla (,) Esimerkki: <!ELEMENT table (caption?,(col* colgroup*),thead?, tfoot?,(tbody+ tr+)) > 17 18 Harri Laine 3

B F A C D Elementin A sisältömäärittelyssä määritellään vain seuraava taso puussa Sisältömallit EMPTY: ei mitään sisältöä (ei alisolmuja) ANY: ei mitään rajoitteita, kaikki elementit ja tekstitieto käyvät missä tahansa järjestyksessä. Elementit pitää kuitenkin määritellä. Mixed content: (#PCDATA e1 e2... en)* Tekstitieto ja luetellut elementit käyvät missä tahansa järjestyksessä, elementti voi esiintyä toistuvasti #PCDATA luettelossa ensimmäisenä - dokumentissa missä tahansa järjestyksessä Element content: säännöllinen lauseke määrittelee sallitut elementit, niiden järjestyksen ja toistot 19 20 <!ELEMENT collection (description,recipe*)> <!ELEMENT description (#PCDATA)> <!ELEMENT recipe (title,date,ingredient*,preparation, comment?,nutrition,related*)> <!ELEMENT title (#PCDATA)> <!ELEMENT date (#PCDATA)> <!ELEMENT ingredient (ingredient*,preparation)?> <!ELEMENT preparation (step*)> <!ELEMENT step (#PCDATA)> <!ELEMENT comment (#PCDATA)> <!ELEMENT nutrition EMPTY> <!ELEMENT related EMPTY> Sisällön määrittelyssä käytettävät säännölliset lauseet eivät saa olla moniselitteisiä (item?, item), jos jonossa yksi alkio niin kumpaa määrittelyelementtiä se vastaa <= (item, item?) ((nimi,työntekijä) (nimi, asiakas)) oikeaa vaihtoehtoa ei nähdä katsomatta eteenpäin <= (nimi,(työntekijä asiakas)) Katenaation ja valinnan presedenssi on määrittelemätön, joten on käytettävä sulkeita (title, fact fiction) ei käy vaan evaluointijärjetys tuotava esiin (title, (fact fiction)) 21 22 Jäsennettävää tekstitietoa sisältävä elementti ilmaistaan avainsanalla #PCDATA, merkki # avainsanan alussa osoittaa, että kyseessä 'varattu termi' (määrittelijä voisi periaatteessa määritellä myös elementin nimeltä PCDATA) Parametriviittaukset parametriviittauksia voidaan käyttää esim. kokoamaan yhteen usein toistuvia kielioppisääntöjen osia. Toistuvalle osalle annetaan nim. Viittausta voi käyttää, kun halutaan sisällyttää siihen liittyvä sisältö määrittelylausekkeeseen esim: <!ENTITY % usein "otsake, teksti, loppukommentti"> viittauksia <!ELEMENT kysely (tunnus, %usein;)> <!ELEMENT vastaus (vastaaja, kyselyviite, %usein;)> Jos sama elementti määritellään monta kertaa, niin ensimmäiseksi käsitelty määrittely jää voimaan Dokumenttiin upotettu määrittely käsitellään ennen ulkoisessa tiedostossa annettua 23 24 Harri Laine 4

Attribuutit määritellään attribuuttilistoina <!ATTLIST elementtinimi attribuuttimäärittelyt > Attribuuttimäärittely määrittelee elementtiin liittyvät attribuutti-arvo parit ja sisältää attribuutin nimen attribuutin tyypin tai arvojen joukon pakollisuusvaatimuksen mahdollisen oletusarvon Esim: <!ATTLIST country population NMTOKEN #IMPLIED coordinates NMTOKENS #IMPLIED language CDATA #REQUIRED continent (Europe America Asia ) "Europe"> 25 26 Tärkeimpiä attribuuttityyppejä CDATA: merkkijono (kielletyt merkit merkkiviittauksina) NMTOKEN: sana (nametoken), tyhjätilamerkit ja pilkku kiellettyjä XML 1.1:ssä, ei varattuja merkkejä (s1 sn): lueteltu sana, jokin annettuun sanaluetteloon kuuluvista sanoistanmtokens: tyhjätilamerkein eroteltu sanalista ID: elementin yksikäsitteinen tunnus, ei voi alkaa numerolla (yksikäsitteisyys ei rajoitu tyyppiin vaan on globaali vaatimus dokumentin sisällä) IDREF: vieraan dokumentin sisäisen elementin yksikäsitteinen tunnus IDREFS: tyhjätilamerkein eroteltu lista viitattavien elementtien tunnuksia Esimerkkejä: <!ATTLIST p align (left center right justify) IMPLIED> <!ATTLIST recipe id ID #IMPLIED> <!ATTLIST related ref IDREF #IMPLIED> 27 28 ID ja IDREF esimerkki IDREFS-esimerkki <!ELEMENT kuva EMPTY> <!ATTLIST kuva kuvaid ID #REQUIRED> <!ELEMENT taulukko EMPTY> <!ATTLIST taulukko taulukkoid ID #REQUIRED> <!ELEMENT viite EMPTY> <!ATTLIST viite kuvaidref IDREF #IMPLIED taulukkoidref IDREF #IMPLIED> <kuva kuvaid= kuva1 /> <kuva kuvaid= kuva2 /> <taulukko taulukkoid= t1 /> <p>tekstistä viitataan kuvaan <viite kuvaidref= kuva1 /> ja taulukkoon <viite taulukkoidref= t1 />, mutta voidaan viitata myös väärin <viite taulukkoidref= kuva2 />.</p> <!ELEMENT kuva EMPTY> <!ATTLIST kuva kuvaid ID #REQUIRED> <!ELEMENT viite EMPTY> <!ATTLIST viite kuvaidref IDREFS #REQUIRED> <kuva kuvaid= k1 /><kuva kuvaid= k2 /><kuva kuvaid= k3 /> <!-- valideja esimerkkejä --> <viite kuvaidref= k1 /> <viite kuvaidref= k2 k3 /> <viite kuvaidref= k1 k1 k1 /> <!-- voi olla samoja ID-arvoja --> <!-- nämä eivät ole valideja --> <viite kuvaidref= /> <viite kuvaidref= k1, k2 /> 29 30 Harri Laine 5

Attribuutin arvona voi olla viittaus ulkopuoliseen kohteeseen ENTITY tai viittausten joukko ENTITIES Tällaisia voisivat olla esimerkiksi kuvatiedostot <!NOTATION gif PUBLIC GIF > <!ENTITY BlueLine SYSTEM Blueline.gif NDATA gif> <!ELEMENT Separator EMPTY> <!ATTLIST Separator img ENTITY #REQUIRED> <Separator img= BlueLine /> Esiintymisvaatimus attribuuttimäärittelyssä #IMPLIED: valinnainen #REQUIRED: pakollinen "arvo" : valinnainen, puuttuessa oletetaan "arvo" #FIXED "arvo": valinnainen, puuttuessa oletetaan "arvo", annettuna vain "arvo" on sallittu 31 32 Attribuuttiarvojen normalisointi Kaikki erilaiset tyhjätilamerkit muutetaan välilyöntimerkeiksi (space) Viittaukset nimettyihin kohteisiin korvataan kohteen sisällöllä muista kuin CDATA tyyppisistä alkioista poistetaan alussa ja lopussa oleva tyhjätila peräkkäiset tyhjätilamerkit rajoitetaan yhteen jos tyhjätila attribuuttiarvoissa on tärkeää, pitää käyttää merkkiviittauksia Samaan elementtiin voi liittyä useita attribuuttilistojen määrittelyitä Nämä määrittelevät yhdessä kokonaisuuden Jos sama attribuutti määritellään useita kertoja, niin ensimmäisenä esiintyvää määrittelyä käytetään. 33 34 DTD esimerkki DTD esimerkki jatkuu <!ELEMENT collection (description,recipe*)> <!ELEMENT description (#PCDATA)> <!ELEMENT recipe (title,date,ingredient*,preparation, comment?,nutrition,related*)> <!ATTLIST recipe id ID #IMPLIED> <!ELEMENT title (#PCDATA)> <!ELEMENT date (#PCDATA)> <!ELEMENT ingredient (ingredient*,preparation)?> <!ATTLIST ingredient name CDATA #REQUIRED amount CDATA #IMPLIED unit CDATA #IMPLIED> <!ELEMENT preparation (step*)> <!ELEMENT step (#PCDATA)> <!ELEMENT comment (#PCDATA)> <!ELEMENT nutrition EMPTY> <!ATTLIST nutrition calories CDATA #REQUIRED carbohydrates CDATA #REQUIRED fat CDATA #REQUIRED protein CDATA #REQUIRED alcohol CDATA #IMPLIED> <!ELEMENT related EMPTY> <!ATTLIST related ref IDREF #REQUIRED> 35 36 Harri Laine 6

DTD:n rajoitteet XML-kielen määrittelystä DTD:n mahdollisuudet rajoittaa attribuuttien arvoja tai elementtien ovat sisältöä hyvin rajalliset. Tekstitietoa ei voi säädellä Attribuuttiarvojen rajaaminen on suppeaa Määritykset ovat yhteysriippumattomia Tekstitiedon ja elementtien yhdistelmiä ei voi kontrolloida Tunnisteisiin perustuva kytkentämekanismi on kovin yksinkertainen DTD ei noudata XML syntaksia DTD ei tue nimiavaruuksia 37 Rakennetta ei tehdä rakenteen itsensä vuoksi Mitä tiedoilla on tarkoitus tehdä vaikuttaa rakenteeseen Tieto organisoidaan käytön kannalta tarkoituksenmukaisella tavalla Tiedetäänkö aina mihin tietoja tulevaisuudessa käytetään? Ellei tiedetä tulee luonnollisen kohdelähtöinen määrittely tärkeämmäksi samoin varautuminen uusiin toimintavaatimuksiin vrt. relaatiotietokannan toimintariippumaton suunnittelu - XML:n monimutkaisemmille rakenteille ei ole vastaavaa 38 XML-kielen määrittelystä Käytä elementtejä jos tiedolle on tarpeen määritellä alirakenne jos tieto halutaan esittää muotoiltuna jos tietojen järjestyksellä on merkitystä Käytä attribuutteja jos ei tarvita alirakenteita arvoja pitää kyetä rajoittamaan järjestyksellä ei ole merkitystä tieto on metatietoa (kuinka käsitellään) Ei ihan noin suoraviivaista. Esimerkiksi relaatiotietokannan XML-näkymissä on eri tahoilta tarjolla sekä 'kokonaan attribuutteina' tai 'kokonaan elementteinä' lähestymistapoja. 39 Harri Laine 7