6 DTD ja dokumentin tyyppimääritys

Samankaltaiset tiedostot
6 DTD ja dokumentin tyyppimääritys

6 DTD ja dokumentin tyyppimääritys

Elementtien tyyppideklaraatiot

10 XML ja dokumenttien tyyppimäärittely

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

XML johdatus: DTD. Jaana Holvikivi

XML-merkkaus. Merkkidata, prosessointikomennot, kommentit

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

5 Merkkaus: XML protokollana

9 XML perusteet

5 Merkkaus: XML protokollana

11 XML-entiteetit. <eg> Using HTML tag <FONT> is not recommended! </eg> <eg> Using HTML tag <FONT> is not recommended! </eg> XML-entiteetit

XML rakenteen suunnittelu. Jaana Holvikivi

11 XML-entiteetit. Edellisistä laillisia ominaisuusyhdistelmiä ovat siis vain aikaisemmin luetellut viisi:

XML / DTD / FOP -opas Internal

4 Johdanto XML-maailmaan

4 Johdanto XML-maailmaan

<Element> <ELEMENT> <element> </element> </ELEMENT> </Element>

12 Dokumenttiluokkien suunnittelusta

3 Verkkosaavutettavuuden tekniset perusteet

9 XML perusteet

9 XML perusteet

10 XML ja dokumenttien tyyppimäärittely

4 Kommentoitu johdanto XML-maailmaan

Poikkeusinfo XML-rajapinnan kuvaus, rajapinnan versio 2 Seasam Group

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

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

XML-saatavuuskysely. XML-tiedoston kuvaus. versio

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

2 Rakenteisten dokumenttien perusteet

12 Dokumenttiluokan toteuttamisesta

13 Nimiavaruudet. kirjoitetaan muotoon (ja koodataan vähän lisätietoa) huomataan heti, mitä kirjoittaja ajaa takaa ja tarkoittaa. Vai huomataanko?

Extensible Stylesheet Language (XSL)

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

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

M. Merikanto 2012 XML. Merkkauskieli, osa 2

Johdatus rakenteisiin dokumentteihin

CSE-A1200 Tietokannat

2.17 Esimerkki järkevän relaatiotietokannan rakenteesta

XML - perusteet. Ctl230: Luentokalvot Miro Lehtonen

3 XHTML-dokumenttien anatomia

TEKNINEN MÄÄRITTELY. Matkahuollon toimipistehaun rajapinta. Ismo Koskinen

Luento 2: XML:n syntaksi

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

815338A Ohjelmointikielten periaatteet Harjoitus 2 vastaukset

Apuja ohjelmointiin» Yleisiä virheitä

XML johdanto, uusimmat standardit ja kehitys

15. Ohjelmoinnin tekniikkaa 15.1

2 Rakenteisten dokumenttien perusteet

VeRan laboratoriotietojen siirtoformaatti

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

Java-kielen perusteet

è è è RDF-perusteet 7 RDF-perusteet

7 DTD ja entiteetit: dokumentin fyysinen rakenne

15. Ohjelmoinnin tekniikkaa 15.1

Paikkatiedot ja Web-standardit

tään painetussa ja käsin kirjoitetussa materiaalissa usein pienillä kreikkalaisilla

XML-pohjaiset rakennemäärittelyt

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

XML Technologies and Applications - harjoitustyö -

Jypelin käyttöohjeet» Ruutukentän luominen

Tietueet. Tietueiden määrittely

VERA TOIMINTAOHJEET. VeRan uusi siirtoformaatti. FCG Finnish Consulting Group Oy. Rev./pvm 1.03 Hyväksytty

2. Lisää Java-ohjelmoinnin alkeita. Muuttuja ja viittausmuuttuja (1/4) Muuttuja ja viittausmuuttuja (2/4)

4 Kommentoitu johdanto XML-maailmaan

Ohjelmassa henkilön etunimi ja sukunimi luetaan kahteen muuttujaan seuraavasti:

DOORSin Spreadsheet export/import

7 DTD ja entiteetit: dokumentin fyysinen rakenne

Semanttinen Web. Ossi Nykänen Tampereen teknillinen yliopisto (TTY), DMI / Hypermedialaboratorio W3C Suomen toimisto

13 Tiedostot, dokumentit, tieto (&h-media)

Yhteentoimivuutta edistävien työkalujen kehittäminen

5. HelloWorld-ohjelma 5.1

2. PEHMEÄ XHTML XRAJAHTML

12 Dokumenttiluokkien suunnittelusta

7. Näytölle tulostaminen 7.1

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

Tietojen toimittaminen Skeemat Käsittelypalautteen kysely Kansallisen tulorekisterin perustamishanke

Java-kielen perusteet

Tietojen toimittaminen Skeemat Käsittelypalautteen kysely Kansallisen tulorekisterin perustamishanke

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

13 Tiedostot, dokumentit, tieto (&h-media)

Sivuston tiedotakcpshop.de.websiteoutlook.com

T2V2 Vaaratilanneilmoitussanomakuvaus

Pythonin Kertaus. Cse-a1130. Tietotekniikka Sovelluksissa. Versio 0.01b

Tietojen toimittaminen Skeemat Viestit Kansallisen tulorekisterin perustamishanke

Hankinnan tarjousvastauksen liittymäaineistojen kuvaukset

HELIA 1 (17) Outi Virkki Tiedonhallinta

Proseduraalinen dokumentti: sisältö, rakenne ja ulkoasu yhdessä, esim. worddokumentti

Helsingin yliopisto / TKTL XML-Metakieli XML Schema

Hahmon etsiminen syotteesta (johdatteleva esimerkki)

Merkkauksen valinnan suunnittelufilosofisia päälinjoja

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

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

4. Lausekielinen ohjelmointi 4.1

Hohde Consulting 2004

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

Rakenteisten dokumenttien jatkokurssi, syksy 2006

ITKP102 Ohjelmointi 1 (6 op)

Tietojen toimittaminen Skeemat Mitätöintitiedot Kansallisen tulorekisterin perustamishanke

12 Dokumenttiluokkien suunnittelusta

Transkriptio:

6 DTD ja dokumentin tyyppimääritys Tietojenkäsittelyssä päähuomio ei yleensä ole tiedon matalan tason formaatissa vaan sovelluksissa joissa tietoa käytetään loogisesti jäsennettynä. XML-merkkaus tarjoaa yhteensopivan ja yksinkertaisen perustan rakenteisten dokumenttien käsittelyyn. XML-tieto olisi kuitenkin vain (hyvin muodostettujen :-) XML-elementtien sekamelskaa, ilman sovelluskohtaisia sopimuksia esim. Web-sivujen, vektorikuvien, kirjekuorten ja muistioiden hyväksyttävistä tietorakenteista. 7307015 RAKENTEISET DOKUMENTIT (kevät 2005) - ON 100

6.1 Dokumentin tyyppimääritys XML-dokumenttien tyyppimääritys tarjoaa keinon jakaa XML-dokumentit hallittaviin aliluokkiin Aliluokkien dokumenttien looginen rakenne on ko. aliluokalle tunnusomainen - kakkuresepteihin liitetään yleensä kakun nimi, valmistusaineet, leipomisohje sekä paistoaika, tietyssä järjestyksessä - novelleihin liitetään yleensä kertomuksen nimi, kirjoittaja, esipuhe, kääntäjän huomautuksia sekä varsinainen tarina luvuiksi ja kappaleiksi jaoteltuna - kirjeessä on yleensä lähettäjän ja vastaanottajan nimi ja osoite, päivämäärä sekä vapaamuotoista sisältötekstiä Dokumenttiluokan esiintymien looginen rakenne voi yleensä myös hieman vaihdella, esim. kirjeessä ei aina ole lähettäjän osoitetta yleensä kaikki dokumenttiluokat ovat juuri tällä tavoin geneerisiä 7307015 RAKENTEISET DOKUMENTIT (kevät 2005) - ON 101

6.2 XML DTD Kuten todettua, XML 1.0 (1.1) sisältää DTD-määrityskielen; vrt. DTD-esittely [28] doctypedecl ::= '<!DOCTYPE' S Name (S ExternalID)? S? ('[' intsubset ']' S?)? '>' [VC: Root Element Type] [WFC: External Subset] Dokumentin tyyppimääritys koostuu määrittelysäännöistä (merkkausjulistukset tai -esittelyt) jotka keskeisesti asettavat ko. tyypin sallitut elementti- ja attributtirakenteet: - notaation määrittely (notation declaration) - elementin tyyppimäärittely (element type declaration) - attribuuttilistan tyyppimäärittely (attribute-list declaration) - entiteetin määrittely (entity declaration) Näistä tarkastelemme aluksi lähemmin elementtejä ja attribuutteja 7307015 RAKENTEISET DOKUMENTIT (kevät 2005) - ON 102

6.3 Esimerkki: dokumenttityypin music määrittely <?xml version="1.0" encoding="iso-8859-1"?> <!ENTITY on "Ossi Nykänen"> <!ELEMENT music (album+)> <!ATTLIST music editor CDATA #IMPLIED> <!ELEMENT album (name, tracks, img?)> <!ATTLIST album artist CDATA #REQUIRED> <!ATTLIST album year CDATA #REQUIRED> <!ELEMENT name (#PCDATA)> <!ELEMENT tracks (track+)> <!ELEMENT track (#PCDATA)> <!ATTLIST track len CDATA #IMPLIED> <!ELEMENT img EMPTY> <!ATTLIST img src CDATA #IMPLIED> 7307015 RAKENTEISET DOKUMENTIT (kevät 2005) - ON 103

6.4 Esimerkki: music-tyyppinen dokumentti <?xml version="1.0" encoding="iso-8859-1"?> <!DOCTYPE music SYSTEM "cd-music.dtd"> <music editor="&on;"> <album artist="dire Straits" year="1978"> <name>dire Straits</name> <tracks> <track len="5m34s">sultans of swing</track> <track len="6m14s">in the gallery</track> </tracks> <img src="/img/pda/ds-2005-01-09.gif" /> </album> <album artist="pet Shop Boys" year="1993"> <name>very</name> <tracks> <track len="3m55s">yesterday, When I Was Mad</track> </tracks> </album> </music> 7307015 RAKENTEISET DOKUMENTIT (kevät 2005) - ON 104

6.5 Esimerkki: toinen music-tyyppinen dokumentti <?xml version="1.0" encoding="iso-8859-1"?> <!DOCTYPE music SYSTEM "cd-music.dtd" [ <!ATTLIST music editor CDATA #FIXED "Ossi Oletus" > ]> <music> <album artist="pet Shop Boys" year="1993"> <name>very</name> <tracks> <track len="3m55s">yesterday, When I Was Mad</track> </tracks> </album> </music> Dokumentin tyyppimääritys voi siis jakautua kahteen osaan, jotka yhdessä muodostavat dokumentin tyyppimäärityksen (kokeile rxp -Va): - "vahvempi" sisänen DTD-osajoukko ("vrt. CSS") ja - ulkoinen DTD-osajoukko 7307015 RAKENTEISET DOKUMENTIT (kevät 2005) - ON 105

6.6 Elementtien tyyppimäärityksen perusteet Elementin tyyppimääritys voi näyttää esim. seuraavalta <!ELEMENT album (name, tracks, img?)> 1 2 Nimen (1) jälkeistä termiä (2) kutsutaan toisinaan elementin tieto- tai sisältömalliksi XML tunnistaa neljä "erilaista" elementtien tyyppimääritystä - element content (Huom. tyhjäsolmujen tulkinta!) - mixed content - EMPTY - ANY (yleensä tarpeeton) Erot piilevät siinä minkälaisia rakenteita elementin tietomallin määrittelyyn saa kirjoittaa; mallinnuksen näkökulmasta DTD on kuitenkin melko heikko 7307015 RAKENTEISET DOKUMENTIT (kevät 2005) - ON 106

6.7 Esimerkkejä (määritys ja esimerkkimerkkaus) (1) <!ELEMENT example EMPTY> <example/> (2) <!ELEMENT example ANY> <example>hei maailma!<example/></example> (3) <!ELEMENT example (#PCDATA code field)*> <!-- #PCDATA ensin --> <!ELEMENT code (#PCDATA)*> <!--... ja vain... --> <!ELEMENT field (#PCDATA)*> <!-- -operaattori --> <example>hei maailma <field>hej</field> Hi <code>moi</code> Hello </example> (4) <!ELEMENT example (code field?)> <!ELEMENT code (#PCDATA)*> <!ELEMENT field (#PCDATA)*> <example> <field>hej</field> </example> 7307015 RAKENTEISET DOKUMENTIT (kevät 2005) - ON 107

6.8 Sisältönä elementtejä: element content -tietomalli Kun elementin sisältö määritellään element content -tyyppiseksi, voidaan lapsielementtien rakenne määrittää monipuolisesti jo EBNF:stä tuttujen operaattoreiden ja kertojien avulla (toki kyseessä on eri kielioppi), esim.: <!ELEMENT mydoc (title?,code+,(footer comment)?)> XML-DTD tunnistaa seuraavat operaatorit: - A,B (B seuraa A:ta) - A B (A tai B) ja seuraavat kertojat: - A? (A on optionaalinen) - A+ (A esiintyy yhden tai useamman kerran) - A* (A esiintyy yhden tai useamman kerran tai ei ollenkaan) Lausekkeiden ryhmittelyyn käytetään tavallisia sulkuja ("(",")") 7307015 RAKENTEISET DOKUMENTIT (kevät 2005) - ON 108

6.9 Huomautuksia elementtien määrittelystä Sisältömalleja on usein tarkoituksenmukaista jakaa pienempiin osiin sääntöjen lukemisen ja kirjoittamisen helpottamiseksi (huomaa ero merkkauksessa!): <!ELEMENT mydoc (title?,code+,misc)> <!ELEMENT misc ((footer comment)?)> Mikäli ylimääräisiä merkkausrakenteita (käytännössä elementtejä, yllä miscelementti) ei dokumentteihin haluta, voidaan elementtien tyyppijulistuksia sieventää ns. parametrientiteettien avulla (näihin palataan myöhemmin) Elementtien sisältömallit voivat olla varsin mutkikkaita sisältäen myös rekursiivisia (itseensä viittaavia) rakenteita (rekursioonkin palataan vielä) Yhden ja saman (ei-triviaalin) loogisen elementtirakenteen voi yleensä ilmoittaa useilla erinäköisillä tyyppimäärityksillä 7307015 RAKENTEISET DOKUMENTIT (kevät 2005) - ON 109

6.10 Attribuuttien tyyppimäärittelyn perusteet (1/3) Attribuutit ovat elementteihin liittyviä "lisämääreitä", esim. tyyliin: <example color="red" shape="circle">hei maailma!</example> Tyyppimääritys asettaa attribuuttien nimet, arvojoukot sekä määrää attribuuttien (pakollisen) esiintymisen elementeissä Tarkastellaan määritystä <!ATTLIST example color CDATA #FIXED "red"> 1 2 3 4 Attribuutin tyyppimääritys sisältää seuraavat termit 1. elementin nimi 2. attribuutin nimi 3. arvoalue (AttType) 4. oletusarvo (DefaultDecl, sis. pakollisuus ja oletusarvo) 7307015 RAKENTEISET DOKUMENTIT (kevät 2005) - ON 110

6.11 Attribuuttien tyyppimäärittelyn perusteet (2/3) Attribuutit määritellään aina tietyntyyppisille (tietynnimisille) elementeille: <!ELEMENT example EMPTY> <!ATTLIST example color (red green blue) "red"> Koska julistukseen kirjoitetaan aina sen elementin nimi, johon attribuuttit voidaan liittää, ovat erityyppisille elementeille esiteltävät samannimiset attribuutit eri attribuutteja, vrt: <!ELEMENT example EMPTY> <!ATTLIST example color (red green blue) "red"> <!ELEMENT code (#PCDATA)> <!ATTLIST code color CDATA "red"> Ts. attribuuttimäärittely sallii myös "intuitiivisesti epäjohdonmukaiset" attribuuttimääritykset jossa samanniminen attribuutti tarkoittaa "eri elementeille eri asiaa" (tätä on toki syytä välttää suunnittelussa) 7307015 RAKENTEISET DOKUMENTIT (kevät 2005) - ON 111

6.12 Attribuuttien tyyppimäärittelyn perusteet (3/3) Oletusarvot määrittelevät onko attribuutti pakko merkata ja jos merkataan, mikä arvo sille pitää asettaa: - #REQUIRED ~ attribuutti on pakko merkata - #IMPLIED ~ attribuutin merkkaaminen on vapaaehtoista - #FIXED ~ attribuutin arvo on (annettu) vakio Toisin sanoen, oletusarvosta johtuen <example color="red" shape="circle"/>...on sama asia kuin: <example shape="circle" color='red'/>...mutta saattaa olla (loogisesti) eri asia kuin: <example color="red"/> 7307015 RAKENTEISET DOKUMENTIT (kevät 2005) - ON 112

6.13 Esimerkkejä erilaisista tyyppimäärityksistä <!ATTLIST example color (red green blue) #REQUIRED> <!ATTLIST example color CDATA #REQUIRED> <!ATTLIST example color (red green blue) "red"> <!ATTLIST example color CDATA #IMPLIED> <!ATTLIST example color CDATA #FIXED "red"> Notaatio mahdollistaa myös kokonaisen attribuuttilistan määrittelyn kerralla: <!ATTLIST example type (theory application) #REQUIRED color CDATA #REQUIRED> On tärkeää huomata, että XML-dokumenttissa näkyvään elementtiin kirjoitettu attribuutin arvo käy aina läpi normalisointiprosessin matkallaan XML-prosessorin läpi kohti sovellusta (tähän palataan pian) 7307015 RAKENTEISET DOKUMENTIT (kevät 2005) - ON 113

6.14 Attribuuttien arvoalueet (2/2) Aikaisemmissa esimerkeissä attribuutin tyyppeinä oli yksinkertaisesti joko merkkidata tai lueteltuja arvojoukkoja, tyyliin: <!ATTLIST example color (red green blue) #REQUIRED> <!ATTLIST example color CDATA #REQUIRED> Käytännössä tämä riittää yleensä mainiosti. XML-prosessori/sovellus - asetelman puitteissa on kuitenkin tilanteita, joissa arvojoukkojen yksityiskohtaisempi määrittäminen on perusteltua, esim. kun - attribuutit viittaavat nimettyihin XML-elementteihin - tiedetään, että sovellus aikoo käyttää (joidenkin) attribuuttien arvoja esim. tiedostoniminä Perusideana on siis attribuuttien tutkiminen onnistuu jo XML-prosessorin avulla niin pitkälle kuin mahdollista (tai pikemminkin käytännöllistä; kaikille arvoalueille ei yleensä löydy käyttöä) 7307015 RAKENTEISET DOKUMENTIT (kevät 2005) - ON 114

6.15 Attribuuttien arvoalueet (2/2) Arvoalue voi olla jotakin seuraavista: - CDATA ~ merkkidataa - lueteltu (enumerated) ~ jokin annetuista tunnistemerkkijonoista - NOTATION ~ jokin annetuista notaatioista - ID ~ ID-attribuutti - IDREF ~ viittaus ID-attribuuttiin - IDREFS ~ luettelo viittauksista ID-attribuutteihin (erottimena tyhjämerkki) - ENTITY ~ entiteetin nimi - ENTITIES ~ luettelo entiteettien nimiä (erottimena tyhjämerkki) - NMTOKEN ~ tunnistemerkkijono - NMTOKENS ~ luettelo tunnistemerkkijonoja (erottimena tyhjämerkki) 7307015 RAKENTEISET DOKUMENTIT (kevät 2005) - ON 115

6.16 Esimerkkejä (1/2) <!ATTLIST example text CDATA #REQUIRED> <example text="ainoastaan < ja &-merkit on koodattava entiteeteillä, #$@!""/> <!ATTLIST example indexpage NMTOKEN #REQUIRED> <example indexpage="etusivu.html"/> <!ATTLIST example pet NMTOKENS #REQUIRED> <example pet="kissa koira marsu härkä muu"/> <!ATTLIST example shape (box circle line) ""> <example shape="box"/> <!ATTLIST example id ID #REQUIRED> <example id="myname"/> <!ATTLIST example href IDREF #REQUIRED> <example href="myname"/> 7307015 RAKENTEISET DOKUMENTIT (kevät 2005) - ON 116

6.17 Esimerkkejä (2/2) <!ENTITY plant-image SYSTEM "/usr/kukka.gif"> <!ATTLIST example image ENTITY #REQUIRED> <example image="plant-image"/> <!NOTATION jpgconv SYSTEM "ps2gif.exe"> <!NOTATION jpgconv SYSTEM "ps2jpg.exe"> <!ATTLIST example imagesrc NMTOKEN #REQUIRED handler NOTATION (gifconv jpgconv) #REQUIRED> <example imagesrc="ratas.ps" handler="gifconv"/> Käytännössä hyödyllisimpiä ovat CDATA, enumerated, ID/IDREF(S), NMTOKEN(S) muille löytyy käyttöä harvemmin 7307015 RAKENTEISET DOKUMENTIT (kevät 2005) - ON 117

6.18 Attribuutin arvon normalisointi (1/2) Myös attribuuttien arvot ovat jäsennettäväksi tarkoitettua tekstiä. Siispä XML-prosessorin sovellukselle välittämä merkkijono ei välttämättä ole täsmälleen sama kuin dokumenttiin kirjoitettu literaaliarvo Attribuuttien arvo siis normalisoidaan ja merkatusta literaalista prosessoidaan (XML-)sovellukselle välitettävä attribuuttiarvo Attribuuttien arvojen normalisointialgoritmi on seuraavanlainen: 1) arvon ympäriltä poistetaan lainausmerkit (tai heittomerkit) 2) merkkiviittaukset korvataan vastaavilla Unicode-merkeillä 3) entiteettiviittaukset korvataan vastaavilla merkkijonoilla (rekursio) 4) kaikki tyhjämerkit korvataan "välilyönneillä" 5) jos arvoalue on muu kuin CDATA, poistetaan tyhjämerkit merkkijonon alusta ja lopusta sekä moninkertaiset tyhjämerkit sen sisältä 7307015 RAKENTEISET DOKUMENTIT (kevät 2005) - ON 118

6.19 Attribuutin arvon normalisointi (2/2) Normalisoinnin ansiosta myös attribuuttien arvojen antamisen yhteydessä voi käyttää tyhjämerkkejä ja vaikkapa jakaa arvo usealle riville tyyliin: <!ATTLIST desc text CDATA #REQUIRED>... <desc text="tämä rivi tekstiä on Ö-luokan esimerkki. "> Edellisessä esimerkissä attribuutin text (jonka tyypiksi on annettu CDATA) arvo normalisoidaan muotoon (hakasulut on esimerkissä lisätty ainoastaan havainnollistamaan merkkijonon alku- ja loppukohtia) [Tämä rivi tekstiä on Ö-luokan esimerkki. ] Huomaa, että normalisaatio tuottaa erilaisen arvon, jos attribuutin tyypiksi olisi annettu esim. muodossa NMTOKENS: <!ATTLIST desc text NMTOKENTS #REQUIRED> [Tämä rivi tekstiä on Ö-luokan esimerkki.] 7307015 RAKENTEISET DOKUMENTIT (kevät 2005) - ON 119

6.20 Attribuutit xml:lang ja xml:space xml:space voi saada kaksi eri arvoa: default tai preserve - preserve kertoo XML-sovellukselle että sen "tulisi" ohittaa oletusarvoinen (mielivaltainen) tyhjämerkkien sievennyskäytäntönsä ja huomioida kaikki tyhjämerkit xml:lang voi saada jonkin ISO 639 kielikoodin, IANA-kielikoodin (prefix "i-", "I-") tai sovelluskohtaisen kielikoodin (prefix "x-","x-") - (periytyvä) kielikoodi kertoo (ei pakota!) elementin merkkidatan, attribuuttien arvojen ja lapsielementtien kielen (luonnollisen tai formaalin) Validi dokumentti määrittelee myös attribuutit xml:space ja xml:lang, esim. <!ATTLIST elementname xml:space (default preserve) 'preserve'> <!ATTLIST examplename xml:lang NMTOKEN 'en'> XML-standardiperhe nimeää myös muitakin attribuutteja ja esittää merkityksen näille (näihin palataan myöhemmin) 7307015 RAKENTEISET DOKUMENTIT (kevät 2005) - ON 120

6.21 Dokumentin tyyppimäärityksestä: PUBLIC (1/2) Dokumentin tyyppimääritysten vakiintuessa (kun DTD on suunniteltu, testattu ja havaittu hyväksi), on yleiskäyttöisyyden nimissä järkevää sijoittaa ulkoiset DTD-tiedostot paikkaan, josta ne ovat yleisesti saatavilla, esim. HTTP-palvelinhakemistoon ja käyttää DTD-osajoukkoja tyyliin: <?xml version="1.0"?> <!DOCTYPE mydoc SYSTEM "http://www.rakdok.com/mydoc.dtd"> Laajamittaisena tämä on kuitenkin epäkäytännöllistä ja tehotonta, etenkin jos DTD saa yleisesti hyväksyttävän standardin arvon ja kaikki viittaavat siihen! Ratkaisu: yleisesti tiedossa olevat dokumenttityypit nimetään, liitetään suoraan osaksi XML-parsereita ja DTD-osajoukko valitaan dokumentin tyyppijulistuksessa avainsanan PUBLIC avulla tyyliin: <?xml version="1.0"?> <!DOCTYPE mydoc PUBLIC "-//RAKDOK//DTD MYDOC//EN"> 7307015 RAKENTEISET DOKUMENTIT (kevät 2005) - ON 121

6.22 Dokumentin tyyppimäärityksestä: PUBLIC (2/2) PUBLIC-avainsanaa seuraava literaali ei ole nyt suora viittaus tiedostoon, vaan DTD-osajoukon julkinen tunnistenimi (public identifier), joka sisältää seuraavat kentät: - alkaa avainsanalla "ISO" jos määrityksellä on ISO-standardin arvo - "+" jos muu merkittävä standardi, "-" jos ei ole - "//" DTD:n omistajan tunnus - "//" tiedoston tyyppi (esim. "DTD) - välilyönti " " ja dokumentin nimi - "//" kielikoodi (ISO 639) 7307015 RAKENTEISET DOKUMENTIT (kevät 2005) - ON 122

6.23 <?xml...?> ja standalone Dokumentin jäsentämiseen liittyy myös tieto siitä, onko dokumentin käsittely mahdollista ilman ulkoisen DTD-osajoukon (tiedoston) lataamista Mikäli ulkoista osajoukkoa ei (kyseisen dokumentin tapauksessa) välttämättä tarvita dokumentin esiintymän lukemiseen, voidaan dokumentin alkuun lisätä riippumattomuusesittely (standalone declaration): <?xml version="1.0"encoding="iso-8859-1" standalone="yes"?> Oletusarvo on "no"; joissakin tapauksissa "yes" nopeuttaa dokumenttien käsittelyä. Arvo "yes" ei kuitenkaan ole mielekäs jos esim. - attribuuteilla on oletusarvoja tai niiden tyyppi on jokin muu kuin CDATA - käytetään muita kuin viittä oletusentiteettiä - elementtien tietomallin tulkinta ei käy elementtirakenteesta ilmi 7307015 RAKENTEISET DOKUMENTIT (kevät 2005) - ON 123

6.24 Huomautuksia elementtien ja attribuuttien määrittelystä Yksinkertainen ja hyvin määritelty tapa määritellä dokumenttiluokkia XMLsovellusten tarpeisiin, mutta... Epäsymmetria Erikoinen DTD-kieli Ei valmiita datatyyppejä, ei välineitä omien määrittelyyn Ei helppoa keinoa johtaa tietomalleja toisistaan...tietomallien määrittelyn primitiivien yksinkertaisuus ( monimutkaisuus) jne. 7307015 RAKENTEISET DOKUMENTIT (kevät 2005) - ON 124

6.25 Mitä DTD "tarkoittaa" DTD voidaan tulkita eksplisiittiseksi reunaehdoksi, joka valitsee ja kiinnittää jonkin tietyn (mielenkiintoisen) XML-dokumenttien luokan aliluokan: DOKUMENTTI- LUOKKA Z =LOOGISEN RAKENTEEN Z OMAAVAT XML- DOKUMENTIT TYYPPI-A-VALIDIT XML-DOKUMENTIT TYYPPI-C-VALIDIT XML-DOKUMENTIT TYYPPI-B-VALIDIT XML-DOKUMENTIT XML-DOKUMENTTIEN LUOKKA XML-dokumenttien luokka sisältää siis kaikki ne tekstitiedostot, jotka voidaan johtaa XML-spesifikaation kieliopista (WFC-rajoitteet huomioiden) 7307015 RAKENTEISET DOKUMENTIT (kevät 2005) - ON 125