Dokumentin mallintaminen Yleistä Dokumentin analysointi DTD:n suunnittelu Standardi DTD:t Esimerkki: uuden DTD:n laatiminen Muuta Yleistä DTD:t tärkeitä rakenne validointi DTD:n muutokset voivat johtaa ongelmiin hyvä suunnittelu tärkeä vaatii usein useamman asiantuntijan yhteistyötä testaus Dokumentin analysointi Usein XML järjestelmä vanhan järjestelmän tilalle siirryttäessä XML:ään joka voidaan käyttää standardi DTD mahdolliset muutokset luoda uusi DTD tukea esim. yrityksen dokumenttimalleista Desktop publishing vs. XML Desktop publishing taiteellinen vapaus erityisesti ulkoasu XML kaikki proseduraaliset piirteet eivät mahdollisia takaa sen että XML dokumentit seuraavat samanlaista rakennetta julkaisemisen tehokkuus, monelle medialle (edustavista) esimerkkidokumenteista sekä niiden tekijöiltä Dokumentin osien analysointi Dokumentin piirteestä, selvitä jos sillä on nimi jos se voi puuttua jos se esiintyy kerran/useamman kerran mikä informaatio edeltää ja seuraa sitä (aina) jos sitä voidaan jakaa osiin (joista voidaan selvittää nämä samat kysymykset) jos se sisältää vakiotekstiä (jota voitaisiin generoida automaattisesti) Tietokantakaavion analysointi XML dokumentti (tai sen osa) ehkä generoidaan suoraan tietokannasta Silloin voi DTD:n kirjoittamisessa käyttää hyväksi mm. mahdolliset tietokantakaaviot SQL, UML tai ER kaaviot: yhdestä yhteen relaatiot: chapter (title,...) yhdestä moneen relaatiot: chapter (para+), chapter (para*) eivät kerro osien järjestystä DTD:n käyttö tulevaisuudessa Suunnittelijan pitäisi pystyä ennakoimaan miten DTD:tä tullaan käyttämään jatkossa rakenteisuus <name>matti Meikäläinen</name> vs. <name><fs>matti</fs><ln>meikäläinen</ln> </name> linkkausstrategia yksikäsitteiset tunnisteet DTD:n suunnittelu standardi DTD vai uusi? mitkä nimet pitäisi käyttää? elementti vs. attribuutti, kumpi valitaan? sääntöjen järjestys? kommentit? modulaarisuus? säännöt? nykyversiossa piilotetut linkit
Nimeäminen Johdonmukainen tyyli Huom! Isot vs. pienet kirjaimet käytä vain pieniä kirjaimia <newname> tai vain isoja kirjaimia <NEWNAME> tai johdonmukaista sekoitusta <NewName> tai muuta <new_name> Itsekuvaava vs. lyhyt nimi vaatii enemmän tai vähemmän tilaa Elementti Elementti tai attribuutti rakenteisuus: jos on alirakenteita (alielementtejä) järjestys: jos tietty järjestys pakollinen sisältö: sisältö on oleellinen osa ympäröivää elementtiä poista ja lue sisältö: onko kokonaisuus järkevä jos näkyy tulostuksessa mutta sisältöä ei voi rajoittaa tasapaino pituuden ja selkeyden suhteen Elementti tai attribuutti, jatk. Attribuutti rakenteisuus: jos ei ole alirakenteita (tai ta) järjestys: järjestyksellä ei ole väliä sisältöä kuvaava: jos kuvaa elementin sisältöä ("adjektiivi") jos mahdollisia arvoja on vähän (lueteltu tyyppi) voidaan rajoittaa ja tarkistaa oletusarvot jos on hallinnollista tieto joka ei näy tulostuksessa Elementti tai attribuutti, jatk. joskus on huomioitava myös sovellus elementtien vs. attribuuttien käsittely voi olla hankalaa antaa attribuuttien arvoja keskeneräisissä prosessoreissa attribuuttien käsittely saattaa olla puutteellinen käyttäjän tottumukset ja taidot tietokantasuunnittelija vs. graafinen suunnittelija vs. olio ohjelmoija kokonaisuus yhtenäinen ks. http://www.cs.helsinki.fi/u/ruini/structure/xml/ ja http://www.oasis open.org/cover/elementsandattrs.html Standardi DTD:t "Standardoitu", sopimus, de facto tai de jure? Edut tiedon jakaminen Haitat harvemmin kahdella organisaatiolla on täysin samat tarpeet > omat sovitukset voi sisältää liian vähän tai paljon elementtejä liian monimutkainen, liian joustava? Standardi DTD vai oma Pragmaattinen valinta: valitse olemassa oleva Tee muutokset poista elmenttejä tiukenna konteksti ja esiintymäsääntöjä lisää elementtejä Onko edelleen yhteensopiva alkuperäisen DTD.n kanssa? tiukemmat säännöt: kyllä elementtien lisääminen ja poistaminen: yleensä ei Standardi DTD:t, esim. http://www.schema.net/ http://www.xml.org/xmlorg_registry/ http://www.xml.com/pub/rg/dtds http://xml.coverpages.org/ MathML, CML (kemia), UXF (UML exchange Format), SMIL (multimedia), RDF (Resource Description Framework), HumanML (luonnollinen kieli), DocBook, jne. DTD:n kirjoittaminen Tekstieditori tai DTD:n erikoiseditori kommentti seuraavista asioista tarkoitus soveltamisala tekijä päivämäärä ensisijainen käyttö
DTD:n sääntöjen järjestys 1. Notaatiot 2. Entiteetit 3. Elementit ja attibuutit esim. elementti ja sitten kaikki sen attribuutit tai attribuutit erikseen Mahdolliset kommentit missä tarpeen Sisältö, rakenne, ulkoasu Eri tapoja katsoa dokumenttia Sisältö, rakenne, ulkoasu kertovat eri asioita dokumentista näkyvät elementtien nimissä 1. <definition>... 2. <paragraph>... 3. <bold><italics>... Sisältöön perustuvat osat informaation merkitys abstraktissa mielessä todellisen maailman olioita esimerkit osoitteet, kadut, postinumerot tuotenimet, määrät, hinnat reseptit, ainekset, lämpötilat, valmistusajat enemmän prosessointimahdollisuuksia Rakenteeseen perustuvat osat osoittaa julkaisuasun voivat kuvata sekä sisältöä että ulkoasua esimerkit kappaleet listat ja alkiot luvut, aliluvut, jne. taulukot vähemmän prosessointimahdollisuuksia Ulkoasuun perustuvat komponentit kuvaavat ulkoasua esimerkit tietyt merkistöt ja koot rivin ja sivunvaihdot sisennykset lihavoinnit, kursivoinnit, värit ulkoasun täydellinen kontrolli (ei XML "filosofian" mukainen) Tavoite suunnittelussa vältä käyttämästä pelkästään ulkoasuun perustuvia kohtia muotoilija voi lisätä nämä asiat automaattisesti esim. ei sivunumeroita tunnista osat, jotka tulevat yhdestä ainoasta paikasta esim. marginaalit, alatunnisteet jos asia haetaan tietokannasta käytä sisältöön perustuvaa osaa tunnista sisäkkäiset osat, ryhmät Esmerkki: DTD:n laatiminen Lähteenä listaus kurssikokeista (ajoista ja paikoista) syksyllä 2001 1. Dokumentin analysointi 1. Tunnista loogiset osat 2. Selvitä osien esiintymiskerrat (0, 1, n) 3. Selvitä osien järjestys (yläelementissä) 4. Selvitä osien alirakenteet (ja toista nämä askeleet) 5. Selvitä osien vakiotekstit 6. Selvitä osien muut ominaisuudet Esimerkki: lähteenä kurssikokeet Kurssikokeet syksyllä 2001, Course exams in autumn 2001 Tarkista kokeen aika ja paikka WWW:stä päivää pari ennen koetta! Check the date, time and place from WWW one or two days before the exam. If you want the questions in English, contact the examiner.
Esimerkki: lähteenä kurssikokeet to 13.9. klo 16 20 sali 1 päärakennus 581324 7 Tietokone työvälineenä (pääaineopiskelijoille) Rytkönen pe 12.10. klo 14 18 Auditorio 581379 7 Muuntokoulutuksen peruskurssi (Java) Hyvönen ti 23.10. klo 16 20 sali 1 päärakennus 581390 4 Tietokone työvälineenä (sivuaineopiskelijoille) Rytkönen Tekijä@cs.helsinki.fi 14.11.2001 kurssikokeet järjestys: pääosa alirakenteet: otsikko, ohjeet, kokeet, tekijä, päiväys vakiotekstit: väliviivat, tyhjät välit osien välillä muut ominaisuudet: pääasiallinen kieli on suomi otsikko: Kurssikokeet syksyllä 2001, Course exams in autumn 2001 järjestys: 1 alirakenteet: mahdollisesti kieliversiot, lukukausi, vuosi vakiotekstit:, muut ominaisuudet: suomi, englanti kieliversio Kurssikokeet syksyllä 2001 Course exams in autumn 2001 n järjestys: 1, 2,... alirakenteet: lukukausi, vuosi vakiotekstit: in, llä muut ominaisuudet: suomi, englanti,? lukukausi järjestys: 1 vuosi järjestys: 2 ohjeet Tarkista kokeen aika ja paikka WWW:stä päivää pari ennen koetta! Check the date, time and place from WWW one or two days before the exam. If you want the questions in English, contact the examiner. esiintymiskerrat: 0 (?), 1, järjestys: 2 alirakenteet: kieliversiot (ks. otsikko) vakiotekstit: muut ominaisuudet: suomi, englanti koe to 13.9. klo 16 20 sali 1 päärakennus 581324 7 Tietokone työvälineenä (pääaineopiskelijoille) Rytkönen esiintymiskerrat: 0 n, järjestys: 3 alirakenteet: aika, paikka, kurssi, kuulustelija vakiotekstit: muut ominaisuudet: aika to 13.9. klo 16 20, järjestys: 1 alirakenteet: pvm aikaväli pvm:, alirakenteet: pv, pp, kk, järjestys: 1, vakiotekstit: pisteet aikaväli:, alirakenteet: alku, loppu, järjestys: 2, vakiotekstit: klo,
paikka sali 1 päärakennus tai Auditorio, järjestys: 2 alirakenteet: sali, rakennus sali:, järjestys: 1 rakennus: esiintymiskerrat: 0 1, järjestys: 2 kurssi 581324 7 Tietokone työvälineenä (pääaineopiskelijoille) järjestys: 3 alirakenteet: kurssitunnus, kurssin nimi, kenelle soveltuu vakiotekstit: sulut muut ominaisuudet: kurssitunnus, kurssin nimi, kenelle soveltuu 581324 7 Tietokone työvälineenä (pääaineopiskelijoille) järjestys: 1, 2, 3 alirakenteet: kuulustelija Rytkönen ( n?) järjestys: 4 alirakenteet: vakiotekstit: muut ominaisuudet: vakiotekstit: sulut muut ominaisuudet: väliviivat esiintymiskerrat: 0 n, järjestys: kokeiden erotin alirakenteet: vakiotekstit: on, voidaan tuottaa automaattisesti tekijä päiväys 14.11.2001 järjestys: 1 alirakenteet: pp kk vv (tarvitaanko eritellä?) vakiotekstit: pisteet Tekijä@cs.helsinki.fi esiintymiskerrat:1, järjestys: 4 alirakenteet: ilmeisesti sähköpostiosoite Esimerkki: DTD:n laatiminen Lähteenä dokumentin analysointi 2. DTD:n suunnittelu Onko osa elementti vai attribuutti Jos attribuutti, minkä elementin, mitä tyyppiä Valitse sisältöön perustuva selkeä nimi Kirjoita osan (elementin tai attribuutin) Aloita esim. lehtitasosta Ota huomioon osan esiintymiskerrat, järjestys, jne. Lisää tarvittaessa kommentteja lukukausi, vuosi, tekijä, päiväys (listan alalaidassa) osa: attribuutti (lueteltu, NMTOKEN, CDATA, CDATA; elementti: kurssikokeet) nimi: lukukausi, vuosi, tekijä, päivitys ks. elementtiä ks. elementtiä (Tee )
kieliversio nimi: otsikon_osa <!ELEMENT otsikon_osa (#PCDATA)> <!ATTLIST otsikon_osa xml:lang NMTOKEN "fi"> <otsikon_osa xml:lang="fi"> Kurssikokeet</otsikon_osa> <otsikon_osa xml:lang="en">course exams</otsikon_osa> otsikko nimi: otsikko <!ELEMENT otsikko (otsikon_osa)*> : <otsikko> <otsikon_osa xml:lang="fi"> Kurssikokeet</otsikon_osa> <otsikon_osa xml:lang="en">course exams</otsikon_osa> </otsikko> ohjeet, samalla tavalla kuin otsikko nimi: ohjeet (ohjeen_osa) <!ELEMENT ohjeet (ohjeen_osa)*> <!ELEMENT ohjeen_osa (#PCDATA)> <!ATTLIST ohjeen_osa xml:lang NMTOKEN "fi"> <ohjeet><ohjeen_osa xml:lang="fi">tarkista...</ohjeen_osa> <ohjeen_osa xml:lang="en">... </ohjeen_osa> </ohjeet> pv osa: attribuutti (lueteltu, pvm) nimi: pv ja : ks. elementtiä pvm pp, kk nimi: pp, kk ( ks. elementtiä pvm) <!ELEMENT pp (#PCDATA)> <!ELEMENT kk (#PCDATA)> pvm nimi: pvm <!ELEMENT pvm (pp, kk)> <!ATTLIST pvm pv (ma ti ke to pe) "ma"> <pvm pv="to"> <pp>13</pp><kk>9</kk></pvm> aikaväli nimi: aikaväli <!ELEMENT aikaväli (alkaa, loppuu)> <!ELEMENT alkaa (#PCDATA)> <!ELEMENT loppuu (#PCDATA)> <aikaväli><alkaa>16</alkaa> <loppuu>20</loppuu></aikaväli> aika nimi: aika <!ELEMENT aika (pvm, aikaväli)> <aika><pvm pv="to"> <pp>13</pp><kk>9</kk></pvm> <aikaväli><alkaa>16</alkaa> <loppuu>20</loppuu></aikaväli></aika> sali, rakennus nimi: sali, rakennus <!ELEMENT sali (#PCDATA)> <!ELEMENT rakennus (#PCDATA)> <sali>sali 1</sali> <rakennus>päärakennus</rakennus>
paikka nimi: paikka <!ELEMENT paikka (sali, rakennus?)> <paikka><sali>sali 1</sali> <rakennus>päärakennus</rakennus> </paikka> kurssitunnus, kenelle soveltuu osa attribuutti (NMTOKEN, lueteltu; kurssi) nimi: ktunnus, soveltuu ja, ks. elementtiä kurssi kurssin nimi nimi: knimi <!ELEMENT knimi (#PCDATA)> : ks. elementtiä kurssi kurssi nimi: kurssi <!ELEMENT kurssi (knimi)> <!ATTLIST kurssi ktunnus NMTOKEN #REQUIRED> <!ATTLIST kurssi soveltuu (pääaineopiskelijoille sivuaineopiskeli joille muuntokoulutettaville kaikille) "kaikille"> kurssi <kurssi ktunnus="581324 7" soveltuu="pääaineopiskelijoille"> <knimi>tietokone työvälineenä</knimi></kurssi> kuulustelija nimi: kuulustelija <!ELEMENT kuulustelija (#PCDATA)> : <kuulustelija>rytkönen</kuulustelija> koe nimi: koe <!ELEMENT koe (aika, paikka, kurssi, kuulustelija)> : <koe>... </koe> kurssikokeet nimi: kokeet <!ELEMENT kokeet (otsikko, ohjeet?, koe*)> <!ATTLIST kokeet lukukausi (syksy kevät kesä) "syksy"> <!ATTLIST kokeet vuosi NMTOKEN #REQUIRED> <!ATTLIST kokeet tekija CDATA #IMPLIED> <!ATTLIST kokeet paivitys CDATA #IMPLIED> Esimerkki: DTD:n testaaminen Evaluoi DTD:n Validoi XML dokumenttiasi Muuta testausta käyttäjät työkalut
Muita DTD:n ominaisuuksia Arkkitehtuurimuodot yhteinen kanoninen DTD eri DTD:iden mukaisia dokumentteja voidaan muuntaa noudattamaan yhtä kanonista muotoa toteutus attibuuttien avulla Taulukot erityisen vaativia, esim ulkoasun muotoilu sisältöperustainen vs. ulkoasu