XML-perheeseen liittyvät määrittelyt


Tätä sivua ei enää päivitetä! Uudemmat ja paremmin ajan tasalla olevat kuvaukset löydät uudelta määrittelyjen kuvaussivulta.


Sivulta puuttuvat vielä seuraavat kuvaukset: XML, CSS1, CSS2, XPointer, DOM2, SAX1, SAX2 Schemas, URL ja Unicode.


Namespaces in XML, versio 1.0 (Namespace)

W3C Recommendation - tammikuu 1999

Namespace-määrittely lisää XML:ään monista ohjelmointikielistä tutun nimiavaruuden käsitteen. Käytännössä tällä tarkoitetaan määritteen tai elementin nimen eteen lisättävää tunnistetta, jonka avulla määrite tai elementin tyyppi voidaan tunnistaa yksikäsitteisesti. Namespace-määrittely käyttää nimiavaruuden etuliitteenä URI:a. URI:n (tai usein URL:n) tarkoituksena ei periaatteessa ole osoittaa mihinkään tiettyyn dokumenttiin vaan ainoastaan toimia yksikäsitteisenä tunnisteena.

Nimiavaruuksien avulla voidaan yhteen dokumenttiin yhdistää rakenteita eri rakennemäärittelyjä noudattavista dokumenteista, ja sovellukset voivat mahdollisista samannimisistä rakenteista huolimatta tunnistaa tarvitsemansa elementit ja määritteet. Nimiavaruuksiin kannattaa ehdottomasti tutustua, jos aikoo perehtyä tarkemmin XML:ään ja siihen liittyviin asioihin.

Monet nykyisistä ja tulevista määrittelyistä käyttävät nimiavaruuksia hyväkseen. Tällaisia määrittelyjä ovat mm. XSLT ja XSL. Näitä määrittelyjä lukiessa ja yleensäkin nimiavaruuksien yhteydessä on muistettava, että nimiavaruudet eivät ole yhteensopivia nykyisessä XML-määrittelyssä esiteltyjen rakennemäärittelyjen kanssa!

Document Object Model, taso 1, versio 1.0 (DOM)

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ä navigoida dokumentissa. Itse määrittely koostuu kahdesta pääosasta:

DOM1-määrittelyn rajapinnat on kuvattu IDL-kielellä, ja ne on sen jälkeen sovitettu ECMA Script ja Java -kielille.

DOM ei määrittele miten rajapinnat pitäisi toteuttaa tai millainen merkitys 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ä.

Toinen yleinen rajapinta XML-dokumentteihin on SAX, jonka lähestymistapa eroaa DOM:sta, mutta jolla voidaan tehdä lähes samat asiat.

XML Linking Language (XLink)

W3C Working Draft - joulukuu 1999

Hypertekstiominaisuudet ovat eräs syy HTML:n suureen suosioon. XLink pyrkii tuomaan hypertekstin ja HTML:ää monipuolisemman linkityksen XML-dokumentteihin.

XLink kuvaa HTML:stä tutun yksinkertaisen linkin, jolla on yksi alku- ja loppupiste, mutta lisää siihen linkin käyttäytymiseen liittyviä ominaisuuksia. Määrittelyn varsinainen anti on kuitenkin sen tarjoamissa monimutkaisemmissa linkkityypeissä. XLink:a noudattamalla voi tehdä linkkejä, joilla on useampia alku- ja loppupisteitä. Linkit voivat myös sijaita kokonaan linkkien alku- ja loppupisteisiin liittyvien dokumenttien ulkopuolella, omassa erillisessä dokumentissaan.

XLink käyttää XPointer-määrittelyä osoittamaan linkin päätepisteen dokumentin sisällä. XPointerin avulla linkittäjä ei linkkien päätepisteitä valitessaan ole riippuvainen dokumentin kirjoittajasta, vaan voi osoittaa linkin suoraan haluamaansa kohtaan (toisin kuin esimerkiksi HTML:ssä).

XLink sisältää myös muutamia muita mielenkiintoisia piirteitä. Hypertekstistä kiinnostuneiden kannattaa ainakin vilkaista määrittelyä. Se on kohtuullisen selkeä (ja toivottavasti selkenee edelleen) eikä XPointer:n lukeminen ole tarpeen määrittelyn ymmärtämiseksi. Olettaisin XLink:n painoarvon kasvavan huomattavasti kunhan määrittely saadaan valmiiksi, joten en usko opettelun menevän hukkaan. Muistakaa lukea uusin luonnos!

Extensible Stylesheet Language (XSL)

W3C Working Draft - tammikuu 2000

XSL on muotoilukieli, jolla voidaan kuvata XML-dokumentin ulkoasua. XSL:n avulla määritellään fontit, marginaalit, numeroinnit, jne. - toisin sanoen kaiken, mitä ulkoasun kuvaamiseen tarvitaan. XSL:llä voidaan tehdä myös monimutkaisempia layoutiin liittyviä asioita kuten sisällysluettelon, alaviitteitä, listoja tai taulukoita.

Usein XSL ja XSLT sekoitetaan keskenään; vaikka ne kuuluvat yhteen eivät ne silti tarkoita samaa asiaa. XSL muodostuu kahdesta osasta: XSLT:stä ja XSL-FO:sta. XSLT:ä käytetään muuntamaan alkuperäinen dokumentti uudeksi XML-dokumentiksi, johon on lisätty XSL-FO:n muotoilukomennot. Tästä uudesta dokumentista voidaan sitten formatointisovelluksen avulla tuottaa esimerkiksi tulostettavaksi tarkoitettu PDF-dokumentti tai HTML-sivu, jonka ulkoasu on kuvattu CSS:n avulla.

Tällä hetkellä XSL on vielä aika lailla kesken, eikä sitä hyödyntäviä sovelluksia ole kuin muutama. XSL:ään voi muutenkin suhtautua varauksella, sillä se on saanut osakseen kovaa kritiikkiä erityisesti CSS:n kannattajilta. CSS:n kannattajien mukaan kaikki mitä XSL:llä on mahdollista, voidaan tehdä myös DOM:a ja CSS:ää käyttämällä. Savun hälvenemistä taistelun jäljiltä saa vielä odottaa, sillä kummallakin osapuolella on hyviä argumenttejä. Itse näkisin kummallekin määrittelylle omat käytännölliset sovellusalueensa: CSS sopii mielestäni verkossa esitettäviin tai jälkikäsiteltäviin dokumentteihin, XSL on puolestaan kiinnostavampi paperille (tai PDF:ksi) tulostettaessa.

XSL on kokonaisuudessaan iso ja varsin vaikealukuinen määrittely. Suosittelen mieluummin lukemaan jonkin aihetta käsittelevän oppaan kuin itse määrittelyä. Mutta pitäkää varanne: suurin osa oppaista käsittelee vanhempia XSL:n versioita!

XSL Transformations, versio 1.0 (XSLT)

W3C Recommendation - marraskuu 1999

XSLT on XML-syntaksia noudattava muunnoskieli. Sen avulla XML-dokumentteja voidaan muuntaa toisenlaista rakennemäärittelyä noudattaviksi tai täysin XML:stä eroavan kielen mukaisiksi. Esimerkiksi XML-dokumentista voidaan poistaa merkkaus, jolloin lopputuloksena saadaan puhdas tekstidokumentti, tai se voidaan tulostusta varten muuntaa noudattamaan LaTeX:n muotoilukoodeja.

XSLT käyttää XPath-suositusta käsiteltävien elementtien valitsemiseen, valintaehtoihin ja tekstin tuottamiseen. Yksinkertaisia muunnoksia voi tehdä ilman XPath:n tuntemista, mutta vaativammat ja voimakkaammat säännöt vaativat tietoja XPath:n käytöstä.

XSLT on XSL-ehdotusta ja se on suunniteltu XSL-muotoilukielen (XSL-FO) esittämien vaatimusten täyttämiseen. Osaksi tästä johtuen usein puhutaan pelkästä XSL:stä riippumatta siitä tarkoitetaanko kumpaakin kieltä vaiko vain jompaa kumpaa XSLT:stä tai XSL-FO:ta.

XML Path Language, versio 1.0 (XPath)

W3C Recommendation - marraskuu 1999

XPath:n avulla voidaan paikantaa ja valita XML-dokumentin osia esimerkiksi riippuen elementtien sijoittumisesta muihin elementteihin nähden tai määritteiden arvojen perusteella. Monista XML:ään läheisesti liittyvistä määrittelyistä ja ehdotuksista poiketen XPath ei käytä XML:n syntaksia hyväkseen, vaan sitä varten on kehitty oma, tiivis syntaksinsa.

XPath ei varsinaisesti ole itsenäinen määrittely, sillä se on tarkoitettu käytettäväksi muiden määrittelyjen osana. XPath suunniteltiin XSLT:tä ja XPointer:a kehittäneiden työryhmien yhteistyönä, ja siihen on otettu mukaan kummankin tarvitsemia piirteitä. XPath onkin kiinteä osa molempia määrittelyä.

Associating Style Sheets with XML documents, versio 1.0 (XML Stylesheet)

W3C Recommendation - kesäkuu 1999

Määrittely kuvaa miten XML-dokumentteihin voidaan liittää ulkoisia tyylisäännöstöjä (esimerkiksi CSS- tai XSLT-säännöstöjä). Käytännössä määrittelyn versio 1.0:n kuvaama tapa on samanlainen kuin HTML 4.0:ssa. Erona on, että määritteiden sijaan vastaavat tiedot annetaan prosessointikomennon arvona. Määrittely on suositeltavaa lukemista niille, jotka haluavat määritellä dokumenttiensa ulkoasun esimerkiksi XML:ää ymmärtäviä selaimia varten tai muuntaa XML-dokumenttinsa HTML:ksi perinteisiä WWW-selaimia varten.

Määrittely itsessään kertoo hyvin vähän, sillä se vain viittaa vastaavaan kohtaan HTML 4.0:ssa ja antaa muutaman esimerkin, joten tämän määrittelyn lisäksi täytyy lukea myös pala HTML:ää. Määrittelyn tulevissa versioissa on tarkoitus kuvata toisenlaisia tapoja tyylisäännöstöjen liittämiseksi XML-dokumentteihin.

XML Information Set (Infoset)

W3C Working Draft - joulukuu 1999

Määrittely kuvaa hyvinmuodostetun XML-dokumentin sisältämät tietoalkiot ja alkioihin kuuluvat ominaisuudet. Infoset-määrittelyä noudattamalla esimerkiksi jäsentimen kehittäjä voi varmistaa, että hänen jäsentimensä tarjoaa kaiken dokumentista saatavan tarpeellisen tiedon muille sovelluksille. Määrittely siis kuvaa dokumentista saatavat tiedot, joiden käsittelyyn DOM ja SAX tarjoavat rajapinnan.

Infosetin mukaan XML-dokumentti sisältää kaksi tai useampia alkiota: jokaisessa (hyvinmuodostetussa) dokumentissa on vähintäänkin dokumenttialkio ja elementtialkio. Infoset kertoo mitä ominaisuuksia alkiot voivat sisältää, mitkä alkioista ja ominaisuuksista ovat pakollisia, mitkä vapaaehtoisia, ja millaisia ovat alkioiden ja ominaisuuksien väliset suhteet. Alkiot ja ominaisuudet on kuvattu abstraktilla tasolla, eikä Infoset ota kantaa niiden toteutuksiin.

Vaikka monissa XML:ään liittyvissä määrittelyissä viitataan Infosetin kuvaamiin alkioihin, ei se mielestäni ole yleisesti XML:stä kiinnostuneelle lainkaan oleellinen määrittely. Sen sijaan XML-sovellusten (esim. jäsentimien) kehittäjien kannattaa lukea Infoset läpi.

Canonical XML (Canonical XML)

W3C Working Draft - marraskuu 1999

Vaikka kaksi XML-dokumenttia ovat rakenteellisesti samat, voivat niiden fyysiset esitysmuodot erota toisistaan. Esimerkiksi määritteet voivat olla eri järjestyksessä tai ne voivat käyttää eri merkistöjä. Tällöin dokumentteja vertailevalta sovellukselta vaaditaan tavallisesta vertailusta poikkeavia ominaisuuksia samanlaisten dokumenttien tunnistamiseksi - toisin sanoen vertailua varten on tehtävä omat ohjelmansa.

Canonical XML -määrittely kuvaa tavan muuntaa XML-dokumentteja siten, että niitä voidaan vertailla tavu tavulta, kuten monet perinteiset vertailuohjelmat tekevät. Määrittelyssä kerrotaan mitä tällainen kanoninen dokumentti sisältää ja missä järjestyksessä ja miten sisältö ja merkkaus on koodattu. Muunnos alkuperäisestä dokumentista kanoniseksi dokumentiksi kadottaa rakenteeseen liittyvää tietoa (esimerkiksi kaikki entiteettiviittaukset lavennetaan korvaavaksi tekstiksi), mutta säilyttää sisällön samana.

Canonical XML on tarkoitettu lähinnä sovelluskehittäjille.

XML Fragment Interchange (Fragment)

W3C Working Draft - kesäkuu 1999

Jossain tilanteissa saattaa olla tarpeellista käsitellä vain osaa kokonaisesta XML-dokumentista. Esimerkiksi suuria dokumentteja käsiteltäessä voi olla käytännöllistä tai jopa pakollista antaa vastaanottajalle (joko käyttäjälle tai toiselle sovellukselle) ainoastaan pieni osa kokonaisuudesta. Fragment Interchange -määrittely on kehitetty tällaisia tilanteita varten.

Määrittely kuvaa tiedot ja rakenteet, joita tarvitaan XML-dokumentin katkelman välittämiseksi siten, että vastaanottaja voi jäsentää katkelman kuin se olisi yhä kiinni alkuperäisessä dokumentissa. Tietojen perusteella on myös mahdollista sijoittaa katkelma oikeaan kohtaan alkuperäisessä dokumentissa. Sen sijaan määrittelyssä ei esimerkiksi kerrota miten itse katkelma välitetään vastaanottajalle, ainostaan välityksessä tarvittavat tietorakenteet.

Fragment Interchange on tarkoitettu lähinnä sovelluskehittäjille, jotka toteuttavat tai käyttävät dokumenttikatkelmien välittämiseen perustuvia palveluita. Todennäköisesti määrittelyn käyttötarve jää pieneksi ja vähäiseksi. Määrittely kannattanee lukea ainostaan tarpeen vaatiessa tai jos ylimääräistä aikaa on hukattavaksi asti.

XML Base (XBase)

W3C Working Draft - joulukuu 1999

XLink:stä erilleen irroitettu XBase kuvaa HTML:n BASE-elementtiä vastaavan, XML-dokumentteihin sopivan syntaksin. BASE-elementin on tarkoitus määritellä URI, jonka avulla dokumentissa olevat suhteelliset URI:t voidaan ratkaista. XBasen ratkaisu ongelmaan - HTML:stä poiketen - on xml:base-määrite, jota käytetään paljolti samaan tapaan kuin XML-määrittelyssä esiteltyä xml:lang-määritettä.

XBase on vielä nuori luonnos, joten sen voi olettaa muuttuvan paljonkin ajan kuluessa. En myöskään näe XBase:a mitenkään tärkeänä määrittelynä, joten siihen tutustumisen voi jättää hyvillä mielin väliin. Lukeminen kannattanee ainoastaan niille, jotka ovat aikaisemmin löytäneet käyttöä HTML:n BASE-elementille.

XML Inclusion Proposal (XInclude)

W3C Note - marraskuu 1999

XInclude-muistio esittää yksinkertaisen, matalan tason mallin dokumentti- tai tekstikatkelmien lisäämiseksi XML-dokumenttiin. Se tekee hyvin paljon samaa asiaa kuin esimerkiksi ulkoiset entiteetit XML-määrittelyssä tai XSLT:n include- ja import-elementit. Toteutus kuitenkin pohjaa paljolti XLink-ehdotukseen.

Marraskuun 1999 muistio on vasta ensimmäinen versio XInclude:sta (tosin siitä on olemassa vanhempia versioita eri nimillä) ja se sisältää toistaiseksi ratkaisemattomia - ja mielestäni aika huolestuttavia - kysymyksiä mm. dokumentin jäsentämisestä ja XInclude:n suhtautumisesta XML-määrittelyyn.

XInclude on ainakin toistaiseksi julkaistu muistiona, joilla ei ole samaa auktoriteettia tai painoarvoa kuin W3C:n hyväksymillä määrittelyillä tai hyväksyttäviksi työstettävillä ehdotuksilla.

Uniform Resource Identifiers: Generic Syntax (URI)

RFC 2396 - elokuu 1998

URI-termiin törmää useasti XML:ään liittyviä määrittelyjä lukiessaan. Esimerkiksi nimiavaruudet tunnistetaan URI:en avulla, ulkoisiin entiteetteihin viitataan URI:a käyttämällä, jne. Kaikessa yksinkertaisuudessan URI on yksikäsitteinen tunniste jollekin resurssille (esimerkiksi dokumentille, tyylisäännöstölle tai rakennemäärittelylle). URI:a tutumpi termi on URL, joita käytetään HTML-sivujen osoitteina. URL on osa URI:a eli URI on yläkäsite, joka pitää sisällä URL:n lisäksi myös mm. URN:n.

URI:n RFC (Request for Comments) kuvaa yleisen URI-syntaksin ja antaa yleisiä ohjeita URI:n osajoukkojen (kuten URL tai URN) teosta ja käytöstä. Määrittely on varsin ympäripyöreä ja kaikkeen sopiva, kuten tällaiset ylätason määritelmät yleensä tapaavat olla. Tätä määrittelyä ei ole mitään tarvetta lukea, jollei suunnittele ohjelmaa URI:en tai sen osajoukkojen käsittelyyn, tai sitten kehittele uutta URI-skeemaa. Kiinnostuneiden kannattaa mieluummin vilaista esimerkiksi URL:n kuvaavaa RFC:tä.

Uniform Resource Names: URN Syntax (URN)

RFC 2141 - toukokuu 1997

URN on eräs URI-malli, jota voidaan käyttää pysyvien, paikasta riippumattomien resurssien nimeämiseen. URN ei siis kerro kohteen sijainnista yhtään mitään vaan ainoastaan antaa sille yksikäsitteisen tunnuksen. URN:ää voidaan käyttää esimerkiksi vastaavasti kuin kirjojen ISBN-numerointia.

URN:n RFC on tarkoitettu URN:n mukaisten nimiavaruuksien (ei pidä sekoittaa XML:n nimiavaruuksiin, vaikka kyseessä onkin periaatteessa vastaava asia) laatijoille. Siinä kerrotaan säännöt URN-nimiavaruuksien luomiselle ja käsittelylle. RFC:tä ei siis tarvitse eikä kannata lukea, jos ei ole suunnittelemassa kokonaan uutta URN-avaruutta.


Sivua on edellisen kerran päivitetty: 18.02.2000.
Kommentteja voi lähettää Henri Ruinille osoitteeseen ruini@cs.helsinki.fi.