XML
XML KOULUTUSTA VUONNA 2025
Kysy myös tuotekohtaisia koulutuksia, kuten Altova XMLSpy. Kurssit saatavilla kautta Suomen. Tule ja varaa oma koulutustapahtumasi heti! Koulutuksen järjestää asiantuntijasi Koulutus- ja konsultointipalvelu KK Mediat.
XML:n perusteet: rakenne ja syntaksi
Tämä opas esittelee XML:n rakenteen ja syntaksin keskeiset periaatteet. Käymme läpi XML:n elementit, attribuutit, prosessointikäskyt, kommentit ja tekstisisällön. Tutustumme myös dokumenttipuun ohjelmalliseen käsittelyyn DOM:n avulla. Lisäksi tarkastelemme, mitä tarkoittaa hyvin muotoiltu ja validi XML, sekä millaisia parhaita käytäntöjä kannattaa hyödyntää tietorakenteen suunnittelussa.
Yleiskatsaus XML-dokumentin rakenteeseen
XML-dokumentit kuvaavat tiedon ja sen rakenteen koneluettavassa muodossa.
XML-tiedoston tunnistaa sen tiedostopäätteestä, joka on yleensä .xml
.
Tiedosto aukeaa Muistiolla tai millä tahansa tekstieditorilla, sillä se sisältää tekstiä UTF-8-enkoodauksella.
Alla on esimerkki yksinkertaisesta XML-rakenteesta:
<?xml version="1.0" encoding="UTF-8"?>
<varasto>
<kirja>
<isbn sys="fi">1254-4564232</isbn>
<kirjailija>Card, Orson Scott</kirjailija>
<kirjan_nimi>Ender</kirjan_nimi>
</kirja>
<kirja>
<isbn sys="fi">1254-45654444</isbn>
<kirjailija>Card, Orson Scott</kirjailija>
<kirjan_nimi>Kansanmurha</kirjan_nimi>
</kirja>
</varasto>
XML-muotoiltu data koostuu eri osista, joista tärkeimmät ovat:
- Prosessointikäskyt
-
Prosessointikäskyt ohjaavat XML-parserin toimintaa.
Prosessointikäskyn syntaksi on:
<? PROSESSOINTIKÄSKY ?>
. Esimerkiksi<?xml version="1.0" encoding="UTF-8"?>
- Elementtit
- Elementit kuvaavat konkreettisia asioita ja tietorakenteita.
XML esittää elementit tageilla, esimerkiksi
<elementti> ...</elementti>
). - Ominaisuudet
- Ominaisuudet tarkentavat elementin sisältämää tietoa.
XML esittää ominaisuudet attribuuteilla, esimerkiksi
<yritys toimiala="koulutus">KK Mediat</yritys>
- Teksti
- Jokainen elementti koostuu kolmenlaisesta informaatiosta: nimestä, ominaisuuksista (attribuuteista) ja sisällöstä. Teksti ilmaisee varsinaisen tiedon.
- Kommentit
- XML esittää kommentit SGML- ja HTML-kielistä tutulla syntaksilla:
<!-- -->
. Esimerkiksi:<!-- tämä on kommentti -->

Kelpoisuusvaatimukset: hyvin muotoiltu ja validi XML
XML-datan käsittely edellyttää, että data on hyvin muotoiltua ja validia.
Hyvin muotoiltu XML-dokumentti noudattaa XML:n yleisiä syntaksisääntöjä täsmällisesti. Koneellinen käsittely edellyttää virheetöntä toteutusta, koska pienetkin syntaksivirheet estävät automatisoidun käsittelyn.
Validi XML täyttää erikseen määritellyn rakenteen vaatimukset, esimerkiksi DTD- tai XML-skeemamäärityksen mukaisesti. Validius ei ole aina pakollista. Hyvin muotoiltu XML-dokumentti on luettavissa, vaikka se sisältäisi validointivirheitä.
Järjestelmät tarjoavat useita menetelmiä XML:n kelvollisuuden tarkistamiseen. Yksinkertainen ja nopea tapa on avata XML-tiedosto verkkoselaimella (kuten Edge tai Chrome) tai taulukkolaskentaohjelmalla (kuten Excel tai Sheets). Jos tiedosto avautuu ilman virheilmoituksia, se osoittaa, että tiedosto on hyvin muotoiltu. Täydellinen validointi DTD:tä tai skeemaa vastaan edellyttää erikoistuneiden työkalujen (kuten XMLSpy tai VS Code) käyttöä tai XML-parserin hyödyntämistä.

Hyvin muotoiltu XML täyttää XML:n syntaksisäännöt
Hyvin muotoiltu XML-dokumentti noudattaa XML-sovelluksille määriteltyä yleistä syntaksia ja sääntöjä. Tämä tarkoittaa, että:
- XML-dokumentti käyttää sopivaa merkistöä (yleensä UTF-8).
- XML-dokumentti sisältää yhden ja vain yhden juurielementin.
- Kaikki XML-dokumentin elementit suljetaan samassa järjestyksessä kuin ne avattiin (peilikuvana).
- Ominaisuuksien arvot sijoitetaan lainausmerkkien sisään.
- Elementin nimen tulee alkaa kirjaimella ja se ei saa sisältää muun muassa kaksoispistettä tai xml-alkuliitettä.
- Tekstisisältö ei saa sisältää erikoismerkkejä kuten <,>,”,' ja & - ne on korvattava niitä vastaavalla entiteettimerkinnällä (<> jne).
- Isot ja pienet kirjaimet elementtien nimissä tarkoittavat eri asiaa. Toisin sanoen ”ELEMENTTI” ja ”elementti” ovat kaksi eri asiaa.
- XML säilyttää välilyönnit ja rivinvaihdot (eli white-space), ellei toisin määrätä xml:space-attribuutilla tai parserin asetuksissa.
Hyvin muotoiltu XML on välttämätön XML:n käsittelylle. Jos data ei täytä hyvin muotoillun XML:n vaatimuksia, järjestelmä ei pysty käsittelemään sitä.
Validi XML täyttää erillisen rakennemäärityksen vaatimukset
Validi XML tarkoittaa sitä, että XML-dokumentti viittaa DTD:hen (Document Type Definition) tai XML-skeemaan, jotka määrittelevät XML-dokumentille sallitun rakenteen. Tällöin:
- XML-dokumentti viittaa DTD- tai XML-skeema muotoiseen kuvaukseen
- XML-dokumentti täyttää DTD:ssä tai skeemassa määritellyn rakenteen
Validointivirheistä huolimatta XML-dataa voidaan käyttää, jos XML-parseria pyydetään ohittamaan havaitut virheet.
Elementit ja ominaisuudet
XML perustuu dataa kuvaavien elementtien ja niiden ominaisuuksien määrittelyyn. Elementti tarkoittaa merkittyä osaa tiedosta, ja ominaisuus kuvaa elementtiin liittyvää lisätietoa. Käytännössä elementit näkyvät tageina ja ominaisuudet attribuutteina, kuten HTML-kielessä.
HTML-kielestä poiketen jokainen XML-elementti sisältää sekä alku- että lopputagin.
<elementti> </elementti>
XML-elementin ominaisuudet kiinnitetään aloitustagiin attribuuttien avulla:
<elementti attribuutti="arvo">
Jos elementillä ei ole varsinaista tekstisisältöä, lopetustagin voi korvata itsesulkevalla tagilla:
<elementti />
XML-elementti koostuu kolmesta osasta: nimestä, ominaisuuksista (attribuuteista) ja sisällöstä. Elementin sisältö voi olla pelkkää tekstiä, alielementtejä tai molempia.
Suunnitteluvaiheessa kehittäjät jaottelevat dokumentin käyttämät elementit rakenne- ja sisältöelementteihin. Rakenne-elementit kuvaavat dokumentin rakennetta, kun taas sisältöelementit kuvaavat tietosisältöä.
Yksinkertaisimmillaan XML-dokumentti koostuu ainoastaan juurielementistä. Jos elementillä ei ole varsinaista sisältöä tai sen sisältö on ilmaistu attribuuttien kautta, kehittäjä voi esittää elementin lopetuksen itsesulkevalla tagilla:
<?xml version="1.0" encoding="UTF-8"?>
<data/>
Jos elementillä on sisältöä kehittäjä merkitsee elementin alku- ja lopetustagin erillisinä:
<?xml version="1.0" encoding="UTF-8"?>
<data lang="fi">
<copyright> KK Mediat</copyright>
</data>
XML ja DOM: Dokumenttipuu mahdollistaa XML:n koneellisen käsittelyn
Kehittäjät käyttävät DOM:ia rakenteellisten asiakirjojen, kuten XML-dokumenttien, ohjelmalliseen käsittelyyn. DOM esittää XML-tiedoston hierarkkisena dokumenttipuuna, joka koostuu solmuista (nodes). Jokainen solmu edustaa yksittäistä elementtiä, attribuuttia tai tekstisisältöä XML-dokumentin rakenteessa.
Seuraava esimerkki näyttää yksinkertaisen XML-dokumentin, joka sisältää taulukkodataa.
<?xml version="1.0" encoding="UTF-8"?>
<table>
<tbody>
<tr>
<td> Sisältö 1 </td>
<td> Sisältö 2 </td>
</tr>
<tr>
<td> Sisältö 3 </td>
<td> Sisältö 4 </td>
</tr>
</tbody>
</table>
Kehittäjä voi visualisoida tämän seuraavanlaisena dokumenttipuuna.
Dokumenttipuun ylin olio on document
.
Sen ensimmäinen lapsi on XML-dokumentin varsinainen juurisolmu (root element) eli table
.
Jokaisella solmulla voi olla lapsisolmuja (child nodes, children), jotka edustavat elementin tietosisältöjä: alielementtejä, attribuutteja tai tekstisisältöä.
Kaikilla solmuilla paitsi juurisolmulla on hierarkiassa yläpuolella yksi äitisolmu (parent node), joka kuvaa ylempää rakennetasoa.
Dokumenttipuun rakenne muistuttaa hyvin pitkälti oikeaa puuta:
- Puussa on juuri → dokumenttipuussa on juurisolmu (root node)
- Puussa on oksia → dokumenttipuussa on lapsielementtejä (children, child node)
- Puussa on lehtiä → dokumenttipuussa on solmuja (nodes), joilla ei ole enää omia lapsielementtejä.
Ohjelmistokehityksen näkökulmasta DOM-malli tarjoaa tehokkaan tavan käsitellä XML-dokumentteja. Jokainen solmu on erillinen olio, jolla on omat sisäänrakennetut ominaisuudet ja menetelmät solmukohdan käsittelyyn. Näiden avulla kehittäjä voi liikkua vapaasti XML-rakenteessa solmujen välillä, dataa lukien ja muokaten.
Usein esitettyjä kysymyksiä XML-dokumentin rakenteesta
- Kuinka elementit ja attribuutit tulisi nimetä? <ELEMENTTI>, Elementti, vai elementti?
- Elementtien ja attribuuttien nimeämisessä on suositeltavaa käyttää ainoastaan pieniä kirjaimia, esimerkiksi
<elementti>
. Tämä suositus on kehittynyt ajan myötä, minkä takia vanhemmissa XML-dokumenteissa voi nähdä poikkeavaa käytäntöä. - Elementit vai ominaisuudet - kumpaa tulisi käyttää datan kuvaamiseen?
- Yleinen suositus on tallentaa attribuutteihin ainoastaan dataa, joka ei ole käyttäjän nähtävissä. Tämä valinta on kuitenkin usein projektikohtainen ja voi vaihdella henkilökohtaisten mieltymysten mukaan. Yleisesti ottaen järkevin ratkaisu on suunnitella ensin datan rakenne, ja vasta sen jälkeen miettiä XML-dokumentin rakennetta ja esitystapaa.