b'\n_START_ARTICLE_\nXML\n_START_PARAGRAPH_\nXML (Extensible Markup Language) on tietynlaisten merkint\xc3\xa4kielien yl\xc3\xa4k\xc3\xa4site tai standardi, jolla tiedon merkitys on kuvattavissa tiedon sekaan. XML-kieli\xc3\xa4 k\xc3\xa4ytet\xc3\xa4\xc3\xa4n sek\xc3\xa4 formaattina tiedonv\xc3\xa4litykseen j\xc3\xa4rjestelmien v\xc3\xa4lill\xc3\xa4 ett\xc3\xa4 formaattina dokumenttien tallentamiseen. XML-kieli on rakenteellinen kuvauskieli, joka auttaa j\xc3\xa4sent\xc3\xa4m\xc3\xa4\xc3\xa4n laajoja tietomassoja selke\xc3\xa4mmin. XML:n kehitt\xc3\xa4j\xc3\xa4 on World Wide Web Consortium._NEWLINE_XML-dokumenttien k\xc3\xa4sittelyyn on tarjolla paljon erilaisia ty\xc3\xb6kaluja. N\xc3\xa4m\xc3\xa4 ty\xc3\xb6kalut toimivat samalla tavalla riippumatta siit\xc3\xa4, kuvaako XML-dokumentti WWW-sivua vai muita tietoja._NEWLINE_XML on tekstimuotoista ja muistuttaa HTML-kielt\xc3\xa4, 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\xc3\xa4\xc3\xa4r\xc3\xa4ttyj\xc3\xa4 koodeja. XML-kielell\xc3\xa4 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.\n_START_SECTION_\nXML-dokumentin ulkoasu\n_START_PARAGRAPH_\nXML-dokumentti on teksti\xc3\xa4; tavallisesti UTF-8-koodattua. Standardi vaatii XML-j\xc3\xa4sentimi\xc3\xa4 tukemaan Unicoden UTF-8- ja UTF-16-koodauksia. J\xc3\xa4sennin saattaa tukea muitakin koodauksia, esimerkiksi ISO 8859-1:aa.\n_START_SECTION_\nPrologi\n_START_PARAGRAPH_\nXML-dokumentti voi alkaa prologilla, joka sis\xc3\xa4lt\xc3\xa4\xc3\xa4 XML-version, sek\xc3\xa4 mahdollisesti dokumentin koodauksen ja tiedon voidaanko mahdollisesti j\xc3\xa4ljemp\xc3\xa4n\xc3\xa4 viitattu DTD j\xc3\xa4tt\xc3\xa4\xc3\xa4 lukematta. Prologia ei saa dokumentissa edelt\xc3\xa4\xc3\xa4 yht\xc3\xa4\xc3\xa4n merkki\xc3\xa4 muuta sis\xc3\xa4lt\xc3\xb6\xc3\xa4._NEWLINE_<?xml version="1.0" encoding="UTF-8" standalone="yes"?>\n_START_SECTION_\nDOCTYPE\n_START_PARAGRAPH_\nDOCTYPE-m\xc3\xa4\xc3\xa4rityksell\xc3\xa4 dokumentille voidaan m\xc3\xa4\xc3\xa4ritt\xc3\xa4\xc3\xa4 DTD (Document Type Definition), esimerkkin\xc3\xa4 XHTML-dokumentin DOCTYPE-m\xc3\xa4\xc3\xa4rittely:_NEWLINE_<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN""http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">\n_START_SECTION_\nElementit ja attribuutit\n_START_PARAGRAPH_\nXML-dokumentin data koostuu sen sis\xc3\xa4lt\xc3\xa4m\xc3\xa4st\xc3\xa4 tekstist\xc3\xa4 sek\xc3\xa4 merkinn\xc3\xb6ist\xc3\xa4, joita ovat sis\xc3\xa4ll\xc3\xb6lle rakenteen ja merkityksen antavat elementit ja elementtej\xc3\xa4 tarkentavat attribuutit. Elementtej\xc3\xa4 voi olla rajattomasti sis\xc3\xa4kk\xc3\xa4in tai per\xc3\xa4kk\xc3\xa4in, mutta ylimm\xc3\xa4ll\xc3\xa4 tasolla kaikkien elementtien tulee olla yhden juurielementin lapsia. Elementti kuvataan alku- ja loppumerkinn\xc3\xb6ill\xc3\xa4 eli t\xc3\xa4geill\xc3\xa4:_NEWLINE_<elementti attribuutti="arvo">_NEWLINE_..._NEWLINE_</elementti>_NEWLINE_Tyhj\xc3\xa4 elementti, voidaan merkit\xc3\xa4 joko alku- ja loppumerkinn\xc3\xa4ll\xc3\xa4, joiden v\xc3\xa4liss\xc3\xa4 ei ole sis\xc3\xa4lt\xc3\xb6\xc3\xa4 tai lyhennetyll\xc3\xa4 merkint\xc3\xa4tavalla:_NEWLINE_<elementti attribuutti="arvo"/>_NEWLINE_Isot ja pienet kirjaimet katsotaan elementtien nimiss\xc3\xa4 eri merkeiksi. Esimerkiksi <Esimerkki> ja </Esimerkki> muodostavat oikein muotoillun parin, kun taas <Esimerkki> ja </esimerkki> eiv\xc3\xa4t n\xc3\xa4in tee._NEWLINE_Attribuutit ovat avain\xe2\x80\x93arvo-pareja, joten tietyn niminen attribuutti voi esiinty\xc3\xa4 samassa alkut\xc3\xa4giss\xc3\xa4 vain yhden kerran eik\xc3\xa4 niiden j\xc3\xa4rjestyksell\xc3\xa4 ole merkityst\xc3\xa4.\n_START_SECTION_\nNimiavaruusm\xc3\xa4\xc3\xa4rittelyt\n_START_PARAGRAPH_\nElementtien aloitusmerkinn\xc3\xa4t voivat sis\xc3\xa4lt\xc3\xa4\xc3\xa4 attribuuttien tapaan my\xc3\xb6s nimiavaruusm\xc3\xa4\xc3\xa4rittelyj\xc3\xa4. Niill\xc3\xa4 voidaan erottaa muuten saman nimiset elementit (tai attribuutit) eri nimiavaruuksiin, jolloin eri XML-dokumentteja yhdistelt\xc3\xa4ess\xc3\xa4 v\xc3\xa4ltyt\xc3\xa4\xc3\xa4n tahattomilta nimien yhteent\xc3\xb6rm\xc3\xa4yksilt\xc3\xa4. Nimiavaruusm\xc3\xa4\xc3\xa4rittely voi luoda joko oletusnimiavaruuden tai nimiavaruusetuliitteen. Yksik\xc3\xa4sitteisyyden varmistamiseksi nimiavaruuden arvo on muodoltaan URI. Esimerkki SVG-dokumentista, jossa m\xc3\xa4\xc3\xa4ritell\xc3\xa4\xc3\xa4n SVG:n oletusnimiavaruus ja etuliitteen avulla k\xc3\xa4ytett\xc3\xa4v\xc3\xa4 XLink-nimiavaruus:_NEWLINE_<svg xmlns="http://www.w3.org/2000/svg"_NEWLINE_     xmlns:xlink="http://www.w3.org/1999/xlink">_NEWLINE_    <a xlink:href="/svg/index.html">_NEWLINE_        ..._NEWLINE_    </a></svg>_NEWLINE_Esimerkiss\xc3\xa4 elementit <svg> ja <a> kuuluvat SVG-nimiavaruuteen, kun taas attribuutti href kuuluu XLink-nimiavaruuteen, sill\xc3\xa4 nimen edess\xc3\xa4 on nimiavaruutta vastaava etuliite kaksoispisteell\xc3\xa4 : erotettuna.\n_START_SECTION_\nKommentit\n_START_PARAGRAPH_\nXML-dokumentti voi elementtimerkint\xc3\xb6jen ulkopuolella sis\xc3\xa4lt\xc3\xa4\xc3\xa4 kommentteja. Kukin kommentti erotetaan muusta tekstist\xc3\xa4 <!-- ja --> merkint\xc3\xb6jen v\xc3\xa4liin:_NEWLINE_<!--yksi kommentti--><elementti><!--toinen kommentti-->_NEWLINE_..._NEWLINE_</elementti>_NEWLINE_Kommentti ei SGML-yhteensopivuuden vuoksi saa sis\xc3\xa4lt\xc3\xa4\xc3\xa4 -- merkkijonoa ja se p\xc3\xa4\xc3\xa4ttyy ensimm\xc3\xa4iseen --> merkint\xc3\xa4\xc3\xa4n. T\xc3\xa4st\xc3\xa4 syyst\xc3\xa4 kommentit eiv\xc3\xa4t voi olla sis\xc3\xa4kk\xc3\xa4in. Kommenttia ei voi asettaa alku- tai lopput\xc3\xa4gin sis\xc3\xa4\xc3\xa4n vaan se pit\xc3\xa4\xc3\xa4 olla t\xc3\xa4gien v\xc3\xa4liss\xc3\xa4 tai niiden ulkopuolella.\n_START_SECTION_\nK\xc3\xa4sittelyohjeet\n_START_PARAGRAPH_\nK\xc3\xa4sittelyohjeet ovat pyynt\xc3\xb6j\xc3\xa4 XML-k\xc3\xa4sittelij\xc3\xa4lle ohjata suoritus toiselle ohjelmalle, yleisen\xc3\xa4 esimerkkin\xc3\xa4 on tiedostoon liitetyn XSLT-dokumenttiin viittaaminen:_NEWLINE_<elementti><?xml-stylesheet type="text/xsl" href="style.xsl"?>_NEWLINE_..._NEWLINE_</elementti>_NEWLINE_XML-prologi ei samann\xc3\xa4k\xc3\xb6isest\xc3\xa4 ulkoasustaan huolimatta ole k\xc3\xa4sittelyohje.\n_START_SECTION_\nM\xc3\xa4\xc3\xa4ritellyn kielen kielioppis\xc3\xa4\xc3\xa4nn\xc3\xb6t\n_START_PARAGRAPH_\nXML m\xc3\xa4\xc3\xa4rittelee usein johonkin sovellukseen k\xc3\xa4ytetyn tiedon rakenteen. T\xc3\xa4t\xc3\xa4 rakennetta usein sanotaan kieleksi. Jos kieli on m\xc3\xa4\xc3\xa4ritelty jollakin XML-kuvauskielell\xc3\xa4, XML-dokumentin kielen mukaisuus voidaan tarkastaa automaattisella ty\xc3\xb6kalulla eli validaattorilla._NEWLINE_XML-kuvauskieli m\xc3\xa4\xc3\xa4rittelee esimerkiksi elementit, niiden v\xc3\xa4liset suhteet ja arvojen arvoalueet._NEWLINE_Yksinkertaisin kuvauskieli on DTD (Document Type Definition). Esimerkkin\xc3\xa4 DTD-m\xc3\xa4\xc3\xa4rittelyst\xc3\xa4 voimme m\xc3\xa4\xc3\xa4ritell\xc3\xa4 luettelon henkil\xc3\xb6ist\xc3\xa4:_NEWLINE_ <!ELEMENT luettelohenkiloista (henkilo*)>_NEWLINE_ <!ELEMENT henkilo (nimi, syntymaaika?, sukupuoli?, sosiaaliturvatunnus?)>_NEWLINE_ <!ELEMENT nimi (#PCDATA)>_NEWLINE_ <!ELEMENT syntymaaika (#PCDATA)>_NEWLINE_ <!ELEMENT sukupuoli (#PCDATA)>_NEWLINE_ <!ELEMENT sosiaaliturvatunnus (#PCDATA)>_NEWLINE_Monimutkaisempia ja uudempia m\xc3\xa4\xc3\xa4rittelykieli\xc3\xa4 ovat XML-skeema ja RELAX NG. Ne ovat itsess\xc3\xa4\xc3\xa4n XML-dokumentteja. N\xc3\xa4iden avulla voidaan esimerkiksi asettaa rajoituksia numeroiden arvoalueille.\n_START_SECTION_\nYleisi\xc3\xa4 XML-ty\xc3\xb6kaluja\n_START_PARAGRAPH_\nXML-kielet kuvaavat dokumentin loogista rakennetta, eiv\xc3\xa4t niiden esitt\xc3\xa4mist\xc3\xa4. Niinp\xc3\xa4 samasta XML-dokumentista voidaankin luoda useita erilaisia esityksi\xc3\xa4. Samasta varastotilanteen kuvaavasta XML-tiedosta voidaan tuottaa esimerkiksi sek\xc3\xa4 varastotilanteen kuvaavat WWW-sivut ett\xc3\xa4 tulostettavat rahtikirjat._NEWLINE_Yksi ratkaisu XML-sivujen muuntamiseen erilaisiin tulostusformaatteihin on HTML:n kanssa usein k\xc3\xa4ytetty CSS. CSS ei kuitenkaan itse ole XML:n mukainen kieli. Mik\xc3\xa4li XML-dokumentin pohjalta halutaan muodostaa uusi XML-tiedosto eri rakenteella, voidaan tarkoitukseen k\xc3\xa4ytt\xc3\xa4\xc3\xa4 XML:n mukaista XSLT-muunnoskielt\xc3\xa4._NEWLINE_XSLT-kielen kanssa m\xc3\xa4\xc3\xa4ritell\xc3\xa4\xc3\xa4n XPath-osoitinkieli, jolla voidaan m\xc3\xa4\xc3\xa4ritell\xc3\xa4 helposti osajoukkoja XML-dokumentista._NEWLINE_FO-sivunkuvauskieli on yleinen XML-formaatti, johon dokumentteja voidaan muuntaa helpompaa tulostamista varten. Se siis vastaa jossain m\xc3\xa4\xc3\xa4rin HTML-dokumentin ulkoasuominaisuuksia.'