7 DTD ja entiteetit: dokumentin fyysinen rakenne

Samankaltaiset tiedostot
7 DTD ja entiteetit: dokumentin fyysinen rakenne

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

9.16 XSLT ja nimiavaruudet (1/3): literaali oletusnimiavaruus

XML-pohjaiset rakennemäärittelyt

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

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

3 Verkkosaavutettavuuden tekniset perusteet

XML-merkkaus. Merkkidata, prosessointikomennot, kommentit

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

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

Paikkatiedot ja Web-standardit

2 XML Schema: johdanto ja rakenteiden perusteet

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

2 XML Schema: johdanto ja rakenteiden perusteet

XML johdatus: DTD. Jaana Holvikivi

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

6 DTD ja dokumentin tyyppimääritys

NELLI-Tunnis. Käyttäjän tunnistus NELLI-tiedonhakuportaalissa yleisissä kirjastoissa. Versio Ere Maijala Kansalliskirjasto

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

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

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

XML johdanto, uusimmat standardit ja kehitys

P e d a c o d e ohjelmointikoulutus verkossa

6 DTD ja dokumentin tyyppimääritys

3 XHTML-dokumenttien anatomia

6 DTD ja dokumentin tyyppimääritys

2.17 Esimerkki järkevän relaatiotietokannan rakenteesta

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

Luento 2: XML:n syntaksi

XML-metakieli, k

W3C-teknologiat ja yhteensopivuus

XML-saatavuuskysely. XML-tiedoston kuvaus. versio

XML Technologies and Applications - harjoitustyö -

2. PEHMEÄ XHTML XRAJAHTML

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

Luento 12: XML ja metatieto

Elementtien tyyppideklaraatiot

5 Merkkaus: XML protokollana

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

5 Merkkaus: XML protokollana

9 XML perusteet

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

è è è RDF-perusteet 7 RDF-perusteet

Digitaalisen median tekniikat. JSP ja XML Harri Laine 1

Johdatus rakenteisiin dokumentteihin

XML / DTD / FOP -opas Internal

3 Verkkosaavutettavuuden tekniset perusteet

W3C ja alueellinen standardointi

Helsingin yliopisto / TKTL XML-Metakieli XML Schema

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

Digitaalisen median tekniikat. JSP ja XML

Rakenteisten dokumenttien jatkokurssi, syksy 2006

Extensible Stylesheet Language (XSL)

M. Merikanto 2012 XML. Merkkauskieli, osa 2

Tutkija Mikko Salmenperä. huone: sd109. TTY / Systeemitekniikan laitos. puh: mikko.salmenpera@tut.fi

CSE-A1200 Tietokannat

12 Dokumenttiluokan toteuttamisesta

XSLT - ohjelmoinnin perusteet. Jaana Holvikivi Metropolia

10 XML ja dokumenttien tyyppimäärittely

XML and XML Schema 29

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

XML merkintäkielten perusteet. Luento 3 Pekka Aarnio

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

XML rakenteen suunnittelu. Jaana Holvikivi

XML - perusteet. Ctl230: Luentokalvot Miro Lehtonen

W3C ja Web-teknologiat

XML merkintäkielten perusteet. Luento 3 Pekka Aarnio

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

SÄHKE-hanke. Tekninen mallintaminen SÄHKE-metatietojen XML Schema

XSL-muunnokset. 9 XSL-muunnokset

Poikkeusinfo XML-rajapinnan kuvaus, rajapinnan versio 2 Seasam Group

11 XML-entiteetit. <eg> HTML-elementin <FONT> käyttöä ei suositella! </eg> <eg> HTML-elementin <FONT> käyttöä ei suositella! </eg> XML-entiteetit

StanForD-XML. Juha-Antti Sorsa, Tapio Räsänen, Vesa Imponen

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

Digitaalisen median tekniikat xhtml - jatkuu Harri Laine 1

Opiskeluoikeudet. Kaaviokuva

Digitaalisen median tekniikat xhtml - jatkuu

2 Rakenteisten dokumenttien perusteet

Rakenteisen oppimateriaalin tuottaminen verkossa esimerkki Rhaptos. Antti Auer Koordinaattori, HT Jyväskylän yliopisto Virtuaaliyliopistohanke

Ctl160 Tekstikorpusten tietojenkäsittely p.1/15

Hohde Consulting 2004

Tuomas Komulainen LUOVA LOMAKE ANALYSOINTITYÖKALU

Väitöskirja -mallipohja

XML-DOKUMENTTIEN TUOTTAMINEN. Tarkastelussa ulkoisten skeemamääritysten käyttö Office 2007 Word -ohjelmassa

XML-tietojenkäsittely

Ajatus kaiken taustalla

HTML ja CSS. Tästä se lähtee: portfolio-sivusto. Sivuston pääkansio, jonka sisällä on kaikki sivustoon kuuluvat alikansiot ja tiedostot.

Yhteentoimivuutta edistävien työkalujen kehittäminen

Luento 7: XML-ohjelmointirajapinnat

JHS XXX Julkishallinnon XML-skeemat

Eero Hyvönen. Semanttinen web. Linkitetyn avoimen datan käsikirja

9 XML perusteet

9 XML perusteet

GML-mallinnus. 1 Johdanto 1/27. Paikkatietojen mallintaminen tiedonsiirtoa varten. Liite III

Opintosuoritukset. Kaaviokuva

VERKKOSOVELLUSTEN OHJELMOINTI, JOHDATUS PHP:HEN

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

Ylläpitodokumentti. Aija. Helsinki Ohjelmistotuotantoprojekti HELSINGIN YLIOPISTO Tietojenkäsittelytieteen laitos

Kvarkki XUA: sähköisen allekirjoituksen määritys 1 (6) V 1.0. Kvarkki XUA: sähköisen allekirjoituksen määritys

4 Kommentoitu johdanto XML-maailmaan

Transkriptio:

DTD ja entiteetit: dokumentin fyysinen rakenne 7 DTD ja entiteetit: dokumentin fyysinen rakenne Tietojenkäsittelyssä kaikki tieto talletetaan jonnekin. XML-dokumenttien fyysinen rakenne määräytyy ns. entiteettien avulla. Entiteetti muodostuu aina automaattisesti kun XML-dokumentti määritellään ja talletetaan muistiin (dokumenttientiteetti). Erikseen määriteltäviä entiteettejä voidaan käyttää esim. tiedon järkevään paloitteluun. Entiteettien määrittely on osa XML:n DTD-kieltä. Validi XML-dokumentti määrittelee kaikki entiteettinsä. 7307015 RAKENTEISET DOKUMENTIT (kevät 2005) - ON 126

DTD ja entiteetit: dokumentin fyysinen rakenne 7.1 Entiteetit tiedon fyysisinä lokeroina Aina kun tietoa käsitellään, se pitää tallettaa jonnekin käsittelyn ajaksi XML 1.0 määrittelee tiedon fyysisen rakenteen entiteetti-käsitteen avulla - nimetty tietosäiliö; tiedosto-käsitteen yleistys Entiteetteihin liittyviä ominaisuuksia - sisäinen vs. ulkoinen (missä sisältö?) - teksti vs. data (jäsennetäänkö?) - (yleinen) vs. parametri (käyttö DTD- vai esiintymäosassa?) Dokumenttientiteetti 7307015 RAKENTEISET DOKUMENTIT (kevät 2005) - ON 127

DTD ja entiteetit: dokumentin fyysinen rakenne 7.2 Elementtien määrittelyn perusteet ([Yleisen] sisäisen teksti)entiteetin määritys näyttää esim. seuraavalta <!ENTITY copyright "Oy Firma Ab"> 1 2 Taas tiedon lokeroinnin idea: nimi (1) vs. sisältö (tai arvo) (2) Tekstientiteetin sisältö voi sisältää myös merkkausta; se jäsennetään auki entiteetin lukemisen yhteydessä (literaaliarvo vs. korvausteksti) - merkkiviittaukset ja parametrientiteetit avataan, muu jää esiintymäosaan Esimerkki <!ENTITY bigboys "AT&T;">... <DOC>Esimerkki suuresta yrityksestä: &bigboys;</doc> [Esimerkki erittäin suuresta yrityksestä: AT&T;] 7307015 RAKENTEISET DOKUMENTIT (kevät 2005) - ON 128

DTD ja entiteetit: dokumentin fyysinen rakenne 7.3 Oletusentiteettien määrittely, merkkaus arvona DTD määrittelee kaikki entiteettinsä, myös ns. oletusentiteetit Huomaa tuplaviittaukset määrittelyssä: <!ENTITY lt "&#60;"> <!ENTITY amp "&#38;"> <!ENTITY gt "&#62;"> <!-- tai ">" --> <!ENTITY apos "&#39;"> <!-- tai "&#39;" --> <!ENTITY quot "&#34;"> <!-- tai """ --> Esim. seuraava määrittely on aina virhe (miksi?) <!ENTITY lt "<"> Tekstientiteetit tarjoavat teknisen keinon kirjoittaa todella hämärän näköisiä dokumentteja; käytännössä kannattaa tietenkin pyrkiä yksinkertaisuuteen 7307015 RAKENTEISET DOKUMENTIT (kevät 2005) - ON 129

DTD ja entiteetit: dokumentin fyysinen rakenne 7.4 (Yleiset) ulkoiset tekstientiteetit Ulkoiset tekstientiteetit mahdollistavat XML-dokumenttien paloittelun useiksi tiedostoiksi - käyttö vain dokumentin esiintymäosassa - sisältönä hyvin muodostettu XML-dokumentti (tai sen WF osa), jonka saa lisätä entiteettiviittauksen kohtaan - ei-validoiva jäsentämisprosessi saattaa kuitenkin jättää ulkoisen tiedoston jäsentämättä ja olla lisäämättä entiteettiviittauksen kohtaan (!) Esimerkki (huomaa taas SYSTEM-avainsana ja URI-viittaus) <?xml version="1.0"?> <!DOCTYPE doc [ <!ELEMENT doc (#PCDATA)> <!ENTITY chap01 SYSTEM "Story_Chap01.xml"> ]> <doc> &chap01; </doc> 7307015 RAKENTEISET DOKUMENTIT (kevät 2005) - ON 130

DTD ja entiteetit: dokumentin fyysinen rakenne 7.5 Hyvin muodostettu tekstientiteetti Ulkoiset tekstientiteetit voivat käyttää eri merkkikoodauksia (ainakin UTF-8 ja UTF-16) Ulkoinen tekstientiteetti voi alkaa ulkoisen tekstitentiteetin XML-esittelyllä joka vastaa käytännössä XML-esittelyä ilman standalonepseudoattribuuttia, esim. Käytännössä ulkoinen tekstientiteetti vastaa XML-dokumentin hyvin muodostettua osaa (tasapainotettu merkkausrakenne mutta kenties ilman yksikäsitteistä juurielementtiä), esim. <?xml version="1.0" encoding="iso-8859-1"?> Ks. <a href="http://www.w3.org/">w3c</a> saadaksesi lisätietoja. 7307015 RAKENTEISET DOKUMENTIT (kevät 2005) - ON 131

DTD ja entiteetit: dokumentin fyysinen rakenne 7.6 (Ulkoiset) dataentiteetit XML tarjoaa myös keinon assosioida dokumentin kanssa "dataa" (voi olla myös tekstimuotoista, mutta sitä ei vain haluta nyt jäsennettävän) Viittaus notaation välittää XML-sovellukselle kuinka tiedostoa tulisi käsitellä (XML-prosessori itse ei toki viittauksen sisältöä ymmärrä) Dataentiteettejä käytetään attribuuttien välityksellä tyyliin: <?xml version="1.0"?> <!DOCTYPE DOC [ <!ELEMENT DOC (#PCDATA)> <!ATTLIST DOC LOGO ENTITY #REQUIRED> <!NOTATION JPG SYSTEM "jpgview.exe"> <!NOTATION GIF SYSTEM "gifview.exe"> <!ENTITY jpglogo SYSTEM "acme.jpg" NDATA JPG> <!ENTITY giflogo SYSTEM "acme.gif" NDATA GIF> ]> <DOC LOGO="giflogo"></DOC> Yleensä vähänlaisesti käyttöä (yleensä tietty sovellus) 7307015 RAKENTEISET DOKUMENTIT (kevät 2005) - ON 132

DTD ja entiteetit: dokumentin fyysinen rakenne 7.7 Parametrientiteetit (ulkoinen DTD-osajoukko) Yleisiä entitteettejä käytetään dokumentin esiintymäosassa, parametrientiteetit tarjoavat nimensä mukaisesti keinon parametrisoida ja paloitella dokumentin tyyppimäärittelyä (Sisäisen) parametrientiteetin määritys näyttää esim. seuraavalta <!ENTITY % cmodel "em quote"> 1 2 3 Tyypillinen käyttö, elementtien tietomallien ja attribuuttien määrittelyn sieventäminen, esim. (huomaa viittauksen merkkausrakenne; %-merkki) <!ENTITY % cmodel "em quote"> <!ENTITY % coreattrs "id ID #IMPLIED title CDATA #IMPLIED"> <!ELEMENT example (#PCDATA %cmodel;)*> <!ATTLIST example %coreattrs;> 7307015 RAKENTEISET DOKUMENTIT (kevät 2005) - ON 133

DTD ja entiteetit: dokumentin fyysinen rakenne 7.8 Parametrientiteetit: DTD:n paloittelu ja parametrisointi Parametrientiteetit mahdollistavat ulkoisen DTD-osajoukon paloittelun; tyypillinen käyttö on esim. entiteettimääritysten tai "ajureiden" kierrätys <!ENTITY % entdecl SYSTEM "namelist.ent"> %entdecl; Yhdessä ns. ehdollisten DTD-lohkojen kanssa parametrientiteetit mahdollistavat jossain määrin yleiskäyttöisten DTD-ajurien kirjoittamisen <!ENTITY % detailed "IGNORE"> <!ENTITY % sparse "INCLUDE"> <![%detailed;[ <!ELEMENT book (comments*, title, body, supplements)> ]]> <![%sparse;[ <!ELEMENT book (title, body)> ]]> 7307015 RAKENTEISET DOKUMENTIT (kevät 2005) - ON 134

DTD ja entiteetit: dokumentin fyysinen rakenne 7.9 Huomautuksia entiteettien käytöstä Hyviä (tai yleisiä) käyttökohteita - dokumentin tyyppimäärityksen parametrisointi (hallittavuuden parantamiseksi) - merkkauslyhenteet esim. nimiavaruuksien käytön yhteydessä - dokumentin paloittelu tuotantotyön helpottamiseksi Suunnittelussa kannattaa pitää huoli, että lähdedokumenttiin kirjataan vain sinne kuuluvaa tietoa (!) - tiedon & työnjako käsikirjoituksen ja sitä kuorruttavan tyylin välillä (lue: älä käytä entiteettejä tuomaan esim. ulkoasuun liittyvää vakiotekstiä rakenteiseen lähdedokumenttiin) XML Schema ei määrittele entiteettejä...toisaalta tekniikka kehittyy muilta osin 7307015 RAKENTEISET DOKUMENTIT (kevät 2005) - ON 135

DTD ja entiteetit: dokumentin fyysinen rakenne 7.10 Entiteettien tulevaisuus? XML-perheen (uusi) suositus XML Inclusions (XInclude) Version 1.0 sisältää XML-dokumenttien lohkomisessa tyypillisesti liittyvän tekniikan...jos ja kun välineiden (rikkaampi! vrt. XPtr...) XInclude -tuki toteutuu, entiteettien käyttö paloittelutehtävissä todennäköisesti vähenee (aina vain) Esimerkki: <?xml version='1.0'?> <document xmlns:xi="http://www.w3.org/2001/xinclude"> <p>this document has been accessed <xi:include href="count.txt" parse="text"/> times.</p> </document> (count.txt = [324387]) <?xml version='1.0'?> <document xmlns:xi="http://www.w3.org/2001/xinclude"> <p>this document has been accessed 324387 times.</p> </document> 7307015 RAKENTEISET DOKUMENTIT (kevät 2005) - ON 136

8 Nimiavaruudet Yleiskäyttöisten XML-sovellusten lisääntyminen johtaa tilanteeseen jossa tietyt nimet halutaan varata tiettyyn käyttöön. Sovellusten yhdistelyssä vaarana kuitenkin on että nimet menevät sovelluksissa sekaisin. Tietojenkäsittelyn 1-käsitteisyyden hengessä koneiden kontekstin tajuun ei kuitenkaan voi luottaa. XML-nimiavaruudet on tekniikka dokumenteissa esiintyvien elementtien ja attribuuttien nimien yksikäsitteiseen määrittelyyn ja käyttöön. Perusidea on suunnitella nimet Internetin domainnimistä tutun hajautetun nimeämiskäytännön mukaisesti: "jos haluat keksiä uuden yleiskäyttöisen nimen, johda nimi kotisivusi URL-osoitteesta"... 7307015 RAKENTEISET DOKUMENTIT (kevät 2005) - ON 137

8.1 Esimerkki: XInclude-sovellus Yritetään rakentaa XInclude-sovellus ilman nimiavaruuksien käyttö (ks. edellinen luku) ei onnistu!...ts. keksitään "yleiskäyttöinen komento" include jota käytetään seuraavasti: <?xml version='1.0'?> <document> <p>this document has been accessed <include href="count.txt" parse="text"/> times.</p> </document> Kysymys: mitä tapahtuu jos dokumentin sanastoon (= elementtien ja attribuuttien nimet) jo sisältyy nimi include (jossain toisessa merkityksessä)? Vastaus: tapahtuu törmäys jossa riskinä on se, että homonyymit (saman nimiset, eri asioita tarkoittavat sanat) sekoittuvat (josta seuraa pulmia) Ratkaisu: koodataan nimi include (ja muut yleiskäyttöiset nimet) riittävän pitkällä nimellä jonka rakenne sovitaan sellaiseksi että törmäykset voidaan välttää (sovitaan nyt konteksti http://www.w3.org/2001/xinclude) 7307015 RAKENTEISET DOKUMENTIT (kevät 2005) - ON 138

8.2 Peruskäsitteistä ja määrittelystä Nimiavaruuden nimi on mielivaltainen IRI-merkkijono (kansainvälinen URI) Tiettyyn sovellukseen liittyy sovelluksen sanasto Nimiavaruus on tietyn IRI-nimen (usein URL) avulla nimetty sanasto (yleensä sovellusspesifi, esim. xhtml-, xinclude-, yms. sanastot) Toisin sanoen, jos ja kun halutaan välttää törmäyksiä, sanastot suunnitellaan nimiavaruuksien avulla (=sanastot nimetään) ja viittauksissa kaikki tarpeellinen tieto merkataan XML-dokumentteihin XML-perheen suositus Namespaces in XML (1.1) määrittelee jälkimmäisen, so. miten nimiavaruuksia merkataan dokumentteihin Nimiavaruus määritellään teknisesti XML 1.0 (1.1) -suosituksen EBNFtuottosääntöjen päälle rakentuvana uutena semanttisena mutta merkkausteknisesti läpinäkyvänä kerroksena 7307015 RAKENTEISET DOKUMENTIT (kevät 2005) - ON 139

8.3 Oletusnimiavaruus Oletusnimiavaruuden syntaksi on "tuttua" jo XHTML:n yhteydestä <?xml version="1.0" encoding="utf-8"?> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/tr/xhtml1/dtd/xhtml1-strict.dtd"> <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"> <head> <title>virtual Library</title> </head> <body> <p>check <a href="http://example.org/">example.org</a>.</p> </body> </html> Ominaisuuksia: - käytännössä "XML-perheen universaali attribuutti xmlns" (vrt. xml:lang ja xml:space) - periytyy, sisäkkäinen käyttö mahdollista (mutta tarvitaan harvoin) - ei ulotu attribuuteille (ts. eivät oletuksena kuulu mihinkään nimiavar.) - voidaan kytkeä pois päältä (arvo "" ~ ei nimiavaruutta) 7307015 RAKENTEISET DOKUMENTIT (kevät 2005) - ON 140

8.4 Kvalifioitu nimiavaruus (1/2) Kvalifioidun nimiavaruuden ideana on vähentää kirjoitustyötä ja tarjota keino asettaa myös attribuuttien nimiavaruus. Vrt. esim. XSL-muunnos <?xml version="1.0" encoding="iso-8859-1"?> <xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/xsl/transform" version="1.0"> <xsl:output method="html" indent="yes" encoding="iso-8859-1"/> <xsl:template match="/"> <html> <head> <title>esimerkki</title> </head> <body> <xsl:for-each select="//album"> <p><xsl:value-of select="@artist"/></p> </xsl:for-each> </body> </html> </xsl:template> </xsl:stylesheet> 7307015 RAKENTEISET DOKUMENTIT (kevät 2005) - ON 141

8.5 Kvalifioitu nimiavaruus (2/2) Kvalifioitu nimiavaruusmäärittely tarjoaa keinon erottaa toisistaan nimiavaruuden nimen esittelyn ja sen (toistuva) soveltamisen ko. sanaston merkkauksessa, esim. <xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/xsl/transform" xmlns:xhtml="http://www.w3.org/1999/xhtml" version="1.0"> Kvalifioitu nimi koostuu nimiavaruuden prefiksistä ja nimen lokaaliosasta:...<xsl:template match="//xhtml:body">...</xsl:template> Ominaisuuksia: - voidaan käyttää myös attribuuteille - prefiksi näkyy (periytyy) kaikille lapsille (mutta kvalifioitu nimi ei pakota lasten nimiavaruutta) - prefiksi voidaan version 1.1 myötä myös kytkeä pois päältä (xmlns:p="") (käytännössä prefiksinimien "tihkuminen" on joskus ongelma) 7307015 RAKENTEISET DOKUMENTIT (kevät 2005) - ON 142

8.6 Takaisin XInclude-esimerkkiin... Ts. osaamme nyt tulkita mitä seuraava tarkoittaa <?xml version='1.0'?> <document xmlns:xi="http://www.w3.org/2001/xinclude"> <p>this document has been accessed <xi:include href="count.txt" parse="text"/> times. </p> </document>...ja tiedämme miksi seuraava (ideatasolla sama) lähestymistapa olisi "yleisesti ottaen paljon huonompi" (mieti!): <?xml version='1.0'?> <document> <p>this document has been accessed <Ossi-Nykäsen-ikioma-include-MAT-TTY-Suomi href="count.txt" parse="text"/> times. </p> </document> 7307015 RAKENTEISET DOKUMENTIT (kevät 2005) - ON 143

8.7 Huomautuksia (1/2) Nimiavaruuksia käytetään sovelluksissa runsaasti; erityisesti kaikki yleiskäyttöiset tai standardoidut XML-sovellukset esittelevät yleensä oman nimiavaruuden Nimiavaruuden nimen osoittamasta (URL-)osoitteesta ei Webistä tarvitse löytyä yhtään mitään sieltä voi kuitenkin löytyä ko. nimiavaruuden kotisivu (ns. namespace document) Nimiavaruuksien semantiikka rakentuu XML-merkkauskieliopin päälle - uusia vaatimuksia XML-prosessoreille: tuki nimiavaruuksille -...käsittely kuitenkin periaatteessa onnistuu ilman semantiikan tulkintaa, mutta tällöin dokumentin tulkinta muuttuu ratkaisevasti Käytännössä nimiavaruus tuottaa uuden (implisiittisen) solmutyypin XMLdokumentin jäsennyspuuhun - nimiavaruus vs. nimen lokaaliosa 7307015 RAKENTEISET DOKUMENTIT (kevät 2005) - ON 144

8.8 Huomautuksia (2/2) Nimiavaruuksien ja erityisesti kvalifioitujen nimien käyttö monimutkaistaa dokumenttien käsittelyä ja hankaloittaa esim. dokumenttien paloittelua (lue: älä tee ohjelmallisesti ilman oikean XML-prosessorin tukea)... <e x1:a="1" x2:a="2" /> Huomaa että tarkkaan ottaen prefiksinimiin liittyvä merkkijonotieto kuuluisi loogisesti vain merkkauskielioppiin, eikä sen tulisi näkyä sovellukselle... -...mutta käytännössä prefiksinimiä käytetään kuitenkin esim. XPathlausekkeissa (vrt. XSL-esimerkki edellä) ja tietyissä Semanttisen Webin sovelluksissa (mikä on tietyssä mielessä varsin ikävää) -...tarkoittaa että tietyt prefiksinimet ovat merkittäviä käytännössä 7307015 RAKENTEISET DOKUMENTIT (kevät 2005) - ON 145

8.9 DTD ei tue nimiavaruuksia XML-skeemat Nimiavaruudet tekevät ratkaisevan pesäeron SGML:ään Erityisesti XML 1.0 (1.1):een sisältyvä DTD-kieli ei tarjoa semanttista tukea nimiavaruuksille; käytännössä DTD-kielen käyttö nimiavaruuksien yhteydessä on niin kömpelöä että hommaan ei yleensä edes kannata ryhtyä - lokaalin sovelluksen kääriminen on kuitenkin mekaanisesti helppoa Suositus XML Schema (XML-skeemat) määrittelee DTD:tä yleisemmän dokumenttien tyyppimäärityskielen - XML-kielioppi, tuki nimiavaruuksille ja tietotyyppien yhdistelylle, johdetut tietotyypit, säännönmukaiset lausekkeet, datatyypit,... Ei syvennytä tällä kurssilla, aiheeseen palataan Rakenteisten dokumenttien jatkokurssilla (osana rakenteisen kuvailutiedon laajempaa viitekehystä) 7307015 RAKENTEISET DOKUMENTIT (kevät 2005) - ON 146

8.10 XML-skeemat, esimerkki (1/2) Esimerkkidokumentti, muistio <?xml version="1.0" encoding="iso-8859-1"?> <!DOCTYPE muistio SYSTEM "muistio.dtd" > <muistio pvm="2005-01-20"> <otsikko>xml-koulutus</otsikko> <asia>muista ilmoittautua koulutukseen 28.6.2005.</asia> <huom>katso ennakkotehtävät.</huom> </muistio> Sopiva tyyppimäärittely (DTD) <!ELEMENT muistio (otsikko, asia?, huom+) > <!ATTLIST muistio pvm CDATA #REQUIRED > <!ATTLIST muistio henk (on jfk th) #IMPLIED > <!ELEMENT otsikko (#PCDATA) > <!ELEMENT asia (#PCDATA) > <!ELEMENT huom (#PCDATA) > 7307015 RAKENTEISET DOKUMENTIT (kevät 2005) - ON 147

8.11 XML-skeemat, esimerkki (2/2) <xsd:schema xmlns:xsd="http://www.w3.org/2001/xmlschema"> <xsd:element name="muistio" type="muistiotype"/> <xsd:complextype name="muistiotype"> <xsd:sequence> <xsd:element name="otsikko" type="xsd:string"/> <xsd:element name="asia" type="xsd:string" minoccurs="0"/> <xsd:element name="huom" type="xsd:string" maxoccurs="unbounded"/> </xsd:sequence> <xsd:attribute name="pvm" type="xsd:date" use="required"/> <xsd:attribute name="henk" type="henkilottype" use="optional"/> </xsd:complextype> <xsd:simpletype name="henkilottype"> <xsd:restriction base="xsd:string"> <xsd:enumeration value="on"/> <xsd:enumeration value="jfk"/> <xsd:enumeration value="th"/> </xsd:restriction> </xsd:simpletype> </xsd:schema> 7307015 RAKENTEISET DOKUMENTIT (kevät 2005) - ON 148

8.12 Lopuksi Nimiavaruuksien merkkauskielioppi on melko ikävän näköistä; sovelluksissa asialla on kuitenkin vähänlaisesti merkitystä Nimiavaruuksien myötä puitteet XMLtietojenkäsittelyn abstrahoinnille ja rikkaalle sovellusperheelle ovat nyt olemassa Lue: tähän asti XML-perheen esittely on tavallaan ollut "itsestään selvien" perustietojen läpikäymistä tästä eteenpäin suunnistamisen vaihtoehdot kasvavat räjähdysmäisesti (potentiaalisesti hyödyllisiä sovelluksia löytyy miltei kaikista kuviteltavissa olevista sovellusalueista) Hypermedian kontekstissa ja maksimihyödyn hengessä, valitsemme rakenteisen tiedon julkaisupainotteisen tien... 7307015 RAKENTEISET DOKUMENTIT (kevät 2005) - ON 149