Tahák XML a JSON

Referenční tabulky XML a JSON na jedné stránce: syntaxe, entity, XSD, XPath, XQuery, XSLT, JSON Schema, JSONPath, Pointer, Patch a MIME typy. Filtr skryje řádky, které neodpovídají, a zápis zkopíruješ jedním kliknutím.

Autor: Aktualizováno

XML

Syntaxe XML

KonstrukceZápis / pravidlo
Deklarace <?xml version="1.0" encoding="UTF-8"?>; pokud je přítomna, musí být první po případném BOM
Kořen právě jeden kořenový element
Element <jmeno>text</jmeno> nebo <jmeno/>
Atribut jmeno="hodnota"; hodnota je vždy v uvozovkách
Velikost písmen <Jmeno> a <jmeno> jsou jiné názvy
Vnoření značky se nesmějí křížit
Text & a < escapuj; > escapuj v posloupnosti ]]>
Komentář <!-- text -->; uvnitř nesmí být -- a nesmí končit pomlčkou
CDATA <![CDATA[text]]>; nevnořuje se, ukončuje ji ]]>
Instrukce <?cil data?>; cíl xml je rezervovaný pro deklaraci
Bílé znaky mezera, tabulátor, CR a LF mají kontextový význam
Validita well-formed není totéž co valid vůči DTD nebo schema-valid

XML 1.0, 5. vydání. Toto je reference syntaxe, nikoli úplná gramatika. Serializátor řeší escapování podle kontextu. Podrobně: Syntaxe XML · Vyzkoušet: XML nástroj

Entity a číselné odkazy

ZápisVýznam / omezení
&amp; &; povinné escapování v běžném textu a hodnotách atributů
&lt; <; povinné escapování v běžném textu a hodnotách atributů
&gt; >; povinné v zakončení ]]> mimo CDATA
&quot; "; nutné v atributu ohraničeném dvojitými uvozovkami
&apos; '; nutné v atributu ohraničeném apostrofy
&#169; desítkový odkaz na znak ©
&#xA9; šestnáctkový odkaz na stejný znak; x je malé
&nbsp; není předdefinovaná XML entita; použij znak nebo &#160;
&#0; nepovolený znak XML 1.0; odkaz ho nelegalizuje
&vlastni; vyžaduje deklaraci entity; načítání externích entit je bezpečnostní riziko

Pět předdefinovaných entit není seznam pěti znaků, které se musejí escapovat vždy. Číselné odkazy smějí označovat pouze znaky povolené verzí XML. Podrobně: Entity a číselné odkazy · Vyzkoušet: XML nástroj

URI jmenných prostorů

Formát / účelURI
xml:* http://www.w3.org/XML/1998/namespace
xmlns http://www.w3.org/2000/xmlns/
XSD http://www.w3.org/2001/XMLSchema
xsi http://www.w3.org/2001/XMLSchema-instance
XSLT http://www.w3.org/1999/XSL/Transform
SVG http://www.w3.org/2000/svg
XHTML http://www.w3.org/1999/xhtml
Atom http://www.w3.org/2005/Atom
Sitemap http://www.sitemaps.org/schemas/sitemap/0.9
SOAP 1.1 http://schemas.xmlsoap.org/soap/envelope/
SOAP 1.2 http://www.w3.org/2003/05/soap-envelope
XInclude http://www.w3.org/2001/XInclude
XML Signature http://www.w3.org/2000/09/xmldsig#
UBL Invoice urn:oasis:names:specification:ubl:schema:xsd:Invoice-2

URI prostoru je identifikátor a porovnává se přesně. HTTP URI nepřepisuj na HTTPS. Prefix není součástí identity a výchozí prostor se nevztahuje na neprefixované atributy. Podrobně: URI jmenných prostorů · Vyzkoušet: XML nástroj

XSD

Komponenty XSD

KomponentaÚčel
schema kořen; targetNamespace, elementFormDefault, attributeFormDefault
element deklarace elementu; name/ref, type, minOccurs/maxOccurs
attribute deklarace atributu; use=required/optional/prohibited
simpleType jednoduchý obsah a omezení hodnot
complexType elementy a atributy
sequence pořadí částí obsahu
choice alternativy obsahu
all skupina elementů s omezenými pravidly výskytu; rozdíly mezi 1.0 a 1.1
restriction omezení základního typu
extension rozšíření základního typu
list / union seznam jednoduchých hodnot / sjednocení typů
include / import skládání stejného / jiného prostoru
key / unique / keyref identitní omezení a reference
assert XSD 1.1; podmínka vyhodnocovaná pomocí XPath

Tabulka není gramatika XSD. minOccurs/maxOccurs patří do kontextu částic, nikoli libovolně na každou globální deklaraci. Podrobně: Komponenty XSD · Vyzkoušet: Validace proti XSD

Datové typy XSD

TypPříkladPoznámka
xs:string Jana řetězec
xs:normalizedString Jana Nováková normalizuje tabulátory a konce řádků
xs:token Jana Nováková navíc slučuje a ořezává whitespace
xs:boolean true / false / 1 / 0 čtyři povolené způsoby zápisu
xs:decimal 1499.90 desetinné číslo bez exponentu
xs:integer 123 celé číslo bez stanoveného konečného rozsahu
xs:int 123 32bitový rozsah
xs:long 123 64bitový rozsah
xs:nonNegativeInteger 0 celé číslo nejméně 0
xs:float / xs:double 1.2E3 IEEE 754, také INF, -INF, NaN
xs:date 2026-10-01 datum; časová zóna může být uvedena
xs:dateTime 2026-10-01T12:00:00Z datum a čas
xs:duration P1DT2H doba trvání
xs:anyURI https://example.cz/ URI; není kontrola dostupnosti
xs:QName o:polozka vyžaduje správný kontext prefixu
xs:base64Binary AQID binární data v Base64
xs:byte / xs:short 127 / 32767 8bitový / 16bitový celočíselný rozsah
xs:unsignedByte / xs:unsignedShort 255 / 65535 nezáporné 8bitové / 16bitové číslo
xs:unsignedInt / xs:unsignedLong 4294967295 / 18446744073709551615 nezáporné 32bitové / 64bitové číslo
xs:positiveInteger / xs:negativeInteger 1 / -1 striktně kladné / záporné celé číslo
xs:nonPositiveInteger 0 celé číslo nejvýše 0
xs:time 12:00:00Z čas dne; zóna může být uvedena
xs:gYear / xs:gYearMonth 2026 / 2026-10 rok / rok a měsíc
xs:gMonth / xs:gMonthDay / xs:gDay --10 / --10-02 / ---02 opakující se části kalendáře
xs:hexBinary 0102FF binární data v hex zápisu
xs:NCName kniha XML jméno bez dvojtečky
xs:ID / xs:IDREF k1 identifikátor / reference; další dokumentová pravidla
xs:language cs-CZ jazykový identifikátor; ne kontrola existence jazyka
xs:NMTOKEN kniha-1 token z XML name znaků
xs:dateTimeStamp 2026-10-02T12:00:00Z XSD 1.1; časová zóna je povinná
xs:dayTimeDuration / xs:yearMonthDuration P1DT2H / P1Y2M XSD 1.1; omezené druhy duration
xs:Name p:kniha XML jméno; na rozdíl od NCName dovoluje dvojtečku
xs:IDREFS / xs:NMTOKENS k1 k2 neprázdné whitespace oddělené seznamy příslušných tokenů
xs:ENTITY / xs:ENTITIES logo reference na neparsované entity; navazuje na DTD kontext
xs:NOTATION p:format abstraktní typ zápisu notation; používá se odvozený typ s výčtem
xs:anySimpleType základ jednoduchých typů není totéž jako xs:anyType; od 1.1 je také anyAtomicType

XSD rozlišuje zápis hodnoty a její význam: například true a 1 označují stejnou logickou hodnotu. Aplikace může omezit číselnou přesnost více než samotný datový typ. Datum bez časové zóny není automaticky UTC. Podrobně: Datové typy XSD · Vyzkoušet: Validace proti XSD

XPath, XQuery a XSLT

Zápis XPath

TémaZápisVýznamPříklad
Základy /prvek Cesta od kořene dokumentu. /katalog/kniha
Základy //prvek Prvek kdekoli v dokumentu. //nazev
Základy * Jakýkoli prvek. /katalog/kniha[1]/*
Základy text() Text uvnitř prvku. //nazev/text()
Atributy @atribut Hodnota atributu. //kniha/@id
Atributy [@atribut="hodnota"] Prvek s daným atributem. //kniha[@id='k2']
Atributy //@atribut Atribut kdekoli v dokumentu. //cena/@mena
Pozice [1] První prvek (XPath počítá od jedné). //kniha[1]
Pozice [last()] Poslední prvek. //kniha[last()]
Pozice [position() < 3] Prvky podle pozice. //kniha[position() < 3]
Filtry [podprvek > číslo] Podmínka na hodnotu podprvku. //kniha[cena > 100]/nazev
Filtry [contains(x, "text")] Obsahuje text. //kniha[contains(autor, 'Karel')]
Filtry [starts-with(x, "text")] Začíná textem. //kniha[starts-with(nazev, 'R')]
Filtry [a and b] Spojení podmínek. //kniha[@jazyk='cs' and cena > 150]
Funkce count(…) Počet nalezených uzlů. count(//kniha)
Funkce sum(…) Součet čísel. sum(//cena[@mena='CZK'])
Funkce string(…) Text uzlu. string(//kniha[1]/nazev)
Osy parent:: Rodič uzlu. //nazev/parent::kniha
Osy following-sibling:: Sourozenci za uzlem. //kniha[1]/following-sibling::kniha
Osy ancestor:: Všichni předci uzlu. //autor/ancestor::katalog
XPath 3.1 navíc => funkce() Řetězení: výsledek se předá další funkci. //nazev/string() => string-join(', ')
XPath 3.1 navíc for … return Cyklus přímo ve výrazu. for $k in //kniha return $k/nazev/string()

Příklady pracují s ukázkovými daty nástroje; tlačítkem v nástroji je vložíš a hned vyhodnotíš. Podrobně: XPath · Vyzkoušet: XPath a XQuery tester

Osy XPath

OsaCo vybere / směr
child děti; výchozí osa
descendant potomky v libovolné hloubce
parent rodiče; zkratka ..
ancestor předky; zpětná osa
following-sibling následující sourozence
preceding-sibling předchozí sourozence; zpětná osa
following následující uzly mimo potomky a atributy
preceding předchozí uzly mimo předky a atributy; zpětná osa
attribute atributy; zkratka @
self kontextový uzel; zkratka .
descendant-or-self kontextový uzel a potomky
ancestor-or-self kontextový uzel a předky; zpětná osa
namespace jmenné prostory; v XPath 1.0, podpora novějšími procesory omezená

Osy jsou pohyb po XML stromu. Predikát [1] na zpětné ose vybírá nejbližší uzel v jejím směru; závorky kolem celé sekvence mohou změnit kontext pořadí. Podrobně: Osy XPath · Vyzkoušet: XPath a XQuery tester

Funkce XPath

FunkceOd verzeÚčel
count(nodes) 1.0 počet uzlů; od 2.0 obecně položek sekvence
string(value) 1.0 řetězcová hodnota
number(value) 1.0 číselná konverze
boolean(value) 1.0 efektivní pravdivost
position(), last() 1.0 pozice a velikost kontextu
contains(a,b), starts-with(a,b) 1.0 část řetězce / prefix
concat(a,b,…) 1.0 spojení řetězců
normalize-space(text) 1.0 ořez a sjednocení XML whitespace
sum(values) 1.0 součet
local-name(), namespace-uri() 1.0 části názvu uzlu
lang(tag) 1.0 test xml:lang v kontextu
matches(text,regex) 2.0 regulární výraz
tokenize(text,regex) 2.0 rozdělení textu
string-join(sequence,separator) 2.0 spojení sekvence
upper-case(text), lower-case(text) 2.0 změna velikosti písmen
parse-json(text), serialize(value) 3.1 / 3.0 JSON do XDM / serializace XDM
map:get(map,key), array:size(array) 3.1 mapy a pole
boolean(value), not(value) 1.0 booleovská konverze / negace
true(), false() 1.0 booleovské konstanty
string(value), number(value) 1.0 konverze; neplatné číslo v 1.0 dává NaN
string-length(text) 1.0 délka řetězce
substring(text,start,length) 1.0 výřez; pozice začínají na 1
substring-before(a,b), substring-after(a,b) 1.0 část před / za prvním výskytem
translate(text,from,to) 1.0 nahrazení jednotlivých znaků, ne podřetězců
floor(n), ceiling(n), round(n) 1.0 číselné zaokrouhlení
name(node) 1.0 kvalifikované jméno, nikoli samotná lokální část
id(value) 1.0 výběr podle známého ID typu; běžný atribut id nestačí
replace(text,regex,replacement) 2.0 regulární nahrazení
exists(sequence), empty(sequence) 2.0 neprázdnost / prázdnost sekvence
distinct-values(sequence) 2.0 jedinečné atomické hodnoty

Prohlížečové document.evaluate používá XPath 1.0. Přetížení, typy a chybové podmínky se mezi verzemi liší; tabulka uvádí orientační volání. Podrobně: Funkce XPath · Vyzkoušet: XPath a XQuery tester

XQuery FLWOR

TémaZápisVýznamPříklad
FLWOR základy for … return Projde prvky a pro každý vrátí výsledek. for $k in //kniha return $k/nazev
FLWOR základy where Vyfiltruje prvky podle podmínky. for $k in //kniha where $k/cena > 100 return string($k/nazev)
FLWOR základy order by Seřadí výsledky. for $k in //kniha order by number($k/cena) return string($k/nazev)
FLWOR základy let Pojmenuje mezivýsledek. let $n := count(//kniha) return $n
Nové XML a podmínky <prvek>{ … }</prvek> Vytvoří nový prvek; výrazy ve složených závorkách se vyhodnotí. <seznam>{ for $k in //kniha return <titul>{ string($k/nazev) }</titul> }</seznam>
Nové XML a podmínky if (…) then … else … Podmínka. if (count(//kniha) > 2) then 'hodně' else 'málo'
Nové XML a podmínky string-join(…) Spojí texty do jednoho. string-join(//nazev, ', ')

Příklady pracují s ukázkovými daty nástroje; tlačítkem v nástroji je vložíš a hned vyhodnotíš. Podrobně: XQuery · Vyzkoušet: XPath a XQuery tester

Instrukce XSLT

InstrukceCo dělá
xsl:template match="…" šablona pro uzly odpovídající vzoru
xsl:apply-templates select="…" zpracuje vybrané uzly jejich šablonami
xsl:value-of select="…" vloží textovou hodnotu výrazu
xsl:for-each select="…" cyklus přes vybrané uzly
xsl:if test="…" podmínka bez větve „jinak“
xsl:choose / when / otherwise vícenásobná podmínka
xsl:sort select="…" řazení uvnitř apply-templates nebo for-each
xsl:copy / xsl:copy-of mělká / úplná kopie uzlu do výstupu
xsl:variable name="…" pojmenovaná hodnota (po nastavení se nemění)
xsl:output method="…" formát výstupu: xml, html nebo text

Podrobně: XSLT · Vyzkoušet: XSLT transformace

JSON

Syntaxe JSON

Hodnota / pravidloZápis
object {"jmeno":"Jana"}; názvy jsou řetězce
array [1,"dva",null]; pořadí je významové
string "text"; jen dvojité uvozovky
number -12.5e2; desítkově, bez úvodních nul
boolean true nebo false; malými písmeny
null null; není chybějící vlastnost
Kořen libovolná jedna JSON hodnota
Whitespace mezera, tabulátor, CR a LF
Komentáře nepovolené
Koncová čárka nepovolená
Duplicitní názvy gramatika je nezakazuje; vyhýbej se jim kvůli interoperabilitě
Kódování při výměně mezi systémy UTF-8
NaN / Infinity / undefined nejsou JSON hodnoty

RFC 8259 a ECMA-404 definují gramatiku JSON. JSON Schema ji nenahrazuje; nejprve zpracuj text parserem. Podrobně: Syntaxe JSON · Vyzkoušet: JSON nástroj

Escape sekvence JSON

SekvenceVýznam
\" uvozovka
\\ zpětné lomítko
\/ lomítko; escapování není povinné
\b backspace U+0008
\f form feed U+000C
\n LF U+000A
\r CR U+000D
\t tabulátor U+0009
\uXXXX čtyři hex číslice; jednotka UTF-16
\uD83D\uDE00 náhradní pár pro 😀
\x41, \0 nepovolené escape sekvence

Escapovat musíš uvozovku, backslash a řídicí znaky U+0000 až U+001F. Osamocený surrogate je sice zapisovatelný gramatikou, ale není interoperabilní Unicode text. Podrobně: Escape sekvence JSON · Vyzkoušet: JSON nástroj

Klíčová slova JSON Schema

SkupinaKlíčová slovaVýklad
Identifikace $schema, $id dialekt a základ URI
Odkazy $ref, $defs znovupoužití schémat
Typ a výčet type, enum, const typ / povolené hodnoty
Objekty properties, required, additionalProperties pravidla vlastností a přítomnosti
Uzavření unevaluatedProperties dosud nevyhodnocené vlastnosti po skládání
Seznam items položky za prefixem nebo všechny, pokud prefix není
N-tice prefixItems schéma pro jednotlivé pozice
Počet a obsah minItems, maxItems, uniqueItems, contains, minContains, maxContains délka, jedinečnost a odpovídající položky
Čísla minimum, maximum, exclusiveMinimum, exclusiveMaximum, multipleOf číselná omezení
Řetězce minLength, maxLength, pattern, format délka, vzor a formát
Kombinace allOf, anyOf, oneOf, not logické podmínky
Podmínka if, then, else výběr větve
Závislosti dependentRequired, dependentSchemas požadavky vyvolané přítomností vlastnosti
Anotace title, description, default, examples popis; default automaticky nedoplňuje hodnotu
Názvy a vzory propertyNames, patternProperties schéma pro názvy / pro hodnoty odpovídajících názvů
Zbylé položky unevaluatedItems omezení dosud nevyhodnocených položek po skládání
Kontextová anotace readOnly, writeOnly, deprecated popis použití; samotné klíčové slovo není autorizace
Obsah řetězce contentEncoding, contentMediaType, contentSchema popis vloženého obsahu; běžně se automaticky nedekóduje ani nevaliduje

JSON Schema 2020-12. type je nutné, pokud chceš vyžadovat daný typ; například minimum samo neodmítá řetězec. format má podle slovníku a konfigurace anotaci nebo kontrolní význam. Podrobně: Klíčová slova JSON Schema · Vyzkoušet: Validace JSON Schema

JSONPath, Pointer a Patch

JSONPath

TémaZápisVýznamPříklad
Základy $ Celý dokument (kořen). $
Základy .klíč Hodnota klíče v objektu. $.store.name
Základy ['klíč'] Totéž se závorkami — nutné u klíčů s mezerou nebo tečkou. $['store']['name']
Základy ['a','b'] Víc klíčů najednou. $.store['name','open']
Pole [0] Položka podle pořadí (od nuly). $.store.books[0]
Pole [-1] Poslední položka. $.store.books[-1]
Pole [0:2] Výřez: položky od–do (bez posledního). $.store.books[0:2]
Pole [*] Všechny položky pole (nebo hodnoty objektu). $.store.books[*].title
Pole [0,2] Vybrané položky podle pořadí. $.store.books[0,2].title
Rekurze ..klíč Klíč kdekoli v dokumentu, v libovolné hloubce. $..price
Rekurze ..* Všechny hodnoty v celém dokumentu. $..books[*].author
Filtry [?@.pole < X] Položky, které splňují podmínku; @ je aktuální položka. $.store.books[?@.price < 180]
Filtry [?@.pole == hodnota] Rovnost s textem nebo číslem. $.store.books[?@.author == 'Karel Čapek']
Filtry [?@.pole == true] Podmínka na logickou hodnotu. $.store.books[?@.inStock == true].title
Filtry && a || Spojení podmínek (a zároveň / nebo). $.store.books[?@.price > 150 && @.inStock == true].title
Funkce length(@.pole) Délka textu, pole nebo objektu. $.store.books[?length(@.tags) > 1].title
Funkce match(@.pole, 'regex') Celý text odpovídá regulárnímu výrazu. $.store.books[?match(@.title, 'R.*')].title
Funkce search(@.pole, 'regex') Regulární výraz se najde kdekoli v textu. $.store.books[?search(@.author, 'Franz')].title

Příklady pracují s ukázkovými daty nástroje; tlačítkem v nástroji je vložíš a hned vyhodnotíš. Podrobně: JSONPath · Vyzkoušet: JSONPath tester

JSON Pointer

PointerVýznam
prázdný řetězec celý dokument
/zakaznik/jmeno vlastnost jmeno v zakaznik
/polozky/0/nazev název první položky pole
/a~1b vlastnost a/b
/m~0n vlastnost m~n
/ vlastnost s prázdným názvem

Uvnitř názvu se ~ zapisuje jako ~0 a / jako ~1. Číselný segment je index jen tehdy, když aktuální hodnota je pole. Podrobně: JSON Pointer

Operace JSON Patch

opVýznam
add přidá člen objektu nebo vloží položku pole; existující člen objektu nahradí
remove odstraní existující hodnotu
replace nahradí existující hodnotu
move přesune hodnotu z from do path
copy zkopíruje hodnotu z from do path
test ověří rovnost hodnoty, jinak operace selže

Cesty v path a from jsou JSON Pointer. JSON Merge Patch má jiná pravidla: null odstraní vlastnost a pole se nahrazují celé. Podrobně: JSON Patch a Merge Patch

HTTP a MIME typy

MIME typy

MIME typÚčel
application/xml obecný XML dokument; charset podle RFC 7303
text/xml alias application/xml podle RFC 7303
application/json JSON; charset parametr není definovaný
application/schema+json JSON Schema
application/json-patch+json JSON Patch
application/merge-patch+json JSON Merge Patch
application/soap+xml SOAP 1.2
image/svg+xml SVG
application/atom+xml Atom feed
application/xhtml+xml XHTML
application/ld+json JSON-LD
application/geo+json GeoJSON

Content-Type popisuje tělo zprávy, Accept požadovaný formát odpovědi. +xml a +json označují strukturovanou syntaxi, nikoli vzájemnou zaměnitelnost aplikačních formátů. Podrobně: MIME typy