====== XML (Extensible Markup Language) ======
**XML** je rozšiřitelný značkovací jazyk, který definuje sadu pravidel pro kódování dokumentů ve formátu čitelném pro lidi i stroje. Na rozdíl od HTML, které je zaměřeno na **zobrazení** dat, XML je navrženo výhradně pro **přenos a ukládání** dat.
XML je standardem organizace W3C a tvoří základ mnoha dalších technologií, jako jsou SVG, RSS, SOAP nebo kancelářské formáty (DOCX, XLSX).
===== Základní struktura XML =====
Každý XML dokument musí být tzv. "dobře strukturovaný" (well-formed). To znamená, že musí splňovat následující pravidla:
* **Deklarace:** Dokument by měl začínat řádkem definujícím verzi a kódování.
* **Kořenový element:** Musí existovat právě jeden prvek, který obaluje celý zbytek dokumentu.
* **Párové značky:** Každý element musí mít počáteční a koncovou značku (např. ''...'').
* **Správné vnořování:** Značky se nesmí překrývat.
* **Case sensitivity:** XML rozlišuje malá a velká písmena ('''' není totéž co '''').
===== Ukázka XML dokumentu =====
Design Patterns
Erich Gamma
1994
Clean Code
Robert C. Martin
2008
===== Klíčové komponenty =====
==== 1. Elementy (Prvky) ====
Hlavní datové jednotky ohraničené značkami. Mohou obsahovat text, další elementy nebo obojí.
==== 2. Atributy ====
Doplňující informace o elementu zapsané uvnitř počáteční značky (např. ''id="101"''). Atributy by měly obsahovat metadata, zatímco samotná data patří do elementů.
==== 3. Jmenné prostory (Namespaces) ====
Zabraňují konfliktům jmen, pokud se v jednom dokumentu kombinují data z různých zdrojů. Definují se pomocí atributu ''xmlns''.
===== Validace: DTD a XML Schema (XSD) =====
Aby bylo zajištěno, že XML dokument obsahuje správná data ve správném formátu, používají se schémata:
* **DTD (Document Type Definition):** Starší a jednodušší způsob definice struktury.
* **XSD (XML Schema Definition):** Moderní způsob, který sám používá XML syntaxi. Umožňuje definovat datové typy (číslo, datum, řetězec), omezení délek nebo regulární výrazy.
===== Související technologie =====
^ Technologie ^ Popis ^
| **XPath** | Jazyk pro navigaci a výběr částí XML dokumentu (např. ''/knihovna/kniha[1]''). |
| **XSLT** | Jazyk pro transformaci XML do jiných formátů (HTML, PDF, jiný XML). |
| **DOM** | Model, který načte celé XML do paměti jako stromovou strukturu (náročné na RAM). |
| **SAX** | Událostmi řízený parser, který čte XML postupně (vhodné pro obří soubory). |
===== Srovnání: XML vs JSON =====
^ Vlastnost ^ XML ^ JSON ^
| **Lidská čitelnost** | Dobrá (upovídaná) | Velmi dobrá (stručná) |
| **Velikost souboru** | Větší (kvůli uzavíracím značkám) | Menší |
| **Datové typy** | Vše je text (nutno definovat v XSD) | Podporuje čísla, pole, objekty, boolean |
| **Podpora polí** | Musí se simulovat opakováním elementů | Nativní podpora [] |
> **Zajímavost:** Formáty Microsoft Office (např. ''.docx'') jsou ve skutečnosti přejmenované archivy ZIP, které uvnitř obsahují velké množství propojených XML souborů definujících text, formátování a obrázky.
[[it_encyklopedie:programovani_a_data|Zpět na Data]]