Esimerkki: ulkoisen tyylitiedoston valinta median mukaan CSS2:n @importkomennolla:



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

7 Kommentoitu johdanto XML:ään

Johdatus rakenteisiin dokumentteihin

Median valinta. Median Esimerkki: ulkoisen tyylitiedoston valinta median mukaan: tai vaihtoehtoisesti, esim:

11.4. Context-free kielet 1 / 17

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

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

Luento 12: XML ja metatieto

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

CSS - tyylit Seppo Räsänen

12 Dokumenttiluokan toteuttamisesta

8. Kieliopit ja kielet 1 / 22

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

Digitaalisen median tekniikat. Luento 3: CSS

TIEA241 Automaatit ja kieliopit, syksy Antti-Juhani Kaijanaho. 3. joulukuuta 2015

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

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

Lisätehtävät. Frantic 2015 sivu 1

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

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

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

Ajatus kaiken taustalla

Automaatit. Muodolliset kielet

Rajoittamattomat kieliopit (Unrestricted Grammars)

8. Kieliopit ja kielet

3 Verkkosaavutettavuuden tekniset perusteet

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

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

Kylänetti projektin sivustojen käyttöohjeita Dokumentin versio 2.10 Historia : 1.0, 1.2, 1.6 Tero Liljamo / Deserthouse, päivitetty 25.8.

Muodolliset kieliopit

Cascading Style Sheets

815338A Ohjelmointikielten periaatteet Harjoitus 2 vastaukset

XML & CSS. WWW-sovellus??

Todistus: Aiemmin esitetyn mukaan jos A ja A ovat rekursiivisesti lueteltavia, niin A on rekursiivinen.

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

S BAB ABA A aas bba B bbs c

P e d a c o d e ohjelmointikoulutus verkossa

Alkuun HTML5 peliohjelmoinnissa

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

WWW-sivujen Verkkosivujen ulkoasu (CSS)

Johdatus Ohjelmointiin

T Syksy 2002 Tietojenkäsittelyteorian perusteet Harjoitus 8 Demonstraatiotehtävien ratkaisut

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

9 XML perusteet

5 Merkkaus: XML protokollana

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

Avoimet standardit ja asiakirjamuodot Suomen julkisessa hallinnossa: teoriasta käytäntöön

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

Luonnolliset vs. muodolliset kielet

Cascading Style Sheets

valitsin on useimmiten html-elementti, jolle tyyli halutaan luoda

5 Merkkaus: XML protokollana

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

UML-kielen formalisointi Object-Z:lla

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

selector { CSS property: value; property2: value; Code Camp for Girls Sonja Jaakkola & Sanna Nygård

ICS-C2000 Tietojenkäsittelyteoria

Ongelma(t): Miten jollakin korkeamman tason ohjelmointikielellä esitetty algoritmi saadaan suoritettua mikro-ohjelmoitavalla tietokoneella ja siinä

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

Verkkosivut perinteisesti. Tanja Välisalo

ICS-C2000 Tietojenkäsittelyteoria. Tähän mennessä: säännölliset kielet. Säännöllisten kielten pumppauslemma M :=

Tiedon esitys tietokoneessa. Jyry Suvilehto T Johdatus tietoliikenteeseen ja multimediatekniikkaan kevät 2010

Java-kielen perusteet

Äärellisten automaattien ja säännöllisten kielten ekvivalenssi

Laskennan rajoja. TIEA241 Automaatit ja kieliopit, syksy Antti-Juhani Kaijanaho. 10. joulukuuta 2015 TIETOTEKNIIKAN LAITOS.

Täydentäviä muistiinpanoja kontekstittomien kielioppien jäsentämisestä

Rakenteiset dokumentit Mitä hyötyä niistä on?

Tutoriaaliläsnäoloista

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

Hahmon etsiminen syotteesta (johdatteleva esimerkki)

Tyylien käyttö. <LINK href="mystyle.css" rel="stylesheet" type="text/css"> 5 WWW-hypermedian perusta: HTML

Pinoautomaatit. Pois kontekstittomuudesta

Verkkosisällön saavutettavuusohjeet 2.0: hyviä ohjeita monimuotoisen sisällön suunnitteluun ja arviointiin

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

XML johdanto, uusimmat standardit ja kehitys

Vasen johto S AB ab ab esittää jäsennyspuun kasvattamista vasemmalta alkaen:

Yhteydettömät kieliopit [Sipser luku 2.1]

Chomskyn hierarkia ja yhteysherkät kieliopit

on rekursiivisesti numeroituva, mutta ei rekursiivinen.

Rajoittamattomat kieliopit

Täydentäviä muistiinpanoja jäsennysalgoritmeista

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

3 WWW-hypermedian perusta: HTML

CSS-kielen avulla määritellään HTML-dokumentin tyyli. CSS avulla voidaan tarkemmin määritellä eri elementtien ominaisuuksia.

Ulkoasun muokkaus CSS-tiedostossa

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

Laskennan teoria (kevät 2006) Harjoitus 3, ratkaisuja

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

Ei-yhteydettömät kielet [Sipser luku 2.3]

T Syksy 2006 Tietojenkäsittelyteorian perusteet T Harjoitus 7 Demonstraatiotehtävien ratkaisut

jäsennyksestä TIEA241 Automaatit ja kieliopit, syksy 2016 Antti-Juhani Kaijanaho 29. syyskuuta 2016 TIETOTEKNIIKAN LAITOS Kontekstittomien kielioppien

Täydentäviä muistiinpanoja laskennan rajoista

TIEA241 Automaatit ja kieliopit, kesä Antti-Juhani Kaijanaho. 10. kesäkuuta 2013

Paikkatiedot ja Web-standardit

Jäsennysaiheesta lisää Täydentäviä muistiinpanoja TIEA241 Automaatit ja kieliopit, syksy 2016

Yhteydettömän kieliopin jäsennysongelma

Luku 6. Dynaaminen ohjelmointi. 6.1 Funktion muisti

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

Laskennan mallit (syksy 2010) Harjoitus 8, ratkaisuja

Pinoautomaatit. TIEA241 Automaatit ja kieliopit, kesä Antti-Juhani Kaijanaho. 6. kesäkuuta 2013 TIETOTEKNIIKAN LAITOS. Pinoautomaatit.

Transkriptio:

CSS2 6 CSS2 CSS2 laajentaa CSS1:stä tuoden muassaan ratkaisun osaan edellisistä ongelmista, CSS2:n uusia piirteitä ovat esim: - media-valitsin (aural, braille, embossed, handheld, print, projection, screen, tty, tv, all) - tulostamiseen liittyvät uudet ominaisuudet (sivun koko ja asemointi, marginaalit, rivinkatkaisun hallinta, sivukohtaiset säännöt) - automatisoitu sisällön tuottaminen (tiedon lisääminen elementtien yhteyteen, sekvenssit, attribuuttiarvot) - uudet valitsimet (valinta elementin lapsen ja attribuutin perusteella, valinta vierekkäisten elementtien perusteella, valinta taulukkokontekstin perusteella) - uusia ominaisuuksia (systeemikirjasimet, kirjasimien ominaisuudet, kohdistin) - uusia objekteja (taulukot) Tarkastellaan joitakin CSS2:n tärkeimpiä uutuuksia esimerkkien kautta: 73275 RAKENTEISET DOKUMENTIT (kevät 2004) luentorunko ON & JH 106

CSS2 Median valinta Median valinta: @media-sääntö: @media print { background: white; color: blue } Esimerkki: ulkoisen tyylitiedoston valinta median mukaan CSS2:n @importkomennolla: @import url(tyylikas.css) projection, tv tai vaihtoehtoisesti HTML-kielen link-elementin media-attribuutilla, esim: <head> <title>dokumentin monikanavajulkaisu</title> <link rel="stylesheet" type="text/css" media="screen, projection" href="perustyyli.css"/> <link rel="stylesheet" type="text/css" media="print" href="tulostustyyli.css"/> </head> 73275 RAKENTEISET DOKUMENTIT (kevät 2004) luentorunko ON & JH 107

CSS2 Media-valinnan yksityiskohta: tulostaminen @page-sääntö: @page { size: landscape; margin-top: 10%; margin-right:20%; margin-bottom: 10%; margin-left:20%; } Pseudoluokat left ja right: @page:left { background:white; color:red; } Rivinkatkaisu: H1 { page-break-before: always; } MYROWS { page-break-inside: avoid; } Nimetyt sivut: @page galleria { size: portrait } img { page:galleria; page-break-inside:avoid } CSS esittelee oleellisesti siis uuden "pseudoelementin": sivun, jolle määritellään suorakaideominaisuuksia muiden lohkojen tavoin 73275 RAKENTEISET DOKUMENTIT (kevät 2004) luentorunko ON & JH 108

CSS2 Media-valinnan yksityiskohta: aural media Mediavalitsin "aural" tuottaa kolmiulotteisen, aikaan sidotun äänimaailman 1) useita puhujia tai kertojia, joilla CSS2:n määrittämiä ominaisuuksia ja sijainti 2) tämän lisäksi tehoste- ja taustaääniä Esimerkkejä : H1, H2, H3, H4, H5, H6 { voice-family: paul; stress: 20; richness: 90; cue-before: url("ping.au") } P.heidi { azimuth: center-left } P.peter { azimuth: right } P.goat { volume: x-soft } BLOCKQUOTE.sad { play-during: url("viulut.wav") } P.comment { azimuth: behind } /* 180deg */ CITE { elevation: above } 73275 RAKENTEISET DOKUMENTIT (kevät 2004) luentorunko ON & JH 109

CSS2 Automaattinen sisältö CSS2 mahdollistaa myös automaattisen sisällön tuottamisen elementtien yhteyteen, mahdollista on myös lisätä elementtien esitysvaiheessa näkyville (ko. elementin) attribuuttiarvoja Esimerkkejä: BODY:after { /* pseudoelementti "after" */ content: "The End"; display: block; margin-top: 2em; text-align: center; } H1:before { /* autom. laskuri: "1." jne. */ content: "Chapter " counter(chapter) ". "; counter-increment: chapter; /* Add 1 to chapter */ counter-reset: section; /* Set section to 0 */ } H2:before { /* autom. laskuri: "1.1." jne. / content: counter(chapter) "." counter(section) " "; counter-increment: section; } 73275 RAKENTEISET DOKUMENTIT (kevät 2004) luentorunko ON & JH 110

CSS2 Systeemikirjasimet CSS2:n huomionarvoinen ominaisuus on kirjasimen valinta, lataaminen palvelimelta, asteittainen esittäminen ja Unicode-muunnosvektorin esittely Esimerkkejä fontin määrittämisestä: @font-face: @font-face { font-family: "Robson Celtic"; src: url("http://site/fonts/rob-celt") } @font-face { font-family: "Swiss 721"; src: url("swiss721lt.pfr"); /* Swiss 721 light */ font-style: normal, italic; font-weight: 200; } @font-face { font-family: Excelsior; src: local("excelsior EastA Roman"), url("http://site/ear") format("intellifont"); unicode-range: U+100-220; /* Latin Extended A and B */ } H1 { font-family: "Robson Celtic", serif } /* let's use RC */ 73275 RAKENTEISET DOKUMENTIT (kevät 2004) luentorunko ON & JH 111

CSS2 Taulukot Sivun elementtien asemointi helpottuu taulukkojen myötä, käytännössä asia hoituu elementtien uudentyyppisten display-arvojen avulla: inline block list-item run-in compact marker table inline-table table-row-group table-header-group table-footergroup table-row table-column-group table-column table-cell table-caption none Esimerkki: olkoon määritelty (esim. XML-)taulukko: <stack> <row>tämä on <d>ylin</d> rivi.</row> <row>tämä on <d>alin</d> rivi.</row> </stack> Tällöin CSS-määrittely voisi olla esim: stack { display: inline-table } row { display: table-row } d { display: inline; font-weight: bolder } 73275 RAKENTEISET DOKUMENTIT (kevät 2004) luentorunko ON & JH 112

CSS2 Huomautuksia CSS1 on jo varsin hyvin käytössä (NN4.5+, IE4.01+, Opr3.6+) - ennen laajamittaista käyttöönottoa kannattaa tosin tutustua testeihin tai systemaattisesti kokeilla omia dokumentteja kohdeselaimissa CSS2:sta tuetaan yleisesti huomattavasti heikommin; osa ominaisuuksista vasta tulossa, kun taas osa ominaisuuksista (esim. mediavalitsimet) viittaa selkeästi tiettyihin erityissovelluksiin Kohtuullisen ohjelmistotuen ansiosta CSS on käytössä myös XMLsovelluksissa CSS rooli jatkossa on kuitenkin epävarma: - CSS on helppo ja nopea tekniikka, hyvin tuettu, mutta samalla rajoitettu (ei loppujen lopuksi erota hyvin sisältöä ja ulkoasua) - olemassa on parempia (monipuolisempia) standardeja, joita tuetaan CSS:n kanssa rinta rinnan (läh. XSL) Näppituntuma: CSS kokee samantyyppisen elonkaaren kuin HTML:kin, mutta lyhyemmällä aikavälillä (CSS3:n hyvyys ratkaissee tämän) 73275 RAKENTEISET DOKUMENTIT (kevät 2004) luentorunko ON & JH 113

CSS2 Katso myös W3C:n tyylisivut (ks. http://www.w3.org/style/css/) CSS1-suositus (ks. http://www.w3.org/tr/rec-css1) CSS2-suositus (ks. http://www.w3.org/tr/rec-css2/) Unicode ("Unicode & HTML", ks. http://www.w3.org/international/ounicode.html ja "Unicode home page", ks. http://www.unicode.org/) Käytännönläheinen CSS(2)-tutoriaali, "Everything you ever wanted to know about Style" (ks. http://www.westciv.com/style_master/academy/css_tutorial/index.html) Käytännössä annattaa tutustua myös testeihin selainten CSS-ominaisuuksista (ks. esim. "CSS1 Support Chart " http://devedge.netscape.com/library/xref/2003/csssupport/css1/mastergrid.html) CSS:n tarina ei suinkaan (todennäkoisesti) pääty CSS2:een, vaan CSS3 on jo tekeillä (ks. http://www.w3.org/style/css/current-work) 73275 RAKENTEISET DOKUMENTIT (kevät 2004) luentorunko ON & JH 114

7 Kommentoitu johdanto XML:ään Kommentoitu johdanto XML:ään HTML:n ja div- ja span-elementtien luonteva käyttöönotto dokumenttien rakenteen täsmentämisessä on merkki siitä, että itse keksityille elementeille on järkevää käyttöä Yhdessä tyylien käytön kanssa tämä tarjoaa elementtien identifioinnin ja luokittelun muodossa paitsi mahdollisuuden dokumentin ulkoasun irrottamiseen sen sisällöstä, myös mahdollisuuden kokonaan uudentyyppisten rakenne-elementtien käyttöönottoon HTML:n sisällä - uudet elementit, joilla ei ole HTML:n semanttista painolastia - merkitys määräytyy käyttötarkoituksen tai ulkoasun määrittelyn perusteella Esimerkki: <div class="userrecord" id="147"> <div class="namefield">oskari Olematon</div> <div class="emailfield">oskari@olematon.fi</div> <div class="agefield">34</div> <div class="commentfield">outo lintu</div> <div class="piprintf>%s%s%d%s\n</div> </div> 73275 RAKENTEISET DOKUMENTIT (kevät 2004) luentorunko ON & JH 115

Kommentoitu johdanto XML:ään Kuitenkin esim. elementtien div ja span käyttö on kömpelöä ja rajoittuu vain HTML-kieleen Uusien elementtimääritysten lisääminen (HTML-dokumentti)kieleenkään ei auta; joku keksii aina tarpeellisen elementin, jota kielessä ei vielä ole joten ilmeisesti yhden ja (semanttisesti) yleispätevän merkintäkielen suunnittelu "GPML" (hypoteettinen "General Purpose Markup Language") ei ole tarkoituksenmukaista tai edes mahdollista Kuitenkin uudentyyppisiä rakenne-elementtejä tarvitaan usein käytännön sovelluksissa. Mikä ratkaisuksi? Vastaus: staattisen ja valmiin merkintäkielen sijasta tarjotaan suunnittelijoille mahdollisuus omien elementtien määrittelyyn ja käyttöönottoon jonkin yksittäistä merkintäkieltä yleisemmän kielen määrittelyjärjestelmän puitteissa Ratkaisu: XML (ja dokumenttien tyyppimäärittely) Ratkaisun hyödyt: - kokonaan omannimiset elementit ja attribuutit joilla haluttu merkitys - mahdollisuus dokumenttien loogisen elementtirakenteen oikeellisuuden suoraviivaiseen tarkistamiseen 73275 RAKENTEISET DOKUMENTIT (kevät 2004) luentorunko ON & JH 116

Kommentoitu johdanto XML:ään Oma merkintäkieli? Täysin uudentyyppisen (ei-triviaalin) merkintäkielen kehittäminen on työlästä, eikä työhön kannata ryhtyä ilman hyviä perusteluita! Käytännössä pelkän merkintäkielen lisäksi tarvitaan yleensä muutakin, esim. - editori, jolla dokumentteja voidaan tuottaa ja merkata - ohjelma, joka merkattuja dokumentteja osaa käsitellä - sovelluksia, joissa merkintäkielellä on käyttöä - yhteisö, joka ko. merkintäkielen suostuu ottamaan käyttöön Homma helpottuu huomattavasti, jos pyörää ei lähdetä keksimään uudestaan, vaan uusi merkintäkieli suunnitellaan jonkin standardoidun merkintäkielten kuvausjärjestelmän puitteissa Yleisessä tapauksessa kuvauskielten syntaksin ja tyyppimäärittelyjen sijaan puhutaan skeemoista ([schema]), joilla tarkoitetaan tiedon esitysrakenteiden abstrakteja malleja tai kuvausmenetelmiä (XML:n DTD-määrittelyitä voidaan pitää skeemojen erikoistapauksena - tähän palataan myöhemmin) 73275 RAKENTEISET DOKUMENTIT (kevät 2004) luentorunko ON & JH 117

Kommentoitu johdanto XML:ään Käytännössä riittävän hyvän dokumenttien merkintäkielen (tiedon kuvauskielen) kehittäminen onnistuu esim. SGML:n tai XML:n avulla Tällöin käytössä on jo valmiina: - merkintäkielen perussyntaksi, jolla esim. elementtimerkkaus erotetaan muusta dokumentista (esim. tagit ja kommentit) - kuvauskieli, jolla dokumenttien rakenne, elementtien nimet ja ominaisuudet ilmoitetaan (esim. DTD-kuvauskieli) - ratkaisu perusmerkistön ja erikoismerkkien koodausongelmaan (esim. Unicode) - editoreita, ohjelmia, sovelluksia ja valmiiksi merkittyä dataa - muita käyttäjiä! Yhteisöllisen kytkennän kautta standardeihin pidättäytymisestä saadaan myös muuta hyötyä: - valmiita dokumenttien rakennemalleja - opetusta ja ohjeita työkalujen ja suunnittelumenetelmien käyttöön - esimerkkejä ja kokemuksia eri ratkaisujen toimivuudesta 73275 RAKENTEISET DOKUMENTIT (kevät 2004) luentorunko ON & JH 118

Kommentoitu johdanto XML:ään Mitä merkintäkieleltä halutaan? Perimmäisenä ideana on tallettaa tietoa ja tietoa tiedosta sopivan koodausjärjestelmän puitteissa sopivalla tarkkuudella esitettynä Tiedolla tarkoitetaan tässä yhteydessä niitä asioita, joita halutaan käsitellä dokumenttimuodossa. Tieto sinänsä on sopimuksenvarainen asia. Tiedolla tiedosta (tiedon kuvaus, metatieto tai metainformaatio) tarkoitetaan tässä "eksplisiittistä rautalankaselitystä siitä, mitä merkitystä tiedolla on tai mitä se tässä asiayhteydessä tarkoittaa". Huomaa, erityisesti että - eri sovelluksissa samasta tiedosta saatetaan tarvita hyvinkin erilaista kuvausta (vrt. dokumentin tulostaminen vs. tiedon etsiminen) - tietokoneen näkökulmasta metatieto ainoastaan lokeroi ja numeroi tietoa sekä esittelee relaatioita eri tietoalkioiden välillä Koodausjärjestelmä on se menetelmä, jolla kaksi edellistä voidaan esittää esim. tietokoneessa (käytössä on toki yhtä aikaa useita eritasoisia koodauksia, mutta yleensä näistä erikseen mainitaan vain merkkikoodaus) Lopulta sopiva tarkkuus löydetään sovelluskohtaisesti kokeilemalla 73275 RAKENTEISET DOKUMENTIT (kevät 2004) luentorunko ON & JH 119

Kommentoitu johdanto XML:ään XML - mikä se on? Extensible Markup Language (XML) 1.0 (Second Edition) on virallinen W3C suositus (W3C Recommendation 6 October 2000) XML määrittelee (teksti)dokumenttien loogisen ja fyysisen rakenteen sekä tarjoaa mahdollisuuden tietyn (rajoitetun) elementtirakenteen omaavien, tietyntyyppisten dokumenttiluokkien kuvaamiseen Oleellisesti XML 1.0 määrittelee XML-dokumenttien luokan, ts. sen, millaisia XML-dokumentit ovat (sekä sen, miten XML-dokumentteja tulee prosessoida) XML on SGML:n osajoukko (tästä seuraa ) XML-spesifikaatio kuvaa XML-dokumentin geneerisen rakenteen EBNFnotaation avulla (Extended Backus-Naur Form), mikä käytännössä tarkoittaa tuottosääntöinä annettua kontekstivapaan kielen kielioppimäärittelyä - karkeasti sanottuna dokumentti on XML-dokumentti, mikäli se voidaan johtaa spesifikaation document-tuottosäännöstä (+reunaehdot) - itse XML-dokumentit näyttävät lähinnä erikoisilta HTML-dokumenteilta (EBNF:ää ei käytetä yksittäisten dokumenttien merkkaamiseen!) 73275 RAKENTEISET DOKUMENTIT (kevät 2004) luentorunko ON & JH 120

Kommentoitu johdanto XML:ään Esimakua tulevasta: yksinkertainen XML-dokumentti <?xml version="1.0"?> <!DOCTYPE example SYSTEM "hellow.dtd"> <example> <title>hei maailma!</title> <content>ensimmäinen virallinen XML-dokumentti</content> <author>nykänen</author> <date/> </example> Esimerkki näyttää tutulta: - elementit ja entiteetit näyttävät samalta kuin ennenkin - tuttu sisäkkäinen elementtirakenne - esimerkin toisella rivillä kerrotaan dokumentin tyyppi (vrt. HTML) Uuttakin on mukana: - uudentyyppisiä (nimisiä) elementtejä (example ja date)? - uudennäköisiä koodeja ja uutta notaatiota ("?"-merkki ja "<date/>"-tagi)? 73275 RAKENTEISET DOKUMENTIT (kevät 2004) luentorunko ON & JH 121

Kommentoitu johdanto XML:ään XML-spesifikaation suunnittelukriteerit XML:ää kehittäneet XML Working Group (vanha SGML Editorial Review Board) ja XML Special Interest Group (vanha SGML Working Group) asettivat XML:n kehitystyölle seuraavia tavoitteita: - suoraviivainen käyttö Internetin yli - laaja sovellusalue (ei esim. laite- tai ohjelmistoriippuvuutta) - yhteensopivuus SGML:n kanssa - XML:ää käsittelevien ohjelmien kirjoittamisen helppous - vähän valinnaisia ominaisuuksia - dokumenttien luettavuus ja selkeys (myös ihmisten näkökulmasta) - määrityksen tulee valmistua nopeasti (työ alkoi toukokuussa 1996) - määrityksen suunnittelun on oltava tarkkaa ja huolellista - dokumenttien tekemisen helppous - minimalistiseen merkkauksen ei pyritä (esim. pitkät nimet ovat sallittuja) 73275 RAKENTEISET DOKUMENTIT (kevät 2004) luentorunko ON & JH 122

Kommentoitu johdanto XML:ään Mihin XML:ää voi käyttää? Yksinkertaisimmillaan XML soveltuu HTML:n manttelinperijäksi, ts. kaikki, mitä HTML:llä voidaan tehdä, voidaan (periaatteessa) tehdä paremmin XML:llä (tai oikeastaan XML-standardiperheellä, kunhan selainten XML-tuki tulee kuntoon) XML ei kuitenkaan ole rajoittunut vain ja ainoastaan esitettäväksi tarkoitettujen dokumenttien merkkaamiseen, vaan XML-dokumentteja voi käyttää myös muuhun (melkeinpä mihin tahansa) Koska XML-dokumentit ovat unikoodattuja laite- ja ohjelmistoriippumattomia rakenteellisia tekstidokumentteja, soveltuu XML hyvin esim. - tiedon arkistointiin, erityisesti tietokantojen dokumenttiesityksen muodossa - tiedon siirtoon XML-tekstimuodossa eri ohjelmien välillä Abstraktin perusluonteensa ansiosta dokumentit voivat sisältää lähes mitä tahansa, esim: - tuttua tekstimuotoista rakenteellista tietoa - eksplisiittisesti esitettyjä relaatioita tiedostojen välillä (esim. entiteettiviittausten avulla) 73275 RAKENTEISET DOKUMENTIT (kevät 2004) luentorunko ON & JH 123

Kommentoitu johdanto XML:ään Koska XML tarjoaa mahdollisuuden myös dokumenttien täsmälliseen tyypittämiseen, soveltuu XML myös esim. - tiedon esitysmuodon standardointiin (skeemojen määritys) - vankan pohjan dokumenttien kirjoittamisen perustaksi (dokumenttirakenteen muotovirheiden tunnistaminen) XML-ohjelmien ja XML-prosessorirajapintojen ansiosta XML tarjoaa myös esimerkiksi: - mahdollisuuden XML-pohjaisten toisen tason metakielten määrittelyyn - valmiita mekanismeja (monimutkaisten) dokumenttien helppoon käyttöönottoon ohjelmankehityksen näkökulmasta On erittäin tärkeää huomata, että toisin kuin esim. HTML-dokumentilla, XMLdokumentilla ei ole selkeää oletussemantiikkaa tai ulkoasua XML-dokumentti sellaisenaan ei tarkoita mitään eikä näytä sen enemmältä kuin se on: jonkin tyyppimäärityksen puitteissa merkattu tekstidokumentti, johon mahdollisesti liitetään ulkoisia entiteettejä 73275 RAKENTEISET DOKUMENTIT (kevät 2004) luentorunko ON & JH 124

Kommentoitu johdanto XML:ään XML-dokumentin johonkin järkevään käyttämisen vaihtoehtoja on kaksi: - XML-dokumentti esitetään jonkin tyylikielen avulla - XML-dokumentti tulkitaan jonkin prosessoriohjelman avulla Ilmeisesti näistäkin ensimmäinen on ainoastaan toisen erikoistapaus (joskin merkittävä sellainen) Kaiken kaikkiaan XML on tavallaan samantyyppinen työkalu kuin jokin ohjelmointikieli; siinä missä ohjelmointikieli tarjoaa eväät tietorakenteiden kuvaamiseen algoritmien kehittämisen näkökulmasta, tarjoaa XML mahdollisuuden tietorakenteiden kuvaamiseen dokumenttijärjestelmien kehittämisen näkökulmasta;...se mitä tietokoneohjelma tai XML-dokumentti tarkoittaa, riippuu viime kädestä ohjelmaa tai dokumenttia käsittelevästä järjestelmästä (tulkki, prosessori tai muu lukija, viime kädessä ihminen) - vrt. mitä tarkoittaa: person.name = "Oskari"; person.address = "Oskari"; Entäpä mitä tarkoittaa: <person><name>oskari</name><address>tampere</address></person> 73275 RAKENTEISET DOKUMENTIT (kevät 2004) luentorunko ON & JH 125

Kommentoitu johdanto XML:ään Mihin XML:ää ei pidä käyttää? Kuten mitä tahansa muutakaan teknistä ratkaisua tai järjestelmää, ei XML:kään kannata ottaa väkisin käyttöön, "koska XML on hieno teknologia" - ehjää ei tarvitse korjata! XML toki tarjoaa hyviä ominaisuuksia tiedon esittämiseen, mutta ei suinkaan ole ainoa vaihtoehto, onhan olemassa - oikeita tietokantoja - muita sovellusspesifejä kuvauskieliä -...ja lukemattomia sovelluksia sekä tonneittain tietoa näissä muodoissa XML ei myöskään ole paras ratkaisu, jos esim. - pyritään mahdollisimman tiiviiseen dokumenttiformaattiin - tieto halutaan salakirjoittaa - tietoa on luontevinta käsitellä jossain muussa kuin tekstimuodossa 73275 RAKENTEISET DOKUMENTIT (kevät 2004) luentorunko ON & JH 126

Kommentoitu johdanto XML:ään Kuitenkin näissäkin tapauksissa XML voi tarjota luontevan tavan nimetä ja kehystää tietoa esim. tiedonsiirrossa tarvittavalla metatiedolla Perus-XML:ään liittyy myös omia puutteitaan: - elementtien rakennemäärittelyt ovat yksinkertaisia, eikä attribuuttimalleja ole oikeastaan lainkaan (tätä on mahdoton kiertää) - elementtien sisältö on käytännössä tyypitöntä tekstiä (tämän kiertäminen on erittäin työlästä) - jos käsiteltävä tieto sisältää hankalia merkkijonoja (esim. tiheästi sikin sokin merkkijonoja "<" ja "]]>"), dokumenteista tulee erittäin vaikealukuisia - ohjelmointiin tai DHTML:ään tottuneille XML on kaiken kaikkiaan varsin karu kieli (tämä on tietenkin myös XML:n voima) Osa näistä ratkeaa ottamalla XML:n rinnalle käyttöön muita XMLstandardiperheen määrityksiä 73275 RAKENTEISET DOKUMENTIT (kevät 2004) luentorunko ON & JH 127

Kommentoitu johdanto XML:ään Mitä XML:n käyttämiseen tarvitaan? XML 1.0 on pohjimmiltaan varsin abstrakti ja yleiskäyttöinen määritys, joka kertoo, millaisia XML-dokumentit ovat;...joten minimissään XML:n hyötykäyttöön ei tarvita mitään ylimääräistä, vaan spesifikaatioita voidaan käyttää samaan tapaan kuin esim. kirjaa "näin kirjoitan helppolukuisia ja yksikäsitteisiä tekstidokumentteja": - XML 1.0 = ohje tietynmuotoisten dokumenttien kirjoittamisesta - standardi ja valmiiksi mietitty tapa merkitä dokumentteja Kuitenkin käytännössä XML:stä saadaan suurin hyöty irti, kun valitun tekstinkäsittelytyökalun rinnalla käytetään (validoivaa) XML-jäsennintä: - XML-dokumenttien perussyntaksin automatisoitu tarkistaminen (dokumentti on hyvin muodostettu ([well-formed])) - XML-dokumenttien (rakenteen) automatisoitu validoiminen (dokumentin vahvistaminen tiettyyn dokumenttiluokkaan kuuluvaksi) 73275 RAKENTEISET DOKUMENTIT (kevät 2004) luentorunko ON & JH 128

Kommentoitu johdanto XML:ään Tekstinkäsittelytyökalu ja jäsennin voidaan myös yhdistää, tällöin XMLdokumenttien kirjoitustyö helpottuu huomattavasti (ominaisuudet tietenkin vaihtelevat eri ohjelmien välillä); yleensä käyttöön saadaan kuitenkin vielä: - graafinen esitys dokumentin puurakenteesta - XML-merkkauksen syntaksiväritys - elementtien menupohjainen valintatyökalu - tyylieditori ja dokumentin esikatselu - yms. Em. toimintojen lisäksi XML-editoriin voi tietenkin integroida myös muuta, esim. - tyyppimäärityskirjastoja - tuki muille XML-standardiperheen ominaisuuksille - yhteys tietokantajärjestelmään - yhteys (yrityksen tai organisaation) muihin operatiivisiin järjestelmiin - objektieditoreita, sovelluskohtaisia apuohjelmia ja opastetoimintoja, yms. 73275 RAKENTEISET DOKUMENTIT (kevät 2004) luentorunko ON & JH 129

Kommentoitu johdanto XML:ään Edellä kuvattiin lähinnä XML:ää kehittäjän näkökulmasta - loppukäyttäjän näkökulmasta XML on kuin mikä tahansa dokumenttistandardi: - XML-dokumenttien käyttäminen kulissien takana - taas yksi uusi tiedostotyyppi, jolle integroitu ohjelmistotuki Suurin käytännön hyöty XML-dokumenteista saadaan, kun niiden editointi voidaan suorittaa tutuilla tai sovelluskohtaisilla editoreilla - XML-tekstinkäsittely - lomakepohjaiset työkalut - XML-wizardit, yms. Rajatuissa sovelluksissa XML-syntaksi on käytännössä tarkoituksenmukaista piilottaa loppukäyttäjiltä (vrt. HTML!) Mitä loppukäyttäjät sitten loppujen lopuksi tarvitsevat? - XML:ää hyödyntävän sovellusohjelman - mahdollisesti erikseen asennettavia ohjelmakomponentteja (esim. XMLparseri, XML-katseluohjelma, jne.) 73275 RAKENTEISET DOKUMENTIT (kevät 2004) luentorunko ON & JH 130

Kontekstivapaista formaaleista kielistä 8 Kontekstivapaista formaaleista kielistä Teknisessä XML-spesifikaatiossa XML-dokumentin syntaksi on esitetty käyttäen ns. Extended Backus-Naur Form (EBNF) -notaatiota EBNF on yleinen tietokonekielten syntaksin määrittämiseen käytetty merkintätapa (peräisin jo vuodelta 1960) - kompakti - yksikäsitteinen verrattuna siihen, että kielioppi annettaisiin esim. sanallisesti (huomaa, että 1-käsitteisyys saavutetaan kielen laillisten sanojen suhteen, ei kuitenkaan välttämättä niiden johtamisen suhteen) - kohtuullisen helppo lukea ja toteuttaa tietokoneilla (Kieliopin) Backus-Naur Form (BNF) on erikoistapaus ns. kontekstivapaita kieliä (CF-kielet) määrittävistä formaaleista kieliopeista Idea: dokumentti tai ohjelma vastaa BNF-konstruktion avulla ilmoitetun kielen L sanaa silloin kun sen on syntaktisesti oikein kirjoitettu 73275 RAKENTEISET DOKUMENTIT (kevät 2004) luentorunko ON & JH 131

Kontekstivapaista formaaleista kielistä EBNF ei riitä kuvattavan kielen semantiikan määrittämiseen, vaan semantiikka on annettava esim. esimerkkien ja kommenttien avulla (tilanne toistuu käytännössä kaikkien formaalisten kielten tapauksessa) Oleellisesti EBNF kuvaa kielen L sanat esittelemällä 1) kielen (lopullisten) symbolien joukon 2) sanojen muodostamiseen käytettävät tuottosäännöt ja 3) työhön tarvittavan (väliaikaisten) symbolien joukon. Esimerkki: Operation ::= Integer Symbol Integer Integer ::= [1-9]+ Symbol ::= '+' '-' '*' Notaation merkitys kohtuullisen selvä ohjelmointia tunteville: - syntaksi annetaan tuottosääntöinä ("::=" vastaa tuttua symbolia " ") - ensimmäinen tuottosääntö (ellei toisin mainita) ilmoittaa alkusanan, josta muiden sanojen johtaminen aloitetaan ("Operation") - merkkiluokat ([1-9]) - säännöllisten lausekkeiden kertojat ("+") - vaihtoehtoisten sääntöjen ryhmittely (" ") 73275 RAKENTEISET DOKUMENTIT (kevät 2004) luentorunko ON & JH 132

Kontekstivapaista formaaleista kielistä Formaali kieli Pyrittäessä syntaktisesti yksikäsitteisiin kieliin päädytään ns. formaalien kielten käsitteisiin; tavoitteena on tällöin lähinnä (kohdekieleen liittyvän) kielenkäytön ja päättelyn täsmentäminen Formaali kieli on jokin mv. sanojen joukko L (valitussa aakkostossa ) Sana w on äärellinen jono kielen aakkoston kirjaimia (merkkejä, symboleita, aakkosia, termejä) Aakkosto on äärellinen kirjainten joukko (esim. kirjaimet a-ö, numerot 1-9, bitit 1 ja 0, jne.) Sanan w pituus w on siinä olevien kirjainten lukumäärä. Tyhjän sanan, sanan jossa ei ole lainkaan kirjaimia, pituus on 0 Sanoille v ja w määritellään tuttuja perusoperaatioita: - katenaatio (esim. vw) - (katenaatio)potenssi (esim. v 3 = vvv) - jne. 73275 RAKENTEISET DOKUMENTIT (kevät 2004) luentorunko ON & JH 133

Kontekstivapaista formaaleista kielistä Kieli voi olla äärellinen tai ääretön: - äärelliset kielet voidaan ilmoittaa aina luettelemalla kaikki kielen sanat L = {w 1,w 2,, w n } - äärettömille kielille tämä ei onnistu; kielen sanat pitää ilmoittaa sääntöjen avulla (esim. kieliopin avulla tai muodossa L = { w: P(w) }) - (sovelluksissa puhutaan yleensä potentiaalisesta äärettömyydestä) Myös kielille L ja M määritellään perusoperaatioita: - katenaatio LM = { vw v L ja w M} - (katenaatio)potenssi L n = {v 1,v 2 v n v 1,v 2,,v n L}, jne. Koska kielet ovat sanojen joukkoja, käytetään sanoille ja kielille tuttuja joukkoopin merkintöjä ja operaatioita (sisältyminen, yhdiste, leikkaus, komplementti, ) Äärettömän formaalin kielen L ilmoittaminen voidaan tehdä usein eri tavoin: - esim. säännöllisen lausekkeen avulla (jos L säännöllinen) - yleisessä tapauksessa kielen ilmoittaminen on usein tarkoituksenmukaista tehdä kielen sanat tuottavan kieliopin avulla 73275 RAKENTEISET DOKUMENTIT (kevät 2004) luentorunko ON & JH 134

Kontekstivapaista formaaleista kielistä Generatiiviset kieliopit Muodollisesti määritettynä (generatiivinen) kielioppi on nelikkö G = ( N, T,X 0,P), missä aakkosto jaetaan välisymbolien aakkostoon N ja loppusymbolien aakkostoon T. X 0 N on kieliopin aksiooma (alkusana, siemen) ja tuottosääntöjen joukko P muodostuu produktioista p i q i, missä p i :ssä on ainakin yksi välisymboli Kieliopin G "sisältämä" (indusoima) uudelleenkirjoitusjärjestelmä R=(,P) mahdollistaa uusien sanojen johtamisen alkusanasta X 0 : 1) valitaan alkusana X i = X 0 2) yritetään soveltaa sanaan jotakin (yhtä) uudelleenkirjoitusjärjestelmän produktiota; jos onnistuu, saadaan uusi sana X i+1 3) jos sana X I+1 sisältää yhdenkin välisymbolin, jatketaan kohdasta 2 (asetetaan X i = X I+1 ) jos tällöin kohdan 2 yritys epäonnistuu, lopetetaan ja todetaan, että johto "epäonnistui" (ei tuottanut kielen sanaa) 4) JOS algoritmi pysähtyy JA tuottaa sanan, joka sisältää vain loppusymboleita, valitaan johdettu sana X I+1 kieleen L(G) 73275 RAKENTEISET DOKUMENTIT (kevät 2004) luentorunko ON & JH 135

Kontekstivapaista formaaleista kielistä Kielioppi G tuottaa kielen L(G) sanat; sanotaan, että G määrittää kielen L(G) Jos uudelleenkirjoitusjärjestelmä R tuottaa sanasta v sanan w, merkitään v * R w. Alaindeksi R voidaan jättää merkitsemättä jos se selviää asiayhteydestä. Jos johtoon käytetään vain yhtä produktiota jätetään tähti pois Kielen L(G) sanojen johtoon X 0 * w voidaan liittää ns. jäsennyspuu ([parse tree]) Jäsennyspuu on juurellinen puu, joka saadaan, kun sanan w johtamisen yhteydessä jokaisella produktioaskeleella täydennetään aksiomasta alkavaa graafia, esim. S D + D 1 2 Esimerkin jäsennyspuuta vastaa ilmeisesti johto S D+D 1+2 (huomaa, että puusta ei näy, missä järjestyksessä 1 ja 2 on tuotu sanaan) 73275 RAKENTEISET DOKUMENTIT (kevät 2004) luentorunko ON & JH 136

Kontekstivapaista formaaleista kielistä Kielioppeja on tapana luokitella niiden tuottosääntöjen (tuottaminen kielten) perusteella, kielioppi G voi esim. olla 1) lineaarinen (produktioiden oikealla puolella enintään yksi välisymboli), 2) yhteydetön eli kontekstivapaa (produktioiden vasemmalla puolella vain välisymboleita) tai 3) yhteydellinen (ei rajoitusta 2) Kielioppi liittyy läheisesti automaatin ideaan: - automaatin sanotaan tunnistavan kielen, jos se hyväksyy tarkalleen kaikki kielen sanat - kieliopit ja automaatit ovat tavallaan erilaisia tapoja esittää samoja asioita; yleensä toimitaan siten, että kieliopeilla määritellään kieliä ja automaateilla tunnistetaan niitä (jako on lähinnä käytännöllinen) Kielioppien ja automaattien välinen yhteys on merkittävä: - lineaaristen kielioppien generoimat kielet ovat säännöllisiä joten niiden tunnistaminen onnistuu ns. äärellisillä automaateilla - yhteydettömät kieliopit generoivat yhteydettömiä kieliä (CF-kielet) joiden tunnistaminen onnistuu ns. pinoautomaateilla - yhteydelliset kieliopit generoivat yhteydellisiä kieliä (CS-kielet) joiden tunnistaminen onnistuu ns. lineaarisesti rajoitetuilla automaateilla 73275 RAKENTEISET DOKUMENTIT (kevät 2004) luentorunko ON & JH 137

Kontekstivapaista formaaleista kielistä Kontekstivapaat kieliopit Kontekstivapaat kieliopit määrittävät siis kontekstivapaita kieliä; kielen sanojen jäsennyspuiden näkökulmasta tämä tarkoittaa sitä, että puun haaroja voidaan kasvattaa riippumatta valitun pisteen kontekstista Tietokonekielten tapauksessa usein on tarkoituksenmukaista piirtää (kirjoittaa) kielen L sanan w jäsennyspuu rivimuodossa, esim. S D + D 1 2 Tällöin puuhun yleensä liitetään hiljainen oletus puun haarojen järjestyksestä - ylhäältä alas (vasemmalta oikealle) - tämä ei kuitenkaan tee sanan jäsennyspuusta yksikäsitteistä Kuten kielille yleensäkin, yksi ja sama CF-kieli voidaan tuottaa useilla eri menetelmillä, useilla eri kieliopeilla ja useilla eri CF-kieliopeilla 73275 RAKENTEISET DOKUMENTIT (kevät 2004) luentorunko ON & JH 138

Kontekstivapaista formaaleista kielistä Jokainen kontekstivapaa kieli on kuitenkin mahdollista määritellä sellaisen kontekstivapaan kieliopin avulla, joka on ns. Chomskyn normaalimuodossa: - produktiot muotoa X YZ tai X a - poikkeuksena produktio X 0 (mikäli X 0 ei esiinny yhdenkään produktion oikealla puolella) Kontekstivapaiden kielten ja rakenteellisten dokumenttien välinen yhteys on selvä: - kielioppi L on dokumenttiluokan määrittävä tyyppikuvaus - ko. dokumenttiluokan dokumentteja vastaavat kielen L sanat Käytännössä pelkkä CF-kielioppi ei käytännön sovelluksissa aina riitä: kielten (dokumenttiluokkien) rakennetta rajoitetaan vielä erilaisin (usein toisessa kielessä annetuin) rajoittein Esim. XML-dokumentin määrittäville EBNF-produktioille annetaan seuraavantyyppisiä rajoitteita: - well-formedness constraint (esim. elementtien tyypit täsmäävät) - validity constraint (esim. elementtirakenne täsmää) 73275 RAKENTEISET DOKUMENTIT (kevät 2004) luentorunko ON & JH 139

Kontekstivapaista formaaleista kielistä EBNF Generatiiviset kieliopit ovat yleensä riittävän vahvoja formaalisten kielten määrittelyyn käytettäviä konstruktioita, kuitenkin tavanomaiset sovellukset johtavat varsin suureen produktioiden määrään Ottamalla käyttöön loogisia sievennysmerkintöjä, voidaan sääntöjä kirjoittaa luettavammassa muodossa: käytännössä homma helpottuu huomattavasti ottamalla käyttöön säännöllisistä lausekkeista tutut merkinnät produktioiden sieventämiseen Extended Backus Naur Form (EBNF) esittää CF-kielen kieliopin käyttäen hyväksi produktioiden ryhmittelyä, operaattoreita, merkkiluokkia ja kertojia - ensimmäisenä esiteltävä produktio sovitaan aksioomaksi - kielen lopullisten symbolien joukko (aakkosto) selviää sovelluksesta (BNF ehdottaa välisymboleita kirjoitettavan esim. isolla alkukirjaimella) Esimerkki: Operation ::= Integer Symbol Integer Integer ::= [123456789]+ Symbol ::= '+' '-' '*' 73275 RAKENTEISET DOKUMENTIT (kevät 2004) luentorunko ON & JH 140

Kontekstivapaista formaaleista kielistä CF-kieliopin ilmiasu perustuu literaaliviittauksiin, sulkujen käyttöön, operaattoreihin ja kertojiin Merkki ja merkkijonoviittaukset: - #xn (N on halutun merkin indeksi merkkikoodauksen ISO/IEC 10646 mukaan) - [a-za-z],[#xn-#xm] (lueteltu merkkiluokan merkki) - [^abc], [^#xn#xm] (jokin muu merkki kuin lueteltu) - "string", 'string' (vakiomerkkijono) Sulkujen käyttö: - (lauseke) (lausekkeiden ryhmittely esim. kertojien vaikutusalueen asettamiseksi) Operaattorit: - A B (B seuraa A:ta) - A B (A tai B muttei molemmat) - A - B (A muttei B:tä) 73275 RAKENTEISET DOKUMENTIT (kevät 2004) luentorunko ON & JH 141

Kontekstivapaista formaaleista kielistä Kertojat: - A? (A esiintyy kerran tai ei ollenkaan) - A+ (A esiintyy yhden tai useamman kerran) - A* (A esiintyy yhden tai useamman kerran tai ei ollenkaan) Loput säännöllisistä lausekkeista tutut operaattorit ja kertojat voidaan konstruoida näistä Esimerkiksi A{3,4} on sama kuin A A A A A A A XML-spesifikaatio esittelee lisäksi muutakin kielen määrittelyyn liittyvää notaatiota: - /* */ (komentti) - [ wfc: ] (well-formedness constraint) - [ vc: ] (validity constraint) 73275 RAKENTEISET DOKUMENTIT (kevät 2004) luentorunko ON & JH 142