Co je XML?

21. února 2000

XML (eXtensible Markup Language – rozšiřitelný značkovací jazyk) je nový formát dokumentů. Pro lepší přiblížení si ho můžete zařadit mezi vámi známé formáty: HTML, DOC, XSL, DBF, PDF, DWG, CSV atd. Teď se možná ptáte, proč vznikl, když už dnes existuje tolik formátů? Není to náhodou nošení dříví do lesa? Opravdu není – a pokusím se vás, v tomto článku, o tom přesvědčit.

Co znamená ML v názvu XML?

Z názvu XML se nejdříve budeme zabývat posledními dvěma znaky, a to jsou ML (značkovací jazyk). Co tento formát charakterizuje jako značkovací jazyk? Ještě před odpovědí na tuto otázku si prohlédněte jeden dokument ve formátu XML:

<?xml version="1.0"?> <programkin> <kino> <nazevkina>Galaxie</nazevkina> <adresa> <mesto>Praha</mesto> <ulice>Arkalycká 877/1</ulice> </adresa> <film> <nazevfilmu>Klub rváčů</nazevfilmu> <delka typ="min">107</delka> <promitani> <den format="dd.mm.yyyy">20.02.2000</den> <sal> <oznaceni>Kino 1</oznaceni> <zacatekpromitani format="hh.mm">17.00</zacatekpromitani> <zacatekpromitani format="hh.mm">19.15</zacatekpromitani> <zacatekpromitani format="hh.mm">21.30</zacatekpromitani> </sal> </promitani> </film> </kino> </programkin>

První řádek <?xml version="1.0"?> pouze říká, že se jedná o XML dokument verze 1.0. Uvádím ho zde pouze pro úplnost a klidně na něj, při čtení tohoto článku můžete zapomenout.

Když se na XML dokument podíváte, co je jeho obsahem? Zkuste odpovědět na jednu jedinou otázku: Co se dozvím z tohoto XML dokumentu? Že by snad toto: "Kino Galaxie, v Praze ulici Arkalycká 877/1, hraje (promítá) 20. února, v sále Kino 1, film Klub rváčů o délce 107 minut, a to od 17:00, 19:15 a 21:30 hodin ". Pokud jste dospěli ke stejnému výsledku, pochopili jste, čím se značkovací jazyky vyznačují: s vlastními daty jsou zapsány i informace o tom, co data znamenají. Například:

<nazevkina>Galaxie</nazevkina>

Znamená, že Galaxie (to jsou data) je názvem kina (to jsou ty informace o datech). K vlastním datům není co dodat, jedná se o obyčejný text. Naopak, informace o datech jsou již více zajímavé. Co o nich můžeme říci:

  • jsou uzavřeny v hranatých závorkách
  • obepínají vlastní data – data jsou jakoby "uvnitř"

    Podle terminologie jsou <nazevkina> a </nazevkina> značkami (angl. tags). <nazevkina> je počáteční značkou a </nazevkina> je ukončovací značkou. Když se podíváte znovu na XML dokument, zjistíte, že se značkami jenom hemží. Dokonce značky zabírají více místa, než data! Ale díky tomu, že kromě vlastních dat jsou v XML dokumentu i značky popisující data, nemusíme někde jinde (třeba v jiném dokumentu) popsat, co data vlastně znamenají. Například ve formátu CSV by data byla zapsána takto:

    Galaxie; Praha; 107; Arkalycká 877/1; Klub rváčů; 107;20.02.2000; Kino 1; 17.00; 19.15; 21.30

    Kde je popsáno, co data vlastně znamenají? Jak je můžu využít? Nechť si každý odpoví sám.

    Vraťme se zpět k příkladu XML dokumentu. Jistě jste si všimli, že značky vytváří v dokumentu určitou hierarchii. Podíváte-li se pozorně, zjistíte, že se jedná o stromovou strukturu. Nevěříte? Podívejte se na grafické zobrazení XML dokumentu:

    Než se začnu blíže rozepisovat o stromové struktuře, musím se zmínit ještě o jednom termínu, který se v XML používá. V XML je pro počáteční značku (např. <nazevkina>), vlastní obsah (Galaxie) a ukončovací značku (v tomto případě </nazevkina>) stanoven termín element. Například můžu říci, že obsahem elementu nazevkina je text Galaxie. Obsahem elementu můžou být i další elementy.

    Každý XML dokument musí mít kořenový element (angl. root), někdy se můžete setkat s názvem dokumentový element. Jedná se vůbec o první element v dokumentu. Zkuste zjistit název tohoto elementu z příkladu. Ano, je to programkin. Tento název by měl být výstižný a charakteristický pro obsah dokumentu. Takže, tímto jsme u kořene stromu. Zeptám se dál: co je obsahem elementu programkin? Element kino! Co je jejím obsahem? Elementy nazevkina, adresa a film! Co je… Ne, nebudu rozepisovat všechno. Jen jsem chtěl ukázat, že každý element může obsahovat další elementy atd. Tím je právě vytvářena stromová struktura, v každém elementu může dojít k dalšímu "větvení" elementů. Toto větvení není nijak omezeno a jedinou hranicí je velikost místa pro uložení XML dokumentu (např. velikost disku nebo paměti počítače). K lepšímu přiblížení stromové struktury XML dokumentu si můžete představit adresářovou strukturu vašeho počítače, kde kořenový element je váš disk, elementy jsou adresáře a obsahem elementů jsou soubory.

    Podívejme se na element den:

    <den format="dd.mm.yyyy">20.02.2000</den>

    Vidíte, že je zde něco navíc. Jedná se o zápis format="dd.mm.yyyy". Podle terminologie XML se jedná o atribut. Atribut se smí zapisovat pouze do počáteční značky elementu. Slovně se (v našem případě) atribut vyjádří: atribut má název format a jeho obsahem je text dd.mm.yyyy. Pro tvůrce dokumentů XML bude, z počátku, použití atributů trochu matoucí, neboť si nebudou jisti, kdy informaci dát do obsahu elementu nebo atributu. Např. jsem mohl element den zapsat takto:

    <den format="dd.mm.yyyy" datum="20.02.2000"></den>

    Kdy použít atribut a kdy element, je otázkou praxe a citu. Já osobně mám tento názor: veškerý obsah pro člověka zapsat do elementů a obsah, který není určen pro člověka, ale pro program zpracovávající dokument, zapsat do atributů. U elementu den je hodnota atributu format (dd.mm.yyyy) spíš pro program, než pro člověka (ten pochopí zápis 20.02.2000). Tím bych uzavřel popis toho, co znamenají ty dvě písmenka – M a L.

    Co znamená X v názvu XML?

    Nyní se dostáváme k prvnímu písmenku XML a tím je X neboli (eXtensible – rozšiřitelný). Rozšiřitelnost je neméně důležitá vlastnost, jako to, že se jedná o značkovací jazyk.

    Když nyní víte, co je značkovací jazyk, dokážete najít jiný značkovací jazyk, než XML? Pomůžu : v jakém jazyku se píšou stránky na WWW? Správně, v HTML. HTML je také značkovací jazyk. Jeho přesný název je hypertextový značkovací jazyk. Již tento název a cíl, s kterým byl jazyk vytvářen, omezuje HTML pouze na jazyk pro prezentaci a propojení informací na WWW. Je to jazyk, ve kterém máte předem definované elementy (např. H1,P,DIV,PRE,A apod.), u kterých je řečeno, jakým způsobem budou aplikací (internetový prohlížeč) interpretovány. Jedná se tedy o již hotový značkovací jazyk. Nelze pomocí něho vytvářet další značkovací jazyky. Zkuste si vymyslet nový element (třeba <kino>). Myslíte si, že ji pochopí internetovský prohlížeč? Ten ji s klidným svědomím bude ignorovat, protože očekává a rozumí pouze elementům HTML.

    Naproti tomu u XML nenajdete jediný předem definovaný element nebo značky. XML 1.0 obsahuje pouze množinu "formátovacích pravidel" a pokyny pro jejich zpracování aplikacemi, podle kterých lze vytvářet nové značkovací jazyky. Tyto značkovací jazyky jsou pak aplikací XML (jeho pravidel). Tato volnost (můžeme říci otevřenost) je největší výhodou XML. Myšlenka to není nová, již SGML se pokoušelo o něco podobného, ale neprosadilo se tak, jako se prosazuje XML. Je to hlavně díky záměrům, s kterými byl tvořen (snadná přenositelnost přes Internet, jednoduchost, musí být snadno použitelný v aplikacích, musí být čitelný pro člověka a zároveň i pro počítač, atd.) a podporou, kterou se mu dostává od počítačových firem (velkých i malých). To jsem trochu odbočil do sfér marketingu a je na čase se vrátit zpět, k XML. V současnosti je velký rozruch okolo XHTML. XHTML je právě aplikací XML, tedy pomocí pravidel XML byl vytvořen nový značkovací jazyk XHTML. Pomocí XHTML již další značkovací jazyk nevytvoříte.

    Vraťme se k příkladu uvedenému na začátku článku. S klidem v duši o něm prohlásím, že se jedná o XML dokument značkovacího jazyka ProgramKinoML 1.0 (programo kino značkovací jazyk). Docela dobrý název jazyka, co? Ne teď vážně, skutečně to můžu udělat! Nějak popíši, jak má dokument v jazyku ProgramKinoML 1.0 vypadat. Měl bych popsat, kde použít elementy, jak je použít a kolikrát. XML 1.0 právě určuje formát, jakým způsobem mám tento popis vytvořit. Jedná se o DTD (definice typu dokumentu). Bohužel není zde prostor pro jeho bližší popis (možná snad v některém dalším článku). Kromě DTD, které určuje jak má vypadat dokument zapsaný v jazyku ProgramKinoML 1.0, musíte vytvořit i popis, jak zacházet s jednotlivými elementy jazyka ProgramKinoML 1.0 (jak, to už XML 1.0 nepopisuje). Podle tohoto DTD, popisu zacházení s elementy a základních pravidel XML, může někdo naprogramovat aplikaci, která bude zpracovávat dokumenty v jazyku ProgramKinoML 1.0 (například tisk plakátů, vyhledávání a další). Jen tak na okraj: XHTML je právě složen z několika DTD. Tím jsem vlastně vysvětlil rozšiřitelnost: pomocí XML vytvářím nové typy dokumentů (založených na stejném formátu – XML), vznešeněji řečeno: nové značkovací jazyky.

    Reformulace: Co je XML?

    XML je nový formát dokumentů, který nám předepisuje, jak zapsat data společně s jejich významem. Díky tomu, že XML je jednoduchý formát (jednoduchý značkovací jazyk), je rozšiřitelný (není omezen nějakou množinou elementů), je otevřený (vytvořilo ho uznávané konsorcium W3C a dalo k všeobecnému použití) a je fakticky podporován (velkými i malými firmami), stává se z něho univerzální formát, který postupně nahrazuje dosud používané formáty.

    Jedním z nejdůležitějších požadavků, při vývoji XML, byla přenositelnost informací. Co myslíte, podařilo se?

    Dodatek

    Snažil jsem se vám vysvětlit co je XML a jaké jsou jeho možnosti. Záměrně jsem se vyhýbal odborným termínům (metadata, metajazyk apod.). Není to úplný popis jazyka XML 1.0 a ti, co již znají XML 1.0 (nebo XHTML 1.0) určitě spoustu věcí postrádají (například pravidla pro psaní elementů a značek, prázdný element, entity atd.). Nebylo mým záměrem vysvětlit vše, ale pouze uvést do světa XML. Doufám, že jsem vám toto usnadnil.

    Starší komentáře ke článku

    Pokud máte zájem o starší komentáře k tomuto článku, naleznete je zde.

  • Štítky: Články

    Mohlo by vás také zajímat

    Nejnovější

    1 komentář

    1. Anonym

      Kvě 26, 2013 v 20:44

      Děkuji, konečně tomu rozumím :-)

      Odpovědět

    Napsat komentář

    Vaše e-mailová adresa nebude zveřejněna. Vyžadované informace jsou označeny *