Extensible Markup Language

značkovací jazyk k uchování hierarchické struktury dat

Extensible Markup Language (výslovnost [ikˈstensibl ˈmaːkˌap ˈlæŋgwidž], zkráceně XML [ˌeksemˈel], česky rozšiřitelný značkovací jazyk) je obecný značkovací jazyk, který byl vyvinut a standardizován konsorciem W3C. Je zjednodušenou podobou staršího jazyka SGML. Umožňuje snadné vytváření konkrétních značkovacích jazyků (tzv. aplikací) pro různé účely a různé typy dat. Používá se pro serializaci dat, v čemž soupeří např. s JSON či YAML. Zpracování XML je podporováno řadou nástrojů a programovacích jazyků.

XML
Přípona souboru.xml
Typ internetového médiaapplication/xml
text/xml[1]
Uniform Type Identifierpublic.xml
TvůrceWorld Wide Web Consortium
Typ formátuznačkovací jazyk
Standard(y)1.0 (Fifth Edition)
(26. listopadu 2008)
1.1 (Second Edition)
(16. srpna 2006)
Otevřený formátano
WebsiteXML 1.0

Jazyk je určen především pro výměnu dat mezi aplikacemi a pro publikování dokumentů, u kterých popisuje strukturu z hlediska věcného obsahu jednotlivých částí, nezabývá se vzhledem. Prezentace dokumentu (vzhled) může být definována pomocí kaskádových stylů. Další možností zpracování je transformace do jiného typu dokumentu, nebo do jiné aplikace XML.

Vlastnosti XML editovat

Standardní formát pro výměnu informací editovat

Není vhodné zasílat dokumenty ve tvaru, který vyžaduje pro zpracování speciální software konkrétní firmy (resp. nadace), jako jsou např. formáty DOC, XLS, ODT nebo T602. Je používána celá řada operačních a informačních systémů a není možné předpokládat, že každý uživatel vlastní příslušný software.

Vznikla tak potřeba vytvořit nějaký jednoduchý otevřený formát, který není úzce svázán s nějakou platformou nebo proprietární technologií. Tím může být právě XML, který je založen na jednoduchém textu a je zpracovatelný (v případě potřeby) libovolným textovým editorem.

Specifikace XML konsorcia W3C je zdarma přístupná všem. Každý tak může bez problémů do svých aplikací implementovat podporu XML. To je velký rozdíl oproti firemním formátům, k nimž není k dispozici žádná dokumentace a navíc se jedná v porovnání s XML o velice složité, často binární, formáty.

Mezinárodní podpora editovat

XML hned od samého počátku myslel na potřeby i jiných jazyků než je angličtina. Jako znaková sada se implicitně používá ISO 10646 (také Unicode). V XML proto můžeme vytvářet dokumenty, které obsahují texty v mnoha jazycích najednou – můžeme přepínat mezi různými jazyky v jednom dokumentu. Současně je přípustné i jiné libovolné kódování (např. CP-1250, ISO 8859-2), musí však být v každém dokumentu přesně určeno. Odpadají tak problémy s konverzí z jednoho kódování do druhého.

Vysoký informační obsah editovat

Pomocí XML značek (tagů) vyznačujeme v dokumentu význam jednotlivých částí textu. Dokumenty tak obsahují více informací, než kdyby se používalo značkování zaměřené na prezentaci (vzhled) – definice písma, odsazení a podobně. XML dokumenty jsou informačně bohatší. To lze s výhodou využít v mnoha oblastech. Největší přínos bude samozřejmě pro prohledávání, kdy můžeme určit i jaký význam má mít hledaný text.

Snadná konverze do jiných formátů editovat

Při používání XML dokumentu může být požadováno jeho zobrazení koncovému uživateli. XML samo o sobě žádné prostředky pro definici vzhledu nenabízí. Existuje ale několik stylových jazyků, které umožňují definovat, jak se mají jednotlivé elementy zobrazit. Souboru pravidel nebo příkazů, které definují, jak se dokument převede do jiného formátu, se říká šablona.

Jeden vytvořený styl můžeme aplikovat na mnoho dokumentů stejného typu, stejně tak můžeme na jeden dokument aplikovat několik různých stylů. Výsledkem může být např. PostScriptový soubor, HTML kód nebo XML s obsahem původního dokumentu.

Stylových jazyků existuje dnes několik. Mezi nejznámější patří asi kaskádové styly (CSS). Ty lze použít pouze pro jednoduché formátování, které dobře poslouží pro zobrazení dokumentu na obrazovce. Další možností je rodina jazyků XSL (eXtensible Stylesheet Language). Ta umožňuje dokument různě upravovat a transformovat – vybírat části dokumentu nebo generovat obsahy a rejstříky.

Automatická kontrola struktury dokumentu editovat

XML neobsahuje předdefinované značky (tagy), je třeba definovat vlastní značky, které budeme používat. Tyto značky je možné (nepovinně) definovat v souboru DTD (Document Type Definition) nebo XSD. Potom je možné automaticky kontrolovat, zda vytvářený XML dokument odpovídá této definici (tj. je validní). Program, který tyto kontroly provádí, se nazývá parser. Při vývoji aplikací můžeme parser použít, a ten za nás detekuje většinu chyb v datech.

DTD není jediný definiční jazyk pro XML. Neobsahuje možnost kontrolovat typy dat (čísla, měnové údaje, údaje o datu a čase). To je vlastnost, která chybí při zpracování dat databázového charakteru. V současné době se pod názvem XML schémata XSD pracuje na půdě konsorcia W3C na vytvoření jednotného standardu, který tyto kontroly umožní.

Pro různé standardní aplikace byla postupně vytvořena schémata, která definují značky (názvy elementů) pro konkrétní typy dokumentů. Příkladem může být DocBook, který definuje struktury pro vytváření knih, článků, vědeckých publikací a podobně. Výhodou takových aplikací je, že současně s definičními soubory DTD je dodávána sada stylů (XSL souborů) pro následné zpracování a přípravu pro tisk, nebo pro převod do jiných standardních tvarů (PostScript, HTML atd.).

Další vlastností XML je, že v jednom dokumentu můžeme používat najednou nezávisle na sobě několik druhů značkování pomocí jmenných prostorů (namespaces). To umožňuje kombinovat v jednom dokumentu několik různých definic ve formě DTD nebo schémat bez konfliktů v pojmenování elementů.

Hypertext a odkazy editovat

XML stejně jako HTML umožňuje vytváření odkazů v rámci jednoho dokumentu i mezi dokumenty, má však více možností. Je možné vytvářet i vícesměrné odkazy, které spojují více dokumentů dohromady. Tvorba odkazů je popsána ve třech standardech – XLink, XPointer a XPath.

  • XPath (XML Path Language) je jazyk, který umožňuje adresovat jednotlivé části dokumentu.
  • XPointer (XML Pointer Language). Je rozšířením XPath. Používá k určování jednotlivých částí dokumentu ve stylu: „zajímá mě první odstavec třetí kapitoly“. Není nutné ty části dokumentu, na které chceme odkazovat, explicitně označovat pomocí návěstí jako v HTML.
  • XLink (XML Linking Language) je samotný jazyk pro tvorbu odkazů. Jednotlivé dokumenty se určují pomocí jejich URL adresy, za kterou lze uvést ještě XPointer pro přesnější určení části dokumentu.

Syntaxe XML editovat

XML dokument je text, vždy Unicode, v českém prostředí obvykle kódovaný jako UTF-8, ale jsou přípustná i jiná kódování.

Na rozdíl od např. HTML, efektivita XML je silně závislá na struktuře, obsahu a integritě. Aby byl dokument považován za správně strukturovaný („well-formed“) [1], musí splňovat aspoň následující vlastnosti:

  • Musí mít právě jeden kořenový (root) element.
  • Neprázdné elementy musí být ohraničeny startovací a ukončovací značkou. Prázdné elementy mohou být označeny tagem „prázdný element“.
  • Všechny hodnoty atributů musí být uzavřeny v uvozovkách – jednoduchých (') nebo dvojitých ("), ale jednoduchá uvozovka musí být uzavřena jednoduchou a dvojitá dvojitou. Opačný pár uvozovek může být použit uvnitř hodnot.
  • Elementy mohou být vnořeny, ale nemohou se překrývat; to znamená, že každý (ne kořenový) element musí být celý obsažen v jiném elementu.

Jména elementů v XML rozlišují malá a velká písmena: např. „<Příklad>“ a „</Příklad>“ je pár, který vyhovuje správně strukturovanému dokumentu, pár „<Příklad>“ a „</příklad>“ je chybný.

Jednoduchý recept v XML jako příklad by mohl vypadat takto:

<?xml version="1.0" encoding="UTF-8" ?>
<!-- Poznámka: Je nutné přidat v budoucnu více receptů. -->
<recept jméno="chleba" čas_přípravy="5 minut" čas_vaření="3 hodiny">
    <titulek>Jednoduchý chleba</titulek>
    <potřeby>
        <přísada množství="3" jednotka="šálek">Mouka</přísada>
        <přísada množství="0,25" jednotka="unce">Kvasnice</přísada>
        <přísada množství="1,5" jednotka="šálek">Horká voda</přísada>
        <přísada množství="1" jednotka="kávová lžička">Sůl</přísada>  
    </potřeby>
    <postup>
        <krok>Smíchejte všechny přísady dohromady a dobře prohněťte.</krok>
        <krok>Zakryjte tkaninou a nechejte hodinu v teplé místnosti.</krok>
        <krok>Znovu prohněťte, umístěte na plech a pečte v troubě.</krok>
    </postup>
</recept>

Zpracování XML editovat

Existují dva nejčastější přístupy ke zpracování XML dokumentu:

  • DOM parser (DOM = Document Object Model) vezme XML dokument a vyrobí z něho obraz (strom) v paměti.
  • SAX parser (SAX = Simple API for XML) postupně prochází XML dokument a vyvolává události. Je na programátorovi, aby tyto události zpracoval.

Aplikace XML editovat

Příklady aplikace XML:

Verze XML editovat

Aktuální verze XML je 1.1 (od 16. srpna 2006). První verze XML 1.0 existuje v páté revizi. Obě verze se liší v požadavcích na použité znaky v názvech elementů, atributů atd. Verze 1.0 dovolovala pouze užívání znaků platných ve verzi Unicode 2.0, která obsahuje většinu světových písem, ale neobsahuje později přidané sady jako je mongolština a podobně. Verze XML 1.1 zakazuje pouze řídící znaky, což znamená, že mohou být použity jakékoli jiné znaky.

Je třeba poznamenat, že omezení ve verzi 1.0 se vztahuje pouze na názvy elementů a atributů. Jinak obě verze dovolují v obsahu dokumentu jakékoli znaky. Verze 1.1 je tedy nutná, pokud potřebujeme psát názvy elementů v jazyku, který byl přidán do Unicode později.

Další menší změna mezi XML 1.0 a 1.1 je, že řídící znaky se nyní mohou vkládat jen jako escape sekvence, a se speciálními znaky „form-feed“ se musí zacházet jako s bílými znaky.

Všechny dokumenty verze 1.0 budou platné ve verzi 1.1 s jednou výjimkou: dokumenty deklarované s kódováním ISO-8859-1, které jsou ve skutečnosti v kódu Windows CP1252, nemusejí být nyní platné. Důvodem je, že CP1252 používají blok řídících znaků pro speciální zobrazení, jako jsou znaky €, Œ, a ™. Dokumenty s deklarací CP1252 zůstávají platné.

Související technologie editovat

  • Jmenné prostory v XML – Umožňují kombinovat značkování podle různých standardů v jednom dokumentu.
  • XML Schema, RELAX NG, Schematron – Předpis struktury a datových typů pro třídu dokumentů v XML.
  • XSL – Transformace dokumentu v XML na jiný, odvozený dokument, např. XML, HTML nebo textový. Zahrnuje XSLT, XSL-FO a XPath.
  • XQuery – Dotazy nad daty v XML.

Odkazy editovat

Reference editovat

  1. XML Media Types, RFC 7303 [online]. Internet Engineering Task Force, červenec 2014 [cit. 2018-03-11]. Dostupné online. (anglicky) 

Literatura editovat

Externí odkazy editovat