| etusivu > XML-määrittelyt > Ohjelmointirajapinnat |
W3C Recommendation - lokakuu 1998
DOM1-määrittely esittelee alustasta ja ohjelmointikielestä riippumattoman, puumaisen (olio)rajapinnan XML- ja HTML- dokumenttien käsittelyyn. Näiden rajapintojen avulla ohjelmat voivat lukea ja muokata dokumenttien sisältöä ja rakennetta sekä liikkua dokumentin rakenteissa. Määrittely koostuu kahdesta päämoduulista:
Core, joka määrittelee perusrajapinnat XML-rakenteiden käsittelyyn. Näihin kuuluvat mm. rajapinnat elementtien ja määritteiden muokkaamiseen. Core sisältää perusrajapintojen lisäksi laajennusrajapintoja, joilla voidaan käsitellä esimerkiksi entiteettejä, notaatioita ja prosessointikäskyjä.
HTML, joka määrittelee rajapinnat HTML- dokumenttien käsittelyyn. Tähän moduuliin kuuluvat mm. erilaisten elementtien (BODY, P, A, jne.) käsittelyyn käytettävät rajapinnat. Nämä rajapinnat helpottavat HTML-dokumenttien käsittelyä, mutta samat toiminnot voidaan rakentaa myös Core-moduulin rajapintojen varaan.
DOM sopii käytettäväksi silloin kun dokumenttia ei voida käsitellä suoraviivaisesti solmujen esiintymisjärjestyksessä, vaan rakenteessa voidaan liikkua edestakaisin hyvinkin laajalla alueella. Esimerkiksi editorit ovat sovelluksia, joissa tällainen käsittelytapa on tarpeellinen. DOM-rakenteet ovat usein raskaita ja saattavat - dokumentin koosta riippuen - kuluttaa suuriakin määriä muistia. Mikäli nämä rajoitukset häiritsevät, kannattaa selvittää riittäisikö kevyempi SAX -rajapinta DOM:n sijasta.
DOM1-määrittelyn rajapinnat on kuvattu IDL-kielellä, ja ne on sen jälkeen sovitettu ECMA Script ja Java -kielille. W3C:n ulkopuoliset tahot ovat sovittaneet DOM1- rajapintoja myös muille kielille, kuten C++:lle ja Pythonille.
DOM ei määrittele miten rajapinnat pitäisi toteuttaa tai millainen merkitys (semantiikka) dokumentin rakenteilla on - se ainoastaan tarjoaa keinot käsitellä tätä rakennetta ja sisältöä. DOM:n ensimmäinen taso ei myöskään määrittele esimerkiksi keinoja rakennemäärittelyn käsittelyyn. Rakennemäärittelyihin liittyvät rajapinnat määritellään toivottavasti tulevassa DOM:n kolmannen tason määrittelyssä.
Kenelle tarkoitettu: Ohjelmoijille, jotka rakentavat omaa sovellustaan jonkin XML-sovelluksen päälle.
Määrittely:Document Object Model (DOM) Level 1 Specification
W3C Recommendation - marraskuu 2000 ja W3C Working Draft - marraskuu 2000
DOM2 rakentuu DOM1 :n päälle ja laajentaa ensimmäisen tason rajapintoja XML-dokumenttien rakenteiden peruskäsittelyn ulkopuolelle (tarkempi selitys DOM:sta ja sen perusperiaatteista löytyy DOM1:n kuvauksesta). DOM2 on paljon laajempi määrittely kuin DOM1 ja tarjoaa paljon enemmän toimintamahdollisuuksia, jotka ovat tarpeen korkeamman tason sovelluksia - kuten esimerkiksi XML-editoreja - tehtäessä. Määrittelyn koostuu kuudesta osiosta:
Core, jota on laajennettu DOM1:stä mm. nimiavaruuksien käsittelyyn liittyvillä metodeilla sekä mahdollisuudella luoda uusia XML-dokumentteja. Huomatkaa, että DOM2 mahdollistaa vain dokumenttien luomisen - lataaminen tai tallentaminen ovat edelleen täysin sovelluksen itsensä määrättävissä.
Views, jolla voidaan luoda erilaisia näkymiä samaan dokumenttiin. Tätä voidaan hyödyntää esimerkiksi CSS - tyylisäännöstöjen ja HTML:n kehysten yhteydessä.
Style, joka sisältää rajapinnan dokumenttiin liittyvien tyylisäännöstöjen tietojen käsittelyyn sekä mahdollistaa CS2-tyylisäännöstöjen käsittelyn. Tällä rajapinnalla voidaan mm. valita käytettävä tyylisäännöstö tai kysellä tyylisäännöstöjen tietoja kuten tyyppiä tai sijaintia. Toinen puolisko rajanpinnasta mahdollistaa CSS-sääntöjen luomisen, poistamisen ja muokaamisen. Se sisältää myös laajennusrajapinnat erillisille CSS-ominaisuuksille.
Events, jolla voidaan käsitellä tapahtumia, kuten esimerkiksi solmujen lisäystä tai hiiren liikkeitä. Rajapinta mahdollistaa esimerkiksi HTML 4.0:sta tutut tapahtumat.
Traversal and Range, jossa määritellään helppokäyttöiset rajapinnat dokumentin rakenteessa liikkumiseen ja (loogisesti) yhtenäisten alueiden käsittelyyn. Dokumentissa iikkumiseen käytettyjä tapoja on kaksi: sarjallinen, jossa solmut ovat peräkkäin, ja hierarkinen, jossa solmut ovat puurakenteessa. Loogisesti yhtenäinen alue tai väli voidaan käsittää joukkona solmuja, mutta toisin kuin esimerkiksi Core-moduuliin kuuluvassa Node-rajapinnassa, väli voi alkaa tai loppua solmun keskelle. Rajapinnan avulla voidaan esimerkiksi toteuttaa editorien teksinvalintatoiminnot.
HTML, jolle on tehty vain muutamia pieniä laajennuksia DOM1:een verrattuna. Tämä on DOM2:n ainoa osio, jota ei vielä ole virallisesti hyväksytty.
DOM2 ei vaadi, että DOM2-yhteensopivan sovelluksen on toteutettava kaikki kuvatut rajapinnat. Ainoastaan Core-osion perusrajapinnat on toteuttava - kaikki loput osiot ovat vapaaehtoisia. DOM2 tarjoaa myös rajapinnan sovelluksien toteuttamien ominaisuuksien selvittämiseen.
Kenelle tarkoitettu: Ohjelmoijille, jotka rakentavat omaa sovellustaan jonkin XML-sovelluksen päälle.
Määrittelyt:
Core-osio:Document Object Model (DOM) Level 2 Core Specification
Views-osio:Document Object Model (DOM) Level 2 Views Specification
Style-osio:Document Object Model (DOM) Level 2 Style Specification
Events-osio:Document Object Model (DOM) Level 2 Events Specification
Traversal and Range -osio:Document Object Model (DOM) Level 2 Traversal and Range Specification
HTML-osio:Document Object Model (DOM) Level 2 HTML Specification
Julkaistu toukokuussa 2000
SAX on tapahtumapohjainen rajapinta XML-dokumenttien käsittelyyn. Oikeastaan SAX:sta on olemassa kaksi versiota: SAX1 ja SAX2. Vanhempana versiona SAX1 on huomattavasti paremmin tuettu (itse asiassa se on osoittautunut hyvin suosituksi rajapinnaksi) kuin SAX2, mutta olettaisin sovellusten varsin nopeasti päivittävän rajapintansa SAX2:ksi. SAX2 rakentuu SAX1:n päälle ja lisää siihen mm. tuen nimiavaruuksille sekä rajapinnan ominaisuuksien tunnistamiseen. SAX2 on myös laajennettava, joten siihen on (juuri ominaisuuksien tunnistamisen ansiosta) mahdollista lisätä omia rajapintoja rikkomatta alkuperäistä määrittelyä.
SAX sopii erityisesti tietovirtojen käsittelyyn ja omien datamallien luomiseen. SAX on huomattavasti kevyempi ja tehokkaampi rajapinta kuin DOM , mutta toisaalta myös rajoittuneempi. Valinta SAX:n ja DOM:n välillä riippuu lähinnä sovelluksen käyttötarkoituksesta - kummassakin on omat hyvät puolensa, joten kumpaankin on hyvä tutustua ainakin pintapuolisesti.
SAX-rajapinta on alunperin määritelty vain Javalle, mutta siitä on saatavana ainakin Perl- ja Python-määrittelyt. Toistensa kanssa epäyhteensopivia C++-määrittelyjä löytyy useita.
Kenelle tarkoitettu: Ohjelmoijille, jotka rakentavat omaa sovellustaan jonkin toisen sovelluksen päälle.
Määrittely:SAX: The Simple API for XML, version 2 - samalta sivulta löytää linkin myös SAX1-määrittelyyn.
Transformations for XML (TRaX) ja XML Serialize API - Rajapinnat muunnoksille (esimerkiksi XSLT-muunnoksille) ja XML-dokumenttien sarjallistamiselle.
JDOM (JDOM) - DOM ja SAX:n tapaan yleinen ohjelmointirajapinta, jonka tarkoitus on olla tehokkaampi ja kevyempi kuin kumpikaan edellämainituista. Tavoitteena on luoda Javan rakenteita ja ohjelmointityyliä noudatava rajapinta, joka on helposti ymmärrettävä myös niille ohjelmoijille, jotka eivät osaa XML:ää.
Sivua on edellisen kerran päivitetty:
23.01.2001
Kommentteja voi lähettää Henri Ruinille osoitteeseen
ruini@cs.helsinki.fi