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 -->
Kuva: XML-tiedosto ja sen rakenneosat.

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ä.

Kuva: selain näyttää virheilmoituksen, jos XML ei ole hyvin muotoiltu.

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ä:

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:

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.

Kaavio: XML-dokumentin dokumenttipuu.

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:

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.