Datové formáty
Na dnešním cvičení se podíváme na datové formáty. Představíme si dva nejznámější a nejpoužívanější formáty, konkrétně na XML a JSON. Vysvětlíme si, k čemu slouží, jakým způsobem zapisují a strukturují data a v jakých situacích se nejčastěji využívají. Pro ukázky budeme používat prostředí VS Code a rozšíření XML od Red Hat.
Datový formát je přesně definovaný způsob zápisu a uspořádání dat, který určuje, jak jsou informace strukturovány, kódovány a interpretovány při ukládání nebo přenosu. Stanovuje pravidla pro reprezentaci jednotlivých datových prvků (např. textu, čísel nebo seznamů) i jejich vzájemných vztahů. Díky existenci datových formátů mohou různé systémy data nejen ukládat, ale také si je navzájem předávat a správně zpracovávat. Každý datový formát má přesně danou syntaxi a sémantiku, což zajišťuje jednoznačnost a konzistenci při práci s daty napříč různými prostředími a technologiemi.
XML
XML (Extensible Markup Language) je textový datový formát určený pro ukládání a přenos strukturovaných dat. Umožňuje popsat data pomocí vlastních značek (tagů), které určují jejich význam a vzájemné vztahy. Díky tomu je XML velmi flexibilní, jelikož si uživatel může definovat vlastní strukturu podle vlastní potřeby. Jeho použití je široké: používá například pro výměnu dat mezi různými systémy nebo ukládání konfiguračních souborů. Výhodou je jeho přehlednost a možnost přesné validace dat, nevýhodou pak větší objem dat oproti jednodušším formátům. Podívejme se nyní na jeho syntax.
Syntaxe
Syntaxe XML je (podobně jako HTML) založená na značkách (tagy), které popisují jednotlivé části dat. Každý prvek má obvykle otevírací a ukončovací značku, mezi kterými se nachází obsah. Značky můžeme pojmenovat podle potřeby, ale musí být správně zanořené a uzavřené. XML dokument má jeden kořenový prvek, který obsahuje všechny ostatní. Na začátku XML souboru se nachází tzv. XML deklarace. Ta určuje verzi XML a kódování znaků.
<?xml version="1.0" encoding="UTF-8"?>
<studenti>
<student>
<jmeno>Jan Novák</jmeno>
<vek>20</vek>
<obor>Informatika</obor>
</student>
</studenti>
Každý tag může mít atributy. Ty slouží k bližší specifikaci obsahu elementu. Stejně jako v HTML můžeme i do XML vložit komentář.
Doplňme, že každý XML soubor má příponu .xml.
XML Schémata
Často potřebujeme data nejen strukturovat, ale také přesně určit, jaký obsah mohou jednotlivé prvky obsahovat a v jaké podobě. Samotné XML sice umožňuje definovat strukturu pomocí značek, ale neříká nic o tom, zda jsou data správná nebo jakého typu mají být. Z tohoto důvodu se používají XML schémata.
XML schéma je formální popis struktury XML dokumentu, který určuje pravidla pro to, jak má XML soubor vypadat a jaká data může obsahovat. Pomocí schématu lze definovat, jaké elementy se v dokumentu mohou nacházet, v jakém pořadí, jaké datové typy obsahují, které jsou povinné nebo volitelné a jaké mohou mít atributy. Díky tomu je možné XML dokumenty automaticky kontrolovat a ověřovat jejich správnost. Nejčastěji se pro definici XML schémat používá jazyk XSD (XML Schema Definition), který umožňuje přesně popsat strukturu a pravidla pro XML data.
XML schéma vytvoříme jako samostatný XML soubor s příponou .xds, ve kterém
definujeme strukturu a
pravidla pro konkrétní XML dokument. Začíná kořenovým elementem
<xs:schema>. Uvnitř něj popisujeme jednotlivé prvky pomocí značek jako
<xs:element> (obdoně atributy).
U každého prvku můžeme určit jeho název, datový typ (např. string, integer) a případně i další omezení,
jako je počet výskytů nebo povinnost vyplnění. Pokud ale prvek obsahuje další vnořené prvky, používáme
<xs:complexType>, který umožňuje definovat složitější strukturu složenou z více
elementů. Jejich pořadí pak určujeme pomocí <xs:sequence>, která zajišťuje, že
jednotlivé
prvky musí v XML dokumentu následovat přesně v definovaném pořadí. Schéma se následně připojí k XML
dokumentu,
který následně validujeme.
<?xml version="1.0" encoding="UTF-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
<xs:element name="studenti">
<xs:complexType>
<xs:sequence>
<xs:element name="student">
<xs:complexType>
<xs:sequence>
<xs:element name="jmeno" type="xs:string"/>
<xs:element name="vek">
<xs:simpleType>
<xs:restriction base="xs:integer">
<xs:minInclusive value="15"/>
<xs:maxInclusive value="100"/>
</xs:restriction>
</xs:simpleType>
</xs:element>
<xs:element name="obor" type="xs:string"/>
</xs:sequence>
<xs:attribute name="osCislo" type="xs:string"/>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:schema>
Jazyk XML toho samozřejmě nabízí mnohem více. Přehled je v dokumentaci jazyka.
Připojení shcématu k XML souboru je potom poměrně jednoduché. Stačí do XML souboru, ihned za deklaraci, doplnit následující:
<?xml-model href="schema.xsd"?>
JSON
JSON (JavaScript Object Notation) je textový formát určený pro ukládání a výměnu strukturovaných dat. Je navržen tak, aby byl snadno čitelný pro člověka a jednoduše zpracovatelný v počítači. Nejčastěji se používá při komunikaci mezi webovým prohlížečem a serverem (API), ale také pro ukládání konfigurací nebo jednoduchých datových struktur v aplikacích. Díky své jednoduchosti a přehlednosti je dnes jedním z nejpoužívanějších datových formátů.
Syntaxe
JSON je založený na dvojicích klíč–hodnota. Data se zapisují do objektů { }, které obsahují
jednotlivé
položky, a do polí [ ], která slouží pro seznamy hodnot. Klíče jsou vždy zapsány v
uvozovkách. Hodnota
mohou být text, číslo, logická hodnota (true/false), pole, další objekt nebo null.
{
"jmeno": "Jan Novák",
"vek": 20,
"obor": "Informatika",
"predmety": ["Matematika", "Programování", "Databáze"]
}
JSON Schémata
JSON Schema je nástroj, který slouží k definování struktury a pravidel JSON dat. Umožňuje přesně popsat, jaké klíče musí objekt obsahovat, jaké mají mít datové typy, které jsou povinné a jaká omezení musí splňovat. Díky tomu lze JSON data automaticky validovat a zajistit, že odpovídají očekávanému formátu. JSON Schema se často používá v API dokumentaci a při vývoji aplikací, kde je potřeba kontrolovat správnost přenášených dat.
Pro vytvoření JSON schématu stačí vytvořit běžný textový soubor s příponou
.json, například schema.json, do
kterého uložíme definici pravidel pro naše JSON data. Na začátku obvykle uvedeme klíč
$schema, který určuje
verzi schématu, a poté definujeme, s jakým typem dat pracujeme (array nebo object). Následuje část
properties, kde popisujeme jednotlivé klíče, jejich názvy a datové typy, například text (string), celé
číslo (integer) nebo pole (array). Nakonec můžeme pomocí required určit, která pole musí být vždy
vyplněná.
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"type": "object",
"properties": {
"jmeno": {
"type": "string",
"description": "Jmeno a prijmeni studenta"
},
"vek": {
"type": "integer"
},
"obor": {
"type": "string"
},
"predmety": {
"type": "array",
"items": {
"type": "string"
}
}
},
"required": ["jmeno", "vek", "obor"]
}
Více možností opět v oficiální dokumentaci.
Úkoly k dnešnímu cvičení
-
Úkol číslo 1
Podívejte se na tabulku z minulého cvičení. Zapište data v XML formátu.
-
Úkol číslo 2
Data zapište také v JSON formátu.
-
Úkol číslo 3
Vyberte si jeden z výše zmíněných datových formátů. Vytvořte schéma pro tabulku s knihami.