XML

XML ("Extensible Markup Language") on merkintäkielien standardi, joka määrittää tietojen merkintämuodon loogisella rakenteella. XML-kieliä käytetään sekä formaattina tiedonvälitykseen järjestelmien välillä että tiedostomuotona 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 on tekstimuotoinen SGML-kielen yksinkertaistettu osajoukko, joka muistuttaa WWW:ssä käytettyä HTML-kieltä. XHTML on HTML-kielen versio, joka on siivottu puhtaaksi XML-kieleksi.
XML-dokumentin ulkoasu.
Merkistö.
XML-dokumentti on tekstiä, jossa lailliset merkistöt ovat Unicode ja ISO/IEC 10646.
Standardi vaatii XML-jäsentimiä tukemaan Unicoden UTF-8- ja UTF-16-merkistökoodauksia. Jäsennin saattaa tukea muitakin koodauksia, esimerkiksi ISO 8859-1:aa.
Prologi.
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öä.
&lt;?xml version="1.0" encoding="UTF-8" standalone="yes"?&gt;
DOCTYPE.
DOCTYPE-määrityksellä dokumentille voidaan määrittää DTD (Document Type Definition), esimerkkinä XHTML-dokumentin DOCTYPE-määrittely:
&lt;!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"&gt;
Elementit ja attribuutit.
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 tägeillä:
&lt;elementti attribuutti="arvo"&gt;
&lt;/elementti&gt;
"Tyhjä elementti", voidaan merkitä joko alku- ja loppumerkinnällä, joiden välissä ei ole sisältöä tai lyhennetyllä merkintätavalla:
&lt;elementti attribuutti="arvo"/&gt;
Isot ja pienet kirjaimet katsotaan elementtien nimissä eri merkeiksi. Esimerkiksi codice_1 ja codice_2 muodostavat oikein muotoillun parin, kun taas codice_1 ja codice_4 eivät näin tee.
Attribuutit ovat avain–arvo-pareja, joten tietyn niminen attribuutti voi esiintyä samassa alkutägissä vain yhden kerran eikä niiden järjestyksellä ole merkitystä.
Nimiavaruusmäärittelyt.
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:
&lt;svg xmlns="http://www.w3.org/2000/svg"
 xmlns:xlink="http://www.w3.org/1999/xlink"&gt;
 &lt;a xlink:href="/svg/index.html"&gt;
 &lt;/a&gt;
&lt;/svg&gt;
Esimerkissä elementit codice_5 ja codice_6 kuuluvat SVG-nimiavaruuteen, kun taas attribuutti codice_7 kuuluu XLink-nimiavaruuteen, sillä nimen edessä on nimiavaruutta vastaava etuliite kaksoispisteellä codice_8 erotettuna.
Kommentit.
XML-dokumentti voi elementtimerkintöjen ulkopuolella sisältää "kommentteja". Kukin kommentti erotetaan muusta tekstistä codice_9 ja codice_10 merkintöjen väliin:
&lt;!--yksi kommentti--&gt;
&lt;elementti&gt;
&lt;!--toinen kommentti--&gt;
&lt;/elementti&gt;
Kommentti ei SGML-yhteensopivuuden vuoksi saa sisältää codice_11 merkkijonoa ja se päättyy ensimmäiseen codice_10 merkintään. Tästä syystä kommentit eivät voi olla sisäkkäin. Kommenttia ei voi asettaa alku- tai lopputägin sisään vaan se pitää olla tägien välissä tai niiden ulkopuolella.
Käsittelyohjeet.
"Käsittelyohjeet" ovat pyyntöjä XML-käsittelijälle ohjata suoritus toiselle ohjelmalle, yleisenä esimerkkinä on tiedostoon liitetyn XSLT-dokumenttiin viittaaminen:
&lt;elementti&gt;
&lt;?xml-stylesheet type="text/xsl" href="style.xsl"?&gt;
&lt;/elementti&gt;
XML-prologi ei samannäköisestä ulkoasustaan huolimatta ole käsittelyohje.
XML-dokumentin oikeellisuus.
XML:n oikeellisuudelle on kaksi määritelmää
Jotta dokumenttia voidaan pitää "hyvin muodostettuna", sen täytyy täyttää vähintään seuraavat vaatimukset:
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.
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ä:
 &lt;!ELEMENT luettelohenkiloista (henkilo*)&gt;
 &lt;!ELEMENT henkilo (nimi, syntymaaika?, sukupuoli?, sosiaaliturvatunnus?)&gt;
 &lt;!ELEMENT nimi (#PCDATA)&gt;
 &lt;!ELEMENT syntymaaika (#PCDATA)&gt;
 &lt;!ELEMENT sukupuoli (#PCDATA)&gt;
 &lt;!ELEMENT sosiaaliturvatunnus (#PCDATA)&gt;
Monimutkaisempia ja uudempia määrittelykieliä ovat XML Schema ja RELAX NG. Ne ovat itsessään XML-dokumentteja. Näiden avulla voidaan esimerkiksi asettaa rajoituksia numeroiden arvoalueille.
Yleisiä XML-työkaluja.
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.
XML-dokumenttien käytöllä tavoitellaan muun muassa