XML – eXtensible Markup Language
XML je proširiv jezik za označavanje temeljen na SGML-u (Standard Generalized Markup Language), koji se već dugo koristi u sofisticiranim i veoma složenim aplikacijama za izdavaštvo. SGML je jezik koji je značajno složeniji od XML-a (osnovna specifikacija SGML-a iznosi 150 strana, dok osnovna specifikacija XML iznosi 35 strana). XML je u svojem nastajanju optimiziran za upotrebu na internetu na način da se iz SGML-a izbacilo sve što je nepotrebno za WWW. XML je (pojednostavnjena verzija SGML-a) vrlo brzo prihvaćen kao standard za zapis i razmjenu podataka između računarskih sistema i na webu.
U praksi računarski sistemi i baze podataka sadrže podatke u nekompatibilnim formatima. Jedan od redovnih zadataka programera je napisati dio koda koji čita pristigle podatke i/ili koji zapisuje podatke u određenom obliku. Različiti sistemi koriste različite formate. Ako neki sistem razmjenjuje podatke s više drugih računarskih sistema, tada se javlja potreba za višestrukim pisanjem koda za konverziju podataka (za svaki od sistema s kojim se razmjenjuju podaci). Za razmjenu se najčešće koristi tekstualni format podataka. Strukturu zapisa podataka moguće je prikazati kao:

Na prethodnoj slici možemo vidjeti ustaljeni način definisanja formata zapisa podataka koji se oslanja na sljedeći postupak:
- Između dvije strane dogovorno se odredi struktura podataka za razmjenu (kao na prethodnoj slici). Zapravo se definiše struktura reda.
- Datoteka za razmjenu se popunjava podacima na način da se na određeno mjesto (definisano specifikacijom) upiše željeni podatak.
- Datoteka se čita na način da se prema specifikaciji odredi na kojoj se poziciji nalaze željeni podaci.
Jedan od primjera razmjene podataka je dogovor između dvije firme koje razmjenjuju podatke o pretplatnicima, koji onda mogu koristiti usluge bilo kojeg od poslovnih partnera.
Ovaj način razmjene podataka je težak, neefikasan i nestandardan. Izrada programske podrške je mukotrpna i podložna pogreškama jer se za svaki podatak treba konsultovati dokumentacija, a zatim pisati programski kod koji na određeno mjesto stavlja podatak određene dužine. Teško je i zamisliti kako to izgleda u velikim sistemima koji imaju velike količine podataka u bazama podataka, koje imaju veliki broj polja u redovima tabela. Ovaj način rada je već dugo u praksi i mane takvog načina rada su više nego očite. Rješenje je pronađeno u korištenju XML jezika koji pruža mogućnost opisa podataka.