XML

Wikipedia
Loikkaa: valikkoon, hakuun

XML (Extensible Markup Language) on tietynlaisten merkintäkielien yläkäsite tai standardi, jolla tiedon merkitys on kuvattavissa tiedon sekaan. XML-kieliä käytetään sekä formaattina tiedonvälitykseen järjestelmien välillä että formaattina dokumenttien tallentamiseen. XML-kieli on rakenteellinen kuvauskieli, joka auttaa jäsentämään laajoja tietomassoja selkeämmin. XML:n kehittäjä on World Wide Web Consortium.

XML-dokumenttien käsittelyyn on tarjolla paljon erilaisia työkaluja. Nämä työkalut toimivat samalla tavalla riippumatta siitä, kuvaako XML-dokumentti WWW-sivua vai muita tietoja.

XML on tekstimuotoista ja muistuttaa HTML-kieltä, jolla WWW-sivut kirjoitetaan, ja ne kummatkin ovat SGML-kielen yksinkertaistettuja osajoukkoja. XML ei kuitenkaan ole tarkoitettu sivunkuvauskieleksi kuten HTML, vaan se on metakieli, jolla kuvataan tiedon rakenne ilman ennalta määrättyjä koodeja. XML-kielellä voi muodostaa uusia koodeja, joiden avulla voidaan luoda dokumentteja hyvinkin erilaisiin ja erityisiin tarkoituksiin. XHTML on HTML-kielen versio, joka on siivottu puhtaaksi XML-kieleksi.

XML-dokumentin ulkoasu[muokkaa | muokkaa wikitekstiä]

XML-dokumentti on tekstiä; tavallisesti UTF-8-koodattua. Standardi vaatii XML-jäsentimiä tukemaan Unicoden UTF-8- ja UTF-16-koodauksia. Jäsennin saattaa tukea muitakin koodauksia, esimerkiksi ISO 8859-1:aa.

Prologi[muokkaa | muokkaa wikitekstiä]

XML-dokumentti voi alkaa prologilla, joka sisältää XML-version, sekä mahdollisesti dokumentin koodauksen ja tiedon voidaanko mahdollisesti jäljempänä viitattu DTD jättää lukematta. Prologia ei saa dokumentissa edeltää yhtään merkkiä muuta sisältöä.

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>

DOCTYPE[muokkaa | muokkaa wikitekstiä]

DOCTYPE-määrityksellä dokumentille voidaan määrittää DTD (Document Type Definition), esimerkkinä XHTML-dokumentin DOCTYPE-määrittely:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

Elementit ja attribuutit[muokkaa | muokkaa wikitekstiä]

XML-dokumentin data koostuu sen sisältämästä tekstistä sekä merkinnöistä, joita ovat sisällölle rakenteen ja merkityksen antavat elementit ja elementtejä tarkentavat attribuutit. Elementtejä voi olla rajattomasti sisäkkäin tai peräkkäin, mutta ylimmällä tasolla kaikkien elementtien tulee olla yhden juurielementin lapsia. Elementti kuvataan alku- ja loppumerkinnöillä eli tageilla:

<elementti attribuutti="arvo">
...
</elementti>

Tyhjä elemenetti, voidaan merkitä joko alku- ja loppumerkinnällä, joiden välissä ei ole sisältöä tai lyhennetyllä merkintätavalla:

<elementti attribuutti="arvo"/>

Isot ja pienet kirjaimet katsotaan elementtien nimissä eri merkeiksi. Esimerkiksi <Esimerkki> ja </Esimerkki> muodostavat oikein muotoillun parin, kun taas <Esimerkki> ja </esimerkki> eivät näin tee.

Attribuutit ovat avain–arvo-pareja, joten tietyn niminen attribuutti voi esiintyä samassa alkutagissa vain yhden kerran eikä niiden järjestyksellä ole merkitystä.

Nimiavaruusmäärittelyt[muokkaa | muokkaa wikitekstiä]

Elementtien aloitusmerkinnät voivat sisältää attribuuttien tapaan myös nimiavaruusmäärittelyjä. Niillä voidaan erottaa muuten saman nimiset elementit (tai attribuutit) eri nimiavaruuksiin, jolloin eri XML-dokumentteja yhdisteltäessä vältytään tahattomilta nimien yhteentörmäyksiltä. Nimiavaruusmäärittely voi luoda joko oletusnimiavaruuden tai nimiavaruusetuliitteen. Yksikäsitteisyyden varmistamiseksi nimiavaruuden arvo on muodoltaan URI. Esimerkki SVG-dokumentista, jossa määritellään SVG:n oletusnimiavaruus ja etuliitteen avulla käytettävä XLink-nimiavaruus:

<svg xmlns="http://www.w3.org/2000/svg"
     xmlns:xlink="http://www.w3.org/1999/xlink">
    <a xlink:href="/svg/index.html">
        ...
    </a>
</svg>

Esimerkissä elementit <svg> ja <a> kuuluvat SVG-nimiavaruuteen, kun taas attribuutti href kuuluu XLink-nimiavaruuteen, sillä nimen edessä on nimiavaruutta vastaava etuliite kaksoispisteellä : erotettuna.

Kommentit[muokkaa | muokkaa wikitekstiä]

XML-dokumentti voi elementtimerkintöjen ulkopuolella sisältää kommentteja. Kukin kommentti erotetaan muusta tekstistä <!-- ja --> merkintöjen väliin:

<!--yksi kommentti-->
<elementti>
<!--toinen kommentti-->
...
</elementti>

Kommentti ei SGML-yhteensopivuuden vuoksi saa sisältää -- merkkijonoa ja se päättyy ensimmäiseen --> merkintään. Tästä syystä kommentit eivät voi olla sisäkkäin. Kommenttia ei voi asettaa alku- tai lopputagin sisään vaan se pitää olla tagien välissä tai niiden ulkopuolella.

Käsittelyohjeet[muokkaa | muokkaa wikitekstiä]

Käsittelyohjeet ovat pyyntöjä XML-käsittelijälle ohjata suoritus toiselle ohjelmalle, yleisenä esimerkkinä on tiedostoon liitetyn XSLT-dokumenttiin viittaminen:

<elementti>
<?xml-stylesheet type="text/xsl" href="style.xsl"?>
...
</elementti>

XML-prologi ei samannäköisestä ulkoasustaan huolimatta ole käsittelyohje.

XML-dokumentin oikeellisuus[muokkaa | muokkaa wikitekstiä]

XML:n oikeellisuudelle on kaksi määritelmää

  1. hyvin muodostettu (Well-formed) dokumentti täyttää kaikki syntaksisäännöt
  2. kelvollinen eli validi (Valid), jolloin XML-dokumentin rakenne ja sisältö on jonkin dokumenttityypin määritysten mukainen.

Jotta dokumenttia voidaan pitää hyvin muodostettuna, sen täytyy täyttää vähintään seuraavat vaatimukset:

  • Dokumentti sisältää vain sallittuja ja oikein koodattuja Unicode-merkkejä
  • Merkkejä < ja & käytetään vain niiden ollessa osana merkintäkoodia.
  • Dokumentissa on tasan yksi juurielementti.
  • Ei-tyhjillä elementeillä on aina sekä alku- että loppumerkki, joiden nimi vastaa toistaan täsmälleen. Tyhjille elementeille voidaan käyttää lyhennettyä merkintätapaa.
  • Elementit voivat olla sisäkkäisiä, mutta ne eivät mene ristiin toisten elementtien kanssa.
  • Elementtien ja attribuuttien nimet sisältävät vain sallittuja merkkejä
  • Jokaisen attribuutin arvo on erotettu lainausmerkkien " tai heittomerkkien ' sisään.
  • Dokumentissa käytettyjen entiteettien pitää olla kelvollisesti määriteltyjä.

Näiden vaatimusten täyttäminen on ratkaisevan tärkeää, sillä mikäli dokumentti ei ole hyvin-muodostettu, ei sitä voida käsitellä XML:nä ja jäsentimen on määritysten mukaan pakko keskeyttää prosessointi ja hylätä koko tiedosto. Tätä menettelytapaa nimitetään myös drakoniseksi virheenkäsittelyksi.

Määritellyn kielen kielioppisäännöt[muokkaa | muokkaa wikitekstiä]

XML määrittelee usein johonkin sovellukseen käytetyn tiedon rakenteen. Tätä rakennetta usein sanotaan kieleksi. Jos kieli on määritelty jollakin XML-kuvauskielellä, XML-dokumentin kielen mukaisuus voidaan tarkastaa automaattisella työkalulla eli validaattorilla.

XML-kuvauskieli määrittelee esimerkiksi elementit, niiden väliset suhteet ja arvojen arvoalueet.

Yksinkertaisin kuvauskieli on DTD (Document Type Definition). Esimerkkinä DTD-määrittelystä voimme määritellä luettelon henkilöistä:

 <!ELEMENT luettelohenkiloista (henkilo*)>
 <!ELEMENT henkilo (nimi, syntymaaika?, sukupuoli?, sosiaaliturvatunnus?)>
 <!ELEMENT nimi (#PCDATA)>
 <!ELEMENT syntymaaika (#PCDATA)>
 <!ELEMENT sukupuoli (#PCDATA)>
 <!ELEMENT sosiaaliturvatunnus (#PCDATA)>

Monimutkaisempia ja uudempia määrittelykieliä ovat XML-skeema ja RELAX NG. Ne ovat itsessään XML-dokumentteja. Näiden avulla voidaan esimerkiksi asettaa rajoituksia numeroiden arvoalueille.

Yleisiä XML-työkaluja[muokkaa | muokkaa wikitekstiä]

XML-kielet kuvaavat dokumentin loogista rakennetta, eivät niiden esittämistä. Niinpä samasta XML-dokumentista voidaankin luoda useita erilaisia esityksiä. Samasta varastotilanteen kuvaavasta XML-tiedosta voidaan tuottaa esimerkiksi sekä varastotilanteen kuvaavat WWW-sivut että tulostettavat rahtikirjat.

Yksi ratkaisu XML-sivujen muuntamiseen erilaisiin tulostusformaatteihin on HTML:n kanssa usein käytetty CSS. CSS ei kuitenkaan itse ole XML:n mukainen kieli. Mikäli XML-dokumentin pohjalta halutaan muodostaa uusi XML-tiedosto eri rakenteella, voidaan tarkoitukseen käyttää XML:n mukaista XSLT-muunnoskieltä.

XSLT-kielen kanssa määritellään XPath-osoitinkieli, jolla voidaan määritellä helposti osajoukkoja XML-dokumentista.

FO-sivunkuvauskieli on yleinen XML-formaatti, johon dokumentteja voidaan muuntaa helpompaa tulostamista varten. Se siis vastaa jossain määrin HTML-dokumentin ulkoasuominaisuuksia.

XML:n käytön tuomia etuja[muokkaa | muokkaa wikitekstiä]

XML-dokumenttien käytöllä tavoitellaan muun muassa

  • sisältöjen yhdenmukaisempaa tallennusmuotoa
  • sisältövirheiden välttämistä
  • tiedon hakemisen helpottamista
  • sisällön monikäyttöisyyden ja monikanavajulkaisemisen parantamista
  • käsittelyvaiheiden automatisointia
  • riippumattomuutta tietystä ohjelmistotoimittajasta
  • tiedon pitkäaikaissäilyvyyden parantamista
  • integraatioiden helpottamista
  • SEPA ja XML sanomat yleensä yritysten välisessä tiedonsiirrossa

XML-pohjaisia standardeja ja määrityksiä[muokkaa | muokkaa wikitekstiä]

Tietämyksen esittäminen[muokkaa | muokkaa wikitekstiä]

Asiakirjojen esittäminen[muokkaa | muokkaa wikitekstiä]

Asiakirjojen yms. erikoisosat[muokkaa | muokkaa wikitekstiä]

Tiedonsiirto[muokkaa | muokkaa wikitekstiä]

  • XML-RPC - toiminnon suorittaminen verkon yli
  • SOAP - toiminnon suorittaminen verkon yli
  • AJAX - toiminnon suorittaminen verkon yli
  • WSDL - verkkoon tarjottujen palvelujen kuvaus
  • WML - WAP-sivut
  • XSQL - XML:n ja SQL:n yhdistelmä tiedonhakuun

Sovellusalueittain[muokkaa | muokkaa wikitekstiä]

Katso myös[muokkaa | muokkaa wikitekstiä]

Aiheesta muualla[muokkaa | muokkaa wikitekstiä]