Ero sivun ”XML” versioiden välillä

Wikipediasta
Siirry navigaatioon Siirry hakuun
[arvioimaton versio][odottaa arviointia]
Poistettu sisältö Lisätty sisältö
Kvlut (keskustelu | muokkaukset)
 
(33 välissä olevaa versiota 15 käyttäjän tekeminä ei näytetä)
Rivi 1: Rivi 1:
{{lähteetön}}
'''XML''' (''Extensible Markup Language'') on [[merkintäkieli]] tai standardi, jolla tiedon merkitys on kuvattavissa tiedon sekaan. XML-kieltä 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''' (''Extensible Markup Language'') on [[merkintäkieli]]en [[standardi]], joka määrittää tietojen merkintämuodon loogisella rakenteella. XML-kieliä käytetään sekä formaattina tiedonvälitykseen järjestelmien välillä että [[tiedostomuoto]]na 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-dokumenttien käsittelyyn on tarjolla paljon erilaisia työkaluja. Nämä työkalut toimivat samalla tavalla riippumatta siitä, kuvaako XML-dokumentti [[WWW|WWW-]]sivua vai muita tietoja.


== Yleistietoa ==
XML on tekstimuotoista ja muistuttaa [[HTML|HTML-]]kieltä, jolla [[WWW|WWW-]]sivut kirjoitetaan, ja ne kummatkin ovat [[SGML|SGML-]]kielen yksinkertaistettuja osajoukkoja. XML-kieli ei kuitenkaan ole tarkoitettu sivunkuvauskieleksi kuten HTML, vaan sillä 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 pääasiallinen tarkoitus on serialisointi, eli mielivaltaisen datan tallentaminen, siirtäminen ja rekonstruoiminen. Jotta kaksi erillistä järjestelmää voivat vaihtaa tietoa, niiden täytyy sopia tiedostomuodosta. XML standardoi tämän prosessin.


Merkintäkielenä XML nimeää, kategorisoi ja järjestää tiedot rakenteellisesti. XML-tägit edustavat datarakennetta ja sisältävät metatietoja. Täggien sisällä oleva tieto on dataa, joka on koodattu XML-standardin mukaisesti. Lisäksi XML-skeema (XSD) määrittelee tarvittavat metatiedot XML tulkitsemiseksi ja validoinniksi. Skeema toimii dokumentin rakenteen ja sisällön formaalina kuvauksena, jonka avulla voidaan varmistaa tiedon oikeellisuus ja yhtenäisyys.

XML laaja käyttö perustuu sen kykyyn kuvata ja vaihtaa dataa riippumatta alustan tai ohjelmiston tyypistä. Tämä tekee siitä ihanteellisen välineen tietojärjestelmien integrointiin ja datan siirtoon. Esimerkiksi verkkosivustot, tietokannat ja erilaiset sovellukset voivat hyödyntää XML:ää tiedon välittämiseen ja tallentamiseen standardoidussa muodossa.

XML-dokumentit koostuvat hierarkkisesta rakenteesta, jossa elementit voivat olla sisäkkäin ja sisältää attribuutteja. Tällainen rakenne mahdollistaa monimutkaisten tietomallien kuvaamisen selkeällä ja yksiselitteisellä tavalla.
XML käytöllä on monia etuja. XML mahdollistaa datan yhtenäisen tallennusmuodon, mikä helpottaa tiedon käsittelyä ja jakamista. XML-skeemojen avulla voidaan varmistaa, että dokumentit noudattavat ennalta määriteltyjä rakenteita ja sääntöjä. XML-dokumentteja voidaan käyttää monissa eri sovelluksissa ja alustoilla ilman muunnoksia. XML-standardien avulla järjestelmät voivat vaihtaa tietoa sujuvasti, mikä parantaa eri järjestelmien välistä yhteentoimivuutta. XML on tekstiin perustuva formaatti, joka on helppo arkistoida ja säilyttää pitkäaikaisesti.
== XML-dokumentin ulkoasu ==
== XML-dokumentin ulkoasu ==
=== Merkistö ===
XML-dokumentti on tekstiä, jossa lailliset [[merkistö]]t ovat [[Unicode]] ja [[ISO/IEC 10646]].<ref name="xmlcharset">{{Verkkoviite | osoite = https://www.w3.org/TR/2008/REC-xml-20081126/#charsets | nimeke = 2.2 Characters | viitattu = 29.2.2020 | kieli = {{en}} }}</ref>
Standardi vaatii XML-[[Jäsennin|jäsentimiä]] tukemaan Unicoden [[UTF-8]]- ja [[UTF-16]]-merkistökoodauksia.<ref name="xmlcharset" /> Jäsennin saattaa tukea muitakin koodauksia, esimerkiksi [[ISO 8859-1|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öä.
XML-dokumentti on tekstiä; tavallisesti [[UTF-8|UTF-8-]]koodattua. Standardi vaatii [[Jäsennin|XML-jäsentimiä]] tukemaan [[Unicode]]n UTF-8- ja [[UTF-16|UTF-16-]]koodauksia. Jäsennin saattaa tukea muitakin koodauksia, esimerkiksi [[ISO 8859-1|ISO 8859-1:aa]].
<syntaxhighlight lang="xml">
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
</syntaxhighlight>


=== DOCTYPE ===
XML-dokumentti voi alkaa ''prologilla'', joka sisältää XML-version, sekä mahdollisesti dokumentin koodauksen ja tiedon voidaanko jäljempänä viitattu DTD jättää lukematta.
<source lang="xml">
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
</source>


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


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


=== Elementit ja attribuutit ===
XML-dokumentti koostuu ''elementeistä''. Elementti kuvataan tagilla, joka koostuu alkumerkistä ja loppumerkistä. Elementtejä voi olla rajattomasti sisäkkäin:
<source lang="xml">
<elementti attribuutti="arvo">
...
</elementti>
</source>


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ä:
Isot ja pienet kirjaimet katsotaan elementtien nimissä erillisiksi merkeiksi. Esimerkiksi <tt><Esimerkki></tt> ja <tt></Esimerkki></tt> muodostavat oikein muotoillun parin, kun taas <tt><'''E'''simerkki></tt> ja <tt></esimerkki></tt> eivät näin tee
<syntaxhighlight lang="xml">
<elementti attribuutti="arvo">
...
</elementti>
</syntaxhighlight>

''Tyhjä elementti'', voidaan merkitä joko alku- ja loppumerkinnällä, joiden välissä ei ole sisältöä tai lyhennetyllä merkintätavalla:
<syntaxhighlight lang="xml">
<elementti attribuutti="arvo"/>
</syntaxhighlight>

Isot ja pienet kirjaimet katsotaan elementtien nimissä eri merkeiksi. Esimerkiksi <code><Esimerkki></code> ja <code></Esimerkki></code> muodostavat oikein muotoillun parin, kun taas <code><'''E'''simerkki></code> ja <code></esimerkki></code> 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 ''[[nimiavaruus]]mää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:
<syntaxhighlight lang="xml">
<svg xmlns="http://www.w3.org/2000/svg"
xmlns:xlink="http://www.w3.org/1999/xlink">
<a xlink:href="/https/fi.wikipedia.org/svg/index.html">
...
</a>
</svg>
</syntaxhighlight>

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

=== Kommentit ===

XML-dokumentti voi elementtimerkintöjen ulkopuolella sisältää ''kommentteja''. Kukin kommentti erotetaan muusta tekstistä <code>&lt;!--</code> ja <code>--&gt;</code> merkintöjen väliin:
<syntaxhighlight lang="xml">
<!--yksi kommentti-->
<elementti>
<!--toinen kommentti-->
...
</elementti>
</syntaxhighlight>

Kommentti ei SGML-yhteensopivuuden vuoksi saa sisältää <code>--</code> merkkijonoa ja se päättyy ensimmäiseen <code>--></code> 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:
<syntaxhighlight lang="xml">
<elementti>
<?xml-stylesheet type="text/xsl" href="style.xsl"?>
...
</elementti>
</syntaxhighlight>

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


== XML-dokumentin oikeellisuus ==
== XML-dokumentin oikeellisuus ==


XML:n oikeellisuudelle on kaksi määritelmää: ''hyvin muodostettu'' (Well-formed) dokumentti täyttää kaikki syntaksisäännöt, jolloin lopetuselementit eivät voi mennä ristiin tai puuttua; sekä ''validi'' (Valid), jolloin XML-dokumentti on jonkin dokumenttityypin mukainen.
XML:n oikeellisuudelle on kaksi määritelmää
# ''hyvin muodostettu'' (Well-formed) dokumentti täyttää kaikki syntaksisäännöt
# ''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:
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ä <code>&lt;</code> ja <code>&amp;</code> käytetään vain niiden ollessa osana merkintäkoodia.
* Dokumentissa on tasan yksi juurielementti.
* Dokumentissa on tasan yksi juurielementti.
* Ei-tyhjillä elementeillä on sekä alku- että loppumerkki. Tyhjät elementit voidaan merkitä erikseen.
* Ei-tyhjillä elementeillä on aina sekä alku- että loppumerkki, joiden nimi vastaa toistaan täsmälleen. Tyhjille elementeille voidaan käyttää lyhennettyä merkintätapaa.
* Jokainen attribuutti on lainausmerkkien sisällä.
* Elementit voivat olla sisäkkäisiä, mutta ne eivät mene ristiin toisten elementtien kanssa.
* Elementit voivat olla sisäkkäisiä, mutta ne eivät mene ristiin toisten elementtien kanssa.
* Kaikki nimet sisältävät vain nimissä sallittuja merkkejä. Tämä koskee elementtien, attribuuttien, nimiavaruusetuliitteiden, käsittelyohjeiden kohteiden ja entiteettien nimiä.
* Jokaisen attribuutin arvo on erotettu lainausmerkkien <code>"</code> tai heittomerkkien <code>'</code> 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 [[Drakon Ateenalainen|drakoniseksi]] virheenkäsittelyksi.


== Määritellyn kielen kielioppisäännöt ==
== Määritellyn kielen kielioppisäännöt ==
Rivi 48: Rivi 117:
Yksinkertaisin kuvauskieli on [[DTD]] ''(Document Type Definition)''. Esimerkkinä DTD-määrittelystä voimme määritellä luettelon henkilöistä:
Yksinkertaisin kuvauskieli on [[DTD]] ''(Document Type Definition)''. Esimerkkinä DTD-määrittelystä voimme määritellä luettelon henkilöistä:


<source lang="xml">
<syntaxhighlight lang="xml">
<!ELEMENT luettelohenkiloista (henkilo*)>
<!ELEMENT luettelohenkiloista (henkilo*)>
<!ELEMENT henkilo (nimi, syntymaaika?, sukupuoli?, sosiaaliturvatunnus?)>
<!ELEMENT henkilo (nimi, syntymaaika?, sukupuoli?, sosiaaliturvatunnus?)>
Rivi 55: Rivi 124:
<!ELEMENT sukupuoli (#PCDATA)>
<!ELEMENT sukupuoli (#PCDATA)>
<!ELEMENT sosiaaliturvatunnus (#PCDATA)>
<!ELEMENT sosiaaliturvatunnus (#PCDATA)>
</syntaxhighlight>
</source>


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.
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 ==
== Yleisiä XML-työkaluja ==
Rivi 63: Rivi 132:
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.
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|HTML:n]] kanssa usein käytetty [[CSS (tyyliohje)|CSS]]. CSS ei kuitenkaan itse ole XML:n mukainen kieli. Siksi on ehkä tyylikkäämpää käyttää XML:n mukaista [[XSLT|XSLT-]]muunnoskieltä.
Yksi ratkaisu XML-sivujen muuntamiseen erilaisiin tulostusformaatteihin on [[HTML|HTML:n]] kanssa usein käytetty [[CSS (tyyliohje)|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|XSLT-]]muunnoskieltä.


XSLT-kielen kanssa määritellään [[XPath|XPath-]]osoitinkieli, jolla voidaan määritellä helposti osajoukkoja XML-dokumentista.
XSLT-kielen kanssa määritellään [[XPath|XPath-]]osoitinkieli, jolla voidaan määritellä helposti osajoukkoja XML-dokumentista.
Rivi 69: Rivi 138:
[[XSL-FO|FO-]]sivunkuvauskieli on yleinen XML-formaatti, johon dokumentteja voidaan muuntaa helpompaa tulostamista varten. Se siis vastaa jossain määrin HTML-dokumentin ulkoasuominaisuuksia.
[[XSL-FO|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
XML-dokumenttien käytöllä tavoitellaan muun muassa:

* sisältöjen yhdenmukaisempaa tallennusmuotoa
• Sisältöjen yhdenmukaisempaa tallennusmuotoa: XML tarjoaa standardoidun tavan tallentaa tietoa, mikä vähentää erilaisten tallennusmuotojen aiheuttamia ongelmia ja mahdollistaa tiedon helpon siirrettävyyden eri järjestelmien välillä.
* sisältövirheiden välttämistä

* [[XML-tiedonhaku|tiedon hakemisen]] helpottamista
• Sisältövirheiden välttämistä: XML-skeemat ja DTD
* sisällön monikäyttöisyyden ja monikanavajulkaisemisen parantamista
(Document Type Definitions) auttavat varmistamaan, että dokumentit noudattavat ennalta määriteltyjä rakenteita ja sääntöjä, mikä vähentää virheiden mahdollisuutta.
* käsittelyvaiheiden automatisointia

* riippumattomuutta tietystä ohjelmistotoimittajasta
• Tiedon hakemisen helpottamista: XML-tiedostojen selkeä ja hierarkkinen rakenne helpottaa tietojen hakua ja jäsentämistä, erityisesti kun käytetään XPathin kaltaisia teknologioita.
* tiedon pitkäaikaissäilyvyyden parantamista

* integraatioiden helpottamista
• Sisällön monikäyttöisyyden ja monikanavajulkaisemisen parantamista: XML
* SEPA ja XML sanomat yleensä yritysten välisessä tiedonsiirrossa
avulla samaa dataa voidaan käyttää eri tarkoituksiin, kuten verkkosivujen, mobiilisovellusten ja painettujen julkaisujen luomiseen, mikä tehostaa sisällönhallintaa.

• Käsittelyvaiheiden automatisointia: XML
avulla voidaan automatisoida monia tiedonkäsittelyn vaiheita, mikä parantaa tehokkuutta ja vähentää inhimillisten virheiden riskiä.

• Riippumattomuutta tietystä ohjelmistotoimittajasta: XML on avoin standardi, mikä tarkoittaa, että sen käyttö ei sido käyttäjiä tiettyihin ohjelmistotoimittajiin, vaan mahdollistaa joustavan siirtymisen eri ohjelmistojen välillä.

• Tiedon pitkäaikaissäilyvyyden parantamista: XML on tekstiin perustuva formaatti, joka on helppo arkistoida ja säilyttää pitkäaikaisesti. Sen standardisoitu rakenne takaa, että data on luettavissa myös tulevaisuudessa, vaikka alkuperäiset ohjelmistot eivät enää olisi käytössä.

• Integraatioiden helpottamista: XML
avulla voidaan yhdistää ja integroida eri järjestelmiä tehokkaasti, mikä parantaa eri järjestelmien välistä yhteentoimivuutta.

• SEPA ja XML-sanomat yritysten välisessä tiedonsiirrossa: XML-formaattia käytetään laajasti yritysten välisessä tiedonsiirrossa, kuten SEPA-maksuissa, mikä mahdollistaa standardoidun ja tehokkaan tiedonsiirron eri osapuolten välillä.


== XML-pohjaisia standardeja ja määrityksiä ==
== XML-pohjaisia standardeja ja määrityksiä ==
Rivi 86: Rivi 167:
* [[RDF]]
* [[RDF]]
* [[XLink]]
* [[XLink]]
* [[OWL]]
* [[Web Ontology Language]]
* [[XForms]]
* [[XForms]]


=== Asiakirjojen esittäminen ===
=== Asiakirjojen esittäminen ===
* [[ODF]]
* [[OpenDocument]] (ODF)
* [[OXML]]
* [[OXML]]
* [[DocBook]] XML
* [[DocBook]] XML


=== Asiakirjojen yms. erikoisosat ===
=== Asiakirjojen yms. erikoisosat ===
* [[MathML]] - Matemaattiset merkinnät
* [[MathML]] Matemaattiset merkinnät
* [[SVG]] - Kuvat
* [[SVG]] Kuvat
* [[vCard]] XML - Yhteystiedot
* [[HCard]] Yhteystiedot
* [[VoiceXML]] - Äänet
* [[VoiceXML]] Äänet
* [[SMIL]] - sisällöt, joissa esimerkiksi video ja ääni synkronoidaan
* [[SMIL]] sisällöt, joissa esimerkiksi video ja ääni synkronoidaan
* [[Dublin Core]] - Metadata
* [[Dublin Core]] Metadata


=== Tiedonsiirto ===
=== Tiedonsiirto ===
* [[XML-RPC]] - toiminnon suorittaminen verkon yli
* [[XML-RPC]] toiminnon suorittaminen verkon yli
* [[SOAP]] - toiminnon suorittaminen verkon yli
* [[SOAP]] toiminnon suorittaminen verkon yli
* [[Ajax (ohjelmointi)|AJAX]] - toiminnon suorittaminen verkon yli
* [[Ajax (ohjelmointi)|AJAX]] toiminnon suorittaminen verkon yli
* [[WSDL]] - verkkoon tarjottujen palvelujen kuvaus
* [[WSDL]] verkkoon tarjottujen palvelujen kuvaus
* [[WML]] - [[WAP|WAP-]]sivut
* [[WML]] [[WAP|WAP-]]sivut
* [[XSQL]] - XML:n ja [[SQL]]:n yhdistelmä tiedonhakuun
* [[XSQL]] XML:n ja [[SQL]]:n yhdistelmä tiedonhakuun


=== Sovellusalueittain ===
=== Sovellusalueittain ===
* [[FIXML]]
* [[FIXML]]
* [[ebXML|ebXML-]]määritysperhe
* [[ebXML|ebXML-]]määritysperhe
* [[GML]] - paikkatietojen kuvauskieli
* [[Geography Markup Language|Geography Markup Language (GML)]] paikkatietojen kuvauskieli
* [[Job Definition Format|JDF]] - graafisen teollisuuden työmäärykset
* [[Job Definition Format|JDF]] graafisen teollisuuden työmäärykset
* [[TM-XML]] - tavaramerkkitieto
* [[TM-XML]] tavaramerkkitieto


==Katso myös==
==Katso myös==
*[[DITA]]
*[[DITA]]
*[[EDI]]
*[[EDI]]
*[[SEPA]]
*[[ISO 20022]]
* [[Luettelo XML-kielistä]]
*[[XMLmosaic]]

== Lähteet ==
{{Viitteet}}


== Aiheesta muualla ==
== Aiheesta muualla ==
{{commonscat}}
* [http://www.w3.org/XML/ World Wide Web Consortiumin XML-pääsivu]
* [http://www.w3.org/XML/ World Wide Web Consortiumin XML-pääsivu]
* [http://www.w3.org/TR/REC-xml XML-spesifikaatio]
* [http://www.w3.org/TR/REC-xml XML-spesifikaatio]


[[Luokka:XML|*]]
[[Luokka:XML|*]]
[[Luokka:Seulonnan keskeiset artikkelit]]

Nykyinen versio 31. heinäkuuta 2024 kello 20.25

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 pääasiallinen tarkoitus on serialisointi, eli mielivaltaisen datan tallentaminen, siirtäminen ja rekonstruoiminen. Jotta kaksi erillistä järjestelmää voivat vaihtaa tietoa, niiden täytyy sopia tiedostomuodosta. XML standardoi tämän prosessin.

Merkintäkielenä XML nimeää, kategorisoi ja järjestää tiedot rakenteellisesti. XML-tägit edustavat datarakennetta ja sisältävät metatietoja. Täggien sisällä oleva tieto on dataa, joka on koodattu XML-standardin mukaisesti. Lisäksi XML-skeema (XSD) määrittelee tarvittavat metatiedot XML tulkitsemiseksi ja validoinniksi. Skeema toimii dokumentin rakenteen ja sisällön formaalina kuvauksena, jonka avulla voidaan varmistaa tiedon oikeellisuus ja yhtenäisyys.

XML laaja käyttö perustuu sen kykyyn kuvata ja vaihtaa dataa riippumatta alustan tai ohjelmiston tyypistä. Tämä tekee siitä ihanteellisen välineen tietojärjestelmien integrointiin ja datan siirtoon. Esimerkiksi verkkosivustot, tietokannat ja erilaiset sovellukset voivat hyödyntää XML:ää tiedon välittämiseen ja tallentamiseen standardoidussa muodossa.

XML-dokumentit koostuvat hierarkkisesta rakenteesta, jossa elementit voivat olla sisäkkäin ja sisältää attribuutteja. Tällainen rakenne mahdollistaa monimutkaisten tietomallien kuvaamisen selkeällä ja yksiselitteisellä tavalla. XML käytöllä on monia etuja. XML mahdollistaa datan yhtenäisen tallennusmuodon, mikä helpottaa tiedon käsittelyä ja jakamista. XML-skeemojen avulla voidaan varmistaa, että dokumentit noudattavat ennalta määriteltyjä rakenteita ja sääntöjä. XML-dokumentteja voidaan käyttää monissa eri sovelluksissa ja alustoilla ilman muunnoksia. XML-standardien avulla järjestelmät voivat vaihtaa tietoa sujuvasti, mikä parantaa eri järjestelmien välistä yhteentoimivuutta. XML on tekstiin perustuva formaatti, joka on helppo arkistoida ja säilyttää pitkäaikaisesti.

XML-dokumentin ulkoasu

[muokkaa | muokkaa wikitekstiä]

XML-dokumentti on tekstiä, jossa lailliset merkistöt ovat Unicode ja ISO/IEC 10646.[1] Standardi vaatii XML-jäsentimiä tukemaan Unicoden UTF-8- ja UTF-16-merkistökoodauksia.[1] Jäsennin saattaa tukea muitakin koodauksia, esimerkiksi ISO 8859-1:aa.

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

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

Tyhjä elementti, 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 alkutägissä 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.

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 lopputägin sisään vaan se pitää olla tägien 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 viittaaminen:

<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.
  • Kaikki nimet sisältävät vain nimissä sallittuja merkkejä. Tämä koskee elementtien, attribuuttien, nimiavaruusetuliitteiden, käsittelyohjeiden kohteiden ja entiteettien nimiä.
  • 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 Schema 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-dokumenttien käytöllä tavoitellaan muun muassa:

• Sisältöjen yhdenmukaisempaa tallennusmuotoa: XML tarjoaa standardoidun tavan tallentaa tietoa, mikä vähentää erilaisten tallennusmuotojen aiheuttamia ongelmia ja mahdollistaa tiedon helpon siirrettävyyden eri järjestelmien välillä.

• Sisältövirheiden välttämistä: XML-skeemat ja DTD (Document Type Definitions) auttavat varmistamaan, että dokumentit noudattavat ennalta määriteltyjä rakenteita ja sääntöjä, mikä vähentää virheiden mahdollisuutta.

• Tiedon hakemisen helpottamista: XML-tiedostojen selkeä ja hierarkkinen rakenne helpottaa tietojen hakua ja jäsentämistä, erityisesti kun käytetään XPathin kaltaisia teknologioita.

• Sisällön monikäyttöisyyden ja monikanavajulkaisemisen parantamista: XML avulla samaa dataa voidaan käyttää eri tarkoituksiin, kuten verkkosivujen, mobiilisovellusten ja painettujen julkaisujen luomiseen, mikä tehostaa sisällönhallintaa.

• Käsittelyvaiheiden automatisointia: XML avulla voidaan automatisoida monia tiedonkäsittelyn vaiheita, mikä parantaa tehokkuutta ja vähentää inhimillisten virheiden riskiä.

• Riippumattomuutta tietystä ohjelmistotoimittajasta: XML on avoin standardi, mikä tarkoittaa, että sen käyttö ei sido käyttäjiä tiettyihin ohjelmistotoimittajiin, vaan mahdollistaa joustavan siirtymisen eri ohjelmistojen välillä.

• Tiedon pitkäaikaissäilyvyyden parantamista: XML on tekstiin perustuva formaatti, joka on helppo arkistoida ja säilyttää pitkäaikaisesti. Sen standardisoitu rakenne takaa, että data on luettavissa myös tulevaisuudessa, vaikka alkuperäiset ohjelmistot eivät enää olisi käytössä.

• Integraatioiden helpottamista: XML avulla voidaan yhdistää ja integroida eri järjestelmiä tehokkaasti, mikä parantaa eri järjestelmien välistä yhteentoimivuutta.

• SEPA ja XML-sanomat yritysten välisessä tiedonsiirrossa: XML-formaattia käytetään laajasti yritysten välisessä tiedonsiirrossa, kuten SEPA-maksuissa, mikä mahdollistaa standardoidun ja tehokkaan tiedonsiirron eri osapuolten välillä.

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ä]
  • MathML – Matemaattiset merkinnät
  • SVG – Kuvat
  • HCard – Yhteystiedot
  • VoiceXML – Äänet
  • SMIL – sisällöt, joissa esimerkiksi video ja ääni synkronoidaan
  • Dublin Core – Metadata
  • XML-RPC – toiminnon suorittaminen verkon yli
  • SOAP – toiminnon suorittaminen verkon yli
  • AJAX – toiminnon suorittaminen verkon yli
  • WSDL – verkkoon tarjottujen palvelujen kuvaus
  • WMLWAP-sivut
  • XSQL – XML:n ja SQL:n yhdistelmä tiedonhakuun

Sovellusalueittain

[muokkaa | muokkaa wikitekstiä]
  1. a b 2.2 Characters w3.org. Viitattu 29.2.2020. (englanniksi)

Aiheesta muualla

[muokkaa | muokkaa wikitekstiä]