Luento 7: XML-ohjelmointirajapinnat

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

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

Luento 3: Tietorakenteiden esittäminen

Digitaalisen median tekniikat. JSP ja XML Harri Laine 1

Digitaalisen median tekniikat. JSP ja XML

812341A Olio-ohjelmointi Peruskäsitteet jatkoa

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

Hohde Consulting 2004

M. Merikanto 2012 XML. Merkkauskieli, osa 2

Helsingin yliopisto/tktl XML-metakieli XML:n-käsittely. XML:n käsittely ohjelmallisesti. XML:n käsittely ohjelmallisesti

Rajapinta (interface)

Javan perusteita. Janne Käki

Hohde Consulting 2004

Linkitetystä listasta perittyä omaa listaa käytetään muun muassa viestiin liittyvien vastausten säilömiseen.

2. PEHMEÄ XHTML XRAJAHTML

Kurssin aloitus. AS XML-kuvauskielten perusteet Janne Kalliola

Luento 1: Johdanto merkintäkieliin

Sisällys. Yleistä attribuuteista. Näkyvyys luokan sisällä. Tiedonkätkentä. Aksessorit. 4.2

XML / DTD / FOP -opas Internal

Hakemistojen sisällöt säilötään linkitetyille listalle.

Ohjelmoinnin peruskurssi Y1

Olio-ohjelmointi Javalla

Sisällys. 18. Abstraktit tietotyypit. Johdanto. Johdanto

Luento 8: XML-tuki ohjelmointikielissä & Web-palvelut

Ohjelmoinnin peruskurssi Y1

Ohjelmoinnin peruskurssi Y1

JAVA-PERUSTEET. JAVA-OHJELMOINTI 3op A JAVAN PERUSTEET LYHYT KERTAUS JAVAN OMINAISUUKSISTA JAVAN OMINAISUUKSIA. Java vs. C++?

18. Abstraktit tietotyypit 18.1

Java-kielen perusteet

Kehitysohje. ETL-työkalu. ExtraTerrestriaLs / Aureolis Oy

15. Ohjelmoinnin tekniikkaa 15.1

Sopimuspohjainen olio-ohjelmointi

3 Verkkosaavutettavuuden tekniset perusteet

Sisällys. Yleistä attribuuteista. Näkyvyys luokan sisällä ja ulkopuolelta. Attribuuttien arvojen käsittely aksessoreilla. 4.2

Ohjelmistojen mallintaminen viikon 4 laskareiden mallivastauksia

16. Javan omat luokat 16.1

2. Olio-ohjelmoinista lyhyesti 2.1

CODEONLINE. Monni Oo- ja Java-harjoituksia. Version 1.0

Sisältö. 22. Taulukot. Yleistä. Yleistä

Ohjelmoinnin perusteet Y Python

Rajapinnasta ei voida muodostaa olioita. Voidaan käyttää tunnuksen tyyppinä. Rajapinta on kuitenkin abstraktia luokkaa selvästi abstraktimpi tyyppi.

Ohjelmoinnin jatkokurssi, kurssikoe

XPages käyttö ja edut Jarkko Pietikäinen toimitusjohtaja, Netwell Oy

15. Ohjelmoinnin tekniikkaa 15.1

Taulukot. Jukka Harju, Jukka Juslin

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

A TIETORAKENTEET JA ALGORITMIT

Luento 12: XML ja metatieto

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

7. Näytölle tulostaminen 7.1

Extensible Stylesheet Language (XSL)

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

Oliosuunnitteluesimerkki: Yrityksen palkanlaskentajärjestelmä

812347A Olio-ohjelmointi, 2015 syksy 2. vsk. IX Suunnittelumallit Proxy, Factory Method, Prototype ja Singleton

11 Lyhyesti XML-sovellusohjelmoinnista

4. Luokan testaus ja käyttö olion kautta 4.1

Ctl160 Tekstikorpusten tietojenkäsittely p.1/15

XML rakenteen suunnittelu. Jaana Holvikivi

ELM GROUP 04. Teemu Laakso Henrik Talarmo

Sisältö. 2. Taulukot. Yleistä. Yleistä

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

Yleistä. Nyt käsitellään vain taulukko (array), joka on saman tyyppisten muuttujien eli alkioiden (element) kokoelma.

XML - perusteet. Ctl230: Luentokalvot Miro Lehtonen

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

JWT 2016 luento 11. to klo Aulikki Hyrskykari. PinniB Aulikki Hyrskykari

Tietojen syöttäminen ohjelmalle. Tietojen syöttäminen ohjelmalle Scanner-luokan avulla

Informaatioteknologian laitos Olio-ohjelmoinnin perusteet / Salo

Harjoitus 5 (viikko 48)

Digitaalisen median tekniikat. Luento 4: JavaScript

Ohjelmointi II. Erkki Pesonen Luennot ja harjoitukset. Itä-Suomen yliopisto Tietojenkäsittelytieteen laitos 2015

Opintojakso TT00AA11 Ohjelmoinnin jatko (Java): 3 op Taulukot & Periytyminen

Ohjelmoinnin peruskurssi Y1

Ohjelmoinnin peruskurssien laaja oppimäärä

Ohjelmistojen mallinnus Ohjelmistoarkkitehtuuri Harri Laine 1

Opintojakso TT00AA11 Ohjelmoinnin jatko (Java): 3 op. Standardi- ja tietorakenneluokkia

Olion elinikä. Olion luominen. Olion tuhoutuminen. Olion tuhoutuminen. Kissa rontti = null; rontti = new Kissa();

Sisällys. 11. Rajapinnat. Johdanto. Johdanto

Java-API, rajapinnat, poikkeukset, UML,...

Interaktiivisten järjestelmien arkkitehtuuriratkaisu, jolla käyttöliittymä erotetaan sovelluslogiikasta.

XML-evoluutio ja kestävä kehitys

17. Javan omat luokat 17.1

20. Javan omat luokat 20.1

Sisällys. 20. Javan omat luokat. Java API. Pakkaukset. java\lang

8 XSLT-muunnoskieli XSLT-muunnoskieli

Opintojakso TT00AA11 Ohjelmoinnin jatko (Java): 3 op. Tietorakenneluokkia 2: HashMap, TreeMap

4. Olio-ohjelmoinista lyhyesti 4.1

Ohjelmoinnin perusteet Y Python

XML merkintäkielten perusteet. Luento 3 Pekka Aarnio

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

SAX:n hyödyntäminen wwwjulkaisujärjestelmän toteutuksessa

Tähtitieteen käytännön menetelmiä Kevät 2009 Luento 5: Python

Harjoitus 6 (viikko 42)

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

Sisällys. 7. Oliot ja viitteet. Olion luominen. Olio Java-kielessä

Harjoitus 6. Käytä String-luokasta vain charat- ja length-operaatioita.

Android ohjelmointi. Mobiiliohjelmointi 2-3T5245

Järjestelmäarkkitehtuuri (TK081702)

Harjoitus Olkoon olemassa luokat Lintu ja Pelikaani seuraavasti:

12. Monimuotoisuus 12.1

Transkriptio:

Luento 7: XML-ohjelmointirajapinnat AS-0.110 XML-kuvauskielten perusteet Janne Kalliola 1 XML-ohjelmointirajapinnat Document Object Model (DOM) käyttö rakenne ja versiot perusrajapinnat rajapinnat tarkemmin Simple API for XML (SAX) tapahtumapohjainen käsittely tapahtumat SAX:n toiminta SAX:n rajapinnat ja luokat 2 1

Perusrajapinnat DOM ja SAX ovat perusrajapintoja tarjoavat alhaisen tason käsittelymallit XML-dokumenteille eivät ota kantaa XML-dokumenttien sisältöön millään tavalla siis yleiskäyttöisiä käytännössä kaikki muut XML-rajapinnat rakentuvat näiden päälle On olemassa suuri joukko erikoistuneita rajapintoja osaa näistä käsitellään seuraavalla luennolla 3 DOM 4 2

W3C DOM-malli Document Object Model W3C:n suositus dokumenttien esittämiseksi ohjelmissa alusta- ja kieliriippumaton mahdollistaa dokumentin muokkauksen sisältö rakenne tyyli 5 DOM:n käyttö DOM:sta löytyy rajapinnat IDL:lle Javalle EcmaScriptille Rajapintojen käyttämiseksi täytyy ottaa käyttöön joku DOM-toteutus useita toteutuksia saatavana ilmaiseksi eri kielille Lisätietoa aiheesta http://www.w3.org/dom/ 6 3

DOM:n rakenne DOM määrittelee useita erilaisia rajapintoja DOM Core rakenteisten dokumenttien puumainen käsittely DOM XML XML-dokumenttien käsittely DOM HTML HTML-dokumenttien käsittely DOM Events XML-dokumenttien tapahtumapohjainen käsittely DOM Validation validointituki DOM XPath XPath-lausekkeiden käyttö DOM-puiden käsittelyssä 7 DOM:n versiot DOM:n ominaisuudet ovat kasvaneet uusien versioiden myötä DOM 1 (10/1998) Core + XML + HTML DOM 2 (11/2000) DOM 1 + CSS-tuki + tapahtumamalli + nimiavaruudet DOM 3 (4/2004) DOM 2 + XML Base + validointi + dokumenttien lataus ja tallennus Kurssin tarpeisiin riittää DOM 1 DOM 2:n tapahtumamalli myös näppärä 8 4

DOM muille kielille DOM:sta on olemassa erilliset sidonnat (bindings) myös seuraaville XML-pohjaisille kielille: MathML 2.0 SMIL SVG 1.0 Sidonnassa on määritelty kielikohtaisia rajapintoja rajapintojen avulla voidaan käsitellä suoraan XML-kielen tarjoamia rakenteita ei tarvitse tehdä kaikkia operaatioita suoraan elementtitasolla 9 DOM 1:n perusrajapinnat (1/4) Document kuvaa yhtä dokumenttia dokumentti voi olla esimerkiksi XML:ää tai HTML:ää sisältää tehdasmetodit dokumentin osien luomiseksi dokumentin osat eivät voi esiintyä dokumentin ulkopuolella DocumentType DTD ei sisällä juurikaan mahdollisuuksia käsitellä DTD:n sisältöä 10 5

DOM 1:n perusrajapinnat (2/4) Node dokumenttipuun solmu tai lehti sisältää metodit lapsien lisäämiseksi kaikki DOM:n dokumenttirajapinnat ovat myös Nodeja NodeList järjestetty lista Nodeista 11 DOM 1:n perusrajapinnat (3/4) Element vastaa XML:n elementtiä (tagi) Attr elementin attribuutti avain-arvopari Text tekstisirpale CDATASection 12 6

DOM 1:n perusrajapinnat (4/4) Entity korvausmerkintä jollekin merkille tai merkkijonolle Comment kommentti dokumentissa 13 Rajapintojen toteutus Kuten todettua, DOM ei sisällä toteutusta rajapinnoille Toteutus hankittava muualta useita toteutuksia tarjolla Javalle esimerkiksi Apachen Xerces tai Sunin JAXP Toteutus erotettu rajapinnoista tehdasmetodeilla kaikki puun solmut tuotetaan käyttäen rajapinnan Document metodeja Tämän lisäksi kielen kirjastoissa saattaa olla metodit DOM-jäsentimen luomiseksi lopullinen DOM-toteutus ei välttämättä ole siis kehittäjän tiedossa tai se voi vaihtua ajoalustasta toiseen 14 7

Node (1/2) Kaikkien DOM-rajapintojen kantarajapinta Metodit puussa liikkumiseen getparentnode() getfirstchild() getlastchild() getnextsibling() getprevioussibling() Metodit puun muokkaamiseen appendchild(node) removechild(node) insertbefore(node, Node) replacechild(node, Node) 15 Node (2/2) Metodit solmun tyypin ja nimen käsittelyyn getnodename() getnodetype() getnodevalue() attribuutille palauttaa attribuutin arvon tekstille, CDATA-alueelle, kommentille ja käsittelyohjeelle palauttaa niiden sisällön muille palautetaan null setnodevalue(string) 16 8

Document Document-puun juurielementti lapsina käsittelyohjeita, DTD ja itse dokumentin juurielementti sisältää metodit muiden solmujen luomiseen createattribute(string) createelement(string) createtextnode(string) metodit dokumentin tulkintaan getdoctype() getdocumentelement() 17 DocumentType Kuvaa DTD:ta DOM 1 ei salli DTD:n muokkaamista Sisältää metodit entiteettien ja notaatioiden lukemiseen getentities() getnotations() 18 9

Element Yksittäinen elementti Metodit attribuuttien lisäämiseen, poistamiseen ja niiden arvojen käsittelyyn setattribute(string, String) getattribute(string) Attribuutit talletetaan omiksi solmuiksi Elementin kautta käsittely onnistuu kuitenkin merkkijonopohjaisesti yleensä helpompaa 19 Attr Attribuutti Liittyy aina yhteen elementtiin Attribuutit eivät ole DOM:ssa Elementin lapsia pidetään tallessa erillisessä tietorakenteessa Attr:n puutoiminnallisuudet eivät toimi Metodit arvon kysymiseen ja asettamiseen getvalue() setvalue(string) 20 10

Tekstirajapinnat Kaksi tekstirajapintaa CDATASection Text Molemmat perivät rajapinnan CharacterData sisältää metodit sisällön käsittelyyn setdata(string) getdata() replacedata(int, int, String) deletedata(int, String) appenddata(string) 21 DOM-puun luonti ja käyttö Yleensä DOM-puu luodaan pyytämällä Documentrajapinnan toteuttava olio loput puusta luodaan Document-rajapinnan tehdasmetodeilla DOM-puu saattaa tulla myös valmiiden metodien paluuarvona esimerkiksi XML-dokumentin lukeminen tiedostosta DOM-puuta voidaan muokata ja siinä olevaa tietoa voidaan poimia rajapinnan metodeilla DOM sisältää myös metodeja puun läpikäyntiin 22 11

SAX 23 SAX Simple API for XML perustuu tapahtumapohjaiseen käsittelyyn rajapinnat Javalle ja Pythonille Löytyy osoitteesta http://www.megginson.com/sax/ Viimeisin versio 2.0.1 24 12

Tapahtumapohjainen käsittely Dokumenttipuu on helppo, mutta välillä tehoton tapa tulkita dokumentti aina puuta ei ole tarkoituksenmukaista rakentaa ohjelma voi rakentaa oman puunsa tai muun tietorakenteen, jolloin muunnos rakenteesta toiseen on turhan raskas 25 Tapahtumat XML-dokumentti luetaan jostakin lähteestä Jokainen XML:n elementti aiheuttaa tapahtuman XML tulkitseva ohjelma saa dokumentin rakenteen tapahtumien kautta erillistä puuta ei rakenneta 26 13

Tapahtumaesimerkki Dokumentti <document> <hello>hello, World!</hello> </document> Vastaavat tapahtumat start document start element: document start element: hello characters: Hello, World! end element: hello end element: document end document 27 SAX:n rakenne Jäsennin (XMLReader) käsittelee XML-dokumentin luo tarvittavat tapahtumat Sovellus toteuttaa tapahtumien käsittelijät vastaanottaa ja käsittelee tapahtumat 28 14

Toiminta 1. Ohjelma haluaa lukea XML-dokumentin 2. Ohjelma antaa XML-dokumentin virtana parserille 3. Parseri lukee dokumentin jokaisesta elementistä lähetetään tieto ohjelmalle ohjelma käyttää tietoa hyväkseen tai hylkää sen 4. Parseri lopettaa suorituksensa 5. Ohjelmalla on tarvitsemansa tiedot dokumentista 29 SAX-rajapinnat SAX pohjautuu melkein kokonaan rajapintoihin mukana myös muutama apuluokka Rajapinnat ja tärkeimmät luokat pakkauksessa org.xml.sax Apuluokat pakkauksessa org.xml.sax.helpers 30 15

SAX-jäsentimen toteuttamat rajapinnat Ohjelma luo SAX-jäsentimen ja ohjaa/kyselee sen toimintaa näiden rajapintojen kautta XMLReader jäsentimen toiminnallisuuden määrittely dokumentin sisäänluku Attributes elementtien attribuutit listassa Locator tapahtuman paikka dokumentissa 31 Ohjelman rajapinnat Ohjelma toteuttaa osan seuraavista rajapinnoista saadakseen tapahtumia ContentHandler ottaa vastaan dokumenttitapahtumat dokumentin alkaminen ja loppuminen elementtien alkaminen ja loppuminen merkkijonot elementtien välissä ErrorHandler virheellisten dokumenttien käsittely EntityResolver Entiteettien käsittely DTDHandler DTD:n käsittely 32 16

SAX:n luokat InputSource dokumentin lukuun liittyviä rutiineja SAXException poikkeusten käsittelyyn SAXParseException dokumenttien käsittelyyn liittyvät poikkeukset HandlerBase perustoiminnallisuudet parserin rajapinnoille voidaan käyttää toteuttamattomien osien tilalla 33 SAX-toteutus SAX-rajapinnat on toteutettu yleensä DOM-jäsentimiin DOM-jäsennin käyttää sisäisesti SAX:ia dokumentin lukemiseen merkkijonosta puumuotoon SAX-jäsentimen saa vastaavalla tavalla kuin DOMjäsentimenkin periaatteessa sama luokka voi toteuttaa molemmat rajapinnat yleensä toteutus on kuitenkin erillinen 34 17

Kysymyksiä? Kommentteja? 35 18