300 likes | 441 Views
T3MM65 RAKENTEISET DOKUMENTIT Pläjäys 1. Heikki Hietala HAAGA-HELIA Ammattikorkeakoulu Syyslukukausi 2009. Mitä on XML?. XML on W3C:n määrittelemä SGML:n alijoukko eli Structured Generalized Markup Language –kielen määrittelyjen mukainen merkintäkieli
E N D
T3MM65RAKENTEISET DOKUMENTITPläjäys 1 Heikki Hietala HAAGA-HELIA Ammattikorkeakoulu Syyslukukausi 2009
Mitä on XML? • XML on W3C:n määrittelemä SGML:n alijoukko • eli Structured Generalized Markup Language –kielen määrittelyjen mukainen merkintäkieli • sukua HTML:lle, mutta ei ole sivun-, vaan datankuvauskieli • menetelmä rakenteisen informaation esittämiseksi
Mitä on XML 2 • Itse asiassa XML on kieli, jolla voi määritellä dokumenttien määrittelykieliä • XML-sovellus on dokumenttien määrittelydokumentti ja määrittelyn mukaisten dokumenttien joukko • XML-prosessori on dokumenttia käsittelevä ohjelma, esim. selaimen XML-parseri
Mitä on XML 3 • XML ei ole • ohjelmointikieli • tietokantasovellus • web-suunnittelun osa • yleispätevä ratkaisu kaikkiin ihmiskunnan ongelmiin
Pakollinen historiakatsaus • Määrittelyjen pohjaksi vuonna 1996 annettiin seuraavaa: • XML pitää olla suoraan ja helposti käytettävissä Internetissä • XML:ää voivat hyödyntää monenlaiset sovellukset • XML:n pitää olla yhteensopiva SGML:n kanssa • pitää olla helppo kirjoittaa sovelluksia, jotka käsittelevät XML-dokumentteja • XML:ssä on oltava mahdollisimman vähän valinnaisia lisäpiirteitä • XML-dokumenttien pitää olla luettavassa muodossa ja selkeitä • XML:n määritysten suunnittelu pitää tapahtua nopeasti • XML:n määritysten pitää olla formaalisia ja tarkkoja • XML-dokumentteja pitää olla helppo luoda • XML-tunnisteiden nimet saavat olla pitkiä
Sisällön määrittelemisestä • Sisältö voidaan katsoa pelkäksi informaatioksi: kirja sisältää tietoa tai taidetta. • Sisältö voidaan kuitenkin katsoa myös rakenteiseksi informaatioksi • Kirjalla on kirjoittaja, nimi, ISBN • Se sisältää lukuja, kappaleita, kuvia • Se voidaan luokitella kirjastojen tapaan sisällön mukaan
Sisällöstä 2 • Esim. ihmisen nimi voi olla vain merkkijono, tai sitten • reservin vänrikki HH, virallinen kääntäjä HH, ent. projektipäällikkö HH, lehtori HH sen mukaan, kenen sisältömäärittelyistä on kyse • Kyse on kontekstin antamisesta ja sitä HTML ei tee millään tavalla. • Tietokone ei tiedä mitään näistä määrittelyistä vaikka ne ovat itsestään selviä niissä konteksteissa joissa ne on luotu.
Sisällöstä 3 • Konteksti on luotava yksikäsitteisesti tietokonetta varten • Tätä on XML: rakenteista dataa, joka kantaa mukanaan tietoa rakenteesta. • Esim: <lehtori> <nimi>Heikki Hietala</nimi> <ala>digitaalinen media</ala> <virkaikä>7 v 6 kk</virkaikä> </lehtori> • Tässä rakenne ja data ovat yhdessä • Toisessa kontekstissa olisi esim. <upseeri> <nimi>Heikki Hietala</nimi> <arvo>vänrikki</arvo> <koulutus>tulenjohtopäällikkö</koulutus> </upseeri> • Sama ihminen, eri konteksti, eri XML
Määritelmiä • Element • XML:n perusosa. Kaikki XML-dokumentin sisältö on elementeissä, ja niistä yksi on juurielementti. Juuria on vain yksi. • Attribute • lisätietoa antava osa XML-tagissa • Child • XML-elementin sisällä oleva elementti • Parent • elementti, jolla on lapsi. Ihan luontevaa, eiks?
Määritelmiä 2 • Nesting • XML-elementtien sisäkkäisyys • nesting on oltava aitoa: abba, ei abab • DTD • Document Type Definition • määrittelee XML-dokumentin sisällön • ei saa sotkea Document Type Declarationiin • Namespace • Määrittelee käytetyt elementtien nimet • ”lautanen” on eri asia Arabialle ja Canal +:lle • Siksi niiden XML:ssä on luotava nimiavaruudet joihin XML sitten viittaa.
Valid & well-formed • XML-dokumentin on oltava molempia • Validi asiakirja sisältää viittauksen asiakirjaan, jossa sen rakenne on kuvattu joko DTD (document type definition) –menetelmällä tai rakenneskeemalla (schema) • Validi asiakirja ei poikkea DTD:stään • Well-formed –asiakirja on rakenteellisesti puhdas: tagit suljettu, nesting aitoa jne.
XML:n rakenne 1 2 3 <?xml version=”1.0” standalone=”yes” encoding=”utf-8”?> <mnu:menu xmlns:mnu=”http://www.pikaburger.com/2005/menu”> <mnu:alkupala id=”1”>Sipulinamirenkaat</mnu:alkupala> <mnu:alkupala id=”2”>Kanankoivet</mnu:alkupala> </mnu:menu> 4 5 6 7 8 • XML declaration • Start tag • Namespace declaration • Namespace prefix • Element name • Attribute (name-value pair) • Element content • Close tag
XML declaration <?xml version=”1.0” standalone=”yes” encoding=”utf-8”?> • Pakollinen ensimmäinen rivi validissa ja hyvinmuodostuneessa XML-tiedostossa. • Kertoo tiedoston olevan XML:ää, sen olevan versio 1.0 –määritysten mukainen ja että merkistön koodaus on UTF-8 • UTF-8 on hyvä yleensä, mutta suomenkielisiä merkejä sisältävä XML on hyvä koodata ISO-8859-1 • Ilman tätä riviä XML-sovellukset (selaimet, parserit eli jäsentäjät) eivät tunnista dataa XML:ksi ja pulmia tulee. • Standalone sanoo, että tiedosto sisältää itsessään myös rakennekuvauksen (DTD)
Start tag & namespace declaration <mnu:menu • Kertoo, että elementin nimi on menu • mnu-alku tulee käytetystä nimiavaruudesta xmlns:mnu=”http://www.pikaburger.com/2005/menu”> • URI viittaa tiedostoon tai hakemistoon, jossa DTD on, ja josta saa siis myös käytettyjen nimien kuvaukset
Namespace prefix & element & attribute • <mnu:alkupala id=”1”> • mnu: kertoo että kyse on mnu-namespacesta • Alkupala on elementin nimi • id=”1”on attribuutti: järjestyksessä elementti on ensimmäinen • Attribuutteja voisi olla useita • On valittava, laittaako dataa attribuutiksi vai elementin child-elementeiksi
Elementin sisältö ja close tag Sipulinamirenkaat</mnu:alkupala> • Sipulinamirenkaat on se varsinainen data • Close tag on siis vastaava kuin alkutag, huomatkaa namespace prefix ja elementin nimi.
Puukuvaukset • XML:ää luodessa kannattaa ajatella asiaa puurakenteena. • Joulukortti esimerkiksi olisi seuraavanlainen:
Puukuvaukset 2 • Nopeasti päästään monimutkaisempiin rakenteisiin, esimerkiksi lentolippu:
<juoma tyyppi=”Cola”> <koko>Pieni</koko> <koko>Keski</koko> <koko>Iso</koko> <arvo>6<7</arvo> <erikoista /> </juoma> <juoma tyyppi=Cola> <koko>Pieni</koko> <koko>Keski</koko> <koko>Iso</koko> <arvo>6<7</arvo> <erikoista> </Juoma> Hyvinmuodostunut XML Pulmat: lainausmerkit, < -merkki ei sallittu Tyhjää elementtiä ei terminoida Iso merkki lopputagissa
Hyvinmuodostustumisen tarkistuslista • □ Vain yksi juurielementti • □ Case huomioitu koko alueella • □ Kaikilla ei-tyhjillä elementeillä on lopputag • □ Kaikilla tyhjillä elementeillä on loppuvinoviiva • □ elementit ovat aidosti sisäkkäisiä • □ attribuutit ovat lainausmerkeissä • □ erikoismerkkien paikalla on entiteettejä
Laaditaanpa hyvinmuodostunut XML-dokumentti • Tutki datan rakenne • Taulukointi tai puukuvaus on hyvä ajatus • Etsi elementti, joka käy juureksi • Ruokalistassa kaikki data on ruokia, joten esimerkiksi <menu></menu> • Etsi 2. tason elementit • Etsi lapsielementit ja mahdolliset attribuutit
Vaihe 1b • Koostetaan väliaikainen data: <menu> <alkupala id=””> <nimi></nimi> <ainekset></ainekset> <rasvaa></rasvaa> <kuvaus></kuvaus> </alkupala> </menu>
Vaihe 2: Julistus • Laaditaan ”XML document declaration”: <?xml version=”1.0” encoding=”ISO-8859-1”?> • Tämän pitää olla ihan ylin rivi tiedostossa • Encoding voi toki olla muukin, mutta ISO-8859-1 on hyvin tunnustettu merkistö
Vaiheet 3 & 4 • Vaihe 3: lisää root element • Vaihe 4: täytä tiedosto datalla <?xml version=”1.0” encoding=”ISO-8859-1” standalone=”yes”?> <menu> <alkupala id=”1”> <nimi>Sipulinamirenkaat</nimi> <ainekset>sipuli, rasva, leivite </ainekset> <rasvaa>30</rasvaa> <kuvaus>Sipulirenkaat parasta A-ryhmää</kuvaus> </alkupala> ... </menu>
XML-koodin kommentoiminen • Add the first part of the comment tag <!-- • Write whatever comment you would like - just make sure you don't nest comments within other comments (see tips for more details). • Close the comment tag -->
Harjoitus 1 • Laadi puukuvaus kirjasta • Laadi puukuvaus junalipusta • Laadi puukuvaus auton rekisteriotteesta (kotitehtävä)
Harjoitus 2 • Laadi puukuvauksiasi vastaavat XML-tiedostot • Kirjasta, junalipusta ja rekisteriotteesta • niin että kirjassa on 20 lukua, uutispalstassa 2 uutista ja junalipusta riittää yksikin lippu. Rekisteriotteen tiedot riittävät auton osalta, eli mitkä tiedot tunnistavat auton yksikäsitteisesti? • Muista well-formed-säännöt ja käytä muistilistaa