Znaky

Úvod
XML
Struktura XML dokumentu
Běžné syntaktické konstrukce
Znaky
Znaky a značení
Komentáře
Zpracovací instrukce
Části CDATA
Zpracování bílých znaků
Určení jazyka

Counter

Základní součástí každého dokumentu jsou znaky (characters). V této kapitole popíšeme terminologii spojenou se znaky a způsob interpretace znaků v XML. V této části jsou použity materiály firmy Microsoft (Microsoft, 1998) a (Microsoft, 1997) a dále materiály (Czyborra, 1998) a (Czyborra, 1998b) . Pro začátek uvedeme několik definic a vysvětlění.

Znak (character)
Znak je abstrakcí pro jednotku textové informace. Je jím např. písmeno velké A.
Znak (glyph)
je elementární obrazovou reprezentací znaku nebo skupiny znaků.
Font (font)
Fontem rozumíme kolekci glyphu.
Kód znaku (character code)
Každý znak musí být v počítači uložen digitálně. Kód znaku je číselným vyjádřením daného znaku.
Znaková sada (character set)
Znakovou sadou rozumíme zobrazení množiny celočíselných kódů na znaky.
Schéma kódování znaků (character encoding scheme)
je zobrazením z řady bajtů do řady celých čísel. Tato celá čísla jsou pak interpretována v dané znakové sadě jako znaky.
Na světě existuje v současnosti mnoho znakových sad. V minulosti byly znaky kódovány ve znakových sadách pomocí maximálně 8 bitů. Tato koncepce vyhovovala tehdejšímu zpracování textů, které interpretovalo datový proud jako řadu 8bitových znaků. Nevýhodou tohoto přístupu však bylo, že neumožňoval kódování více jak 256 znaků. 256 hodnot je příliš málo na to, aby pokrylo veškeré na světě existující znaky. Toto omezení se projevilo při vývoji mezinárodních aplikací a zpracování textů v mnoha jazycích. S nedostatkem 256 znaků se intenzivně bojuje dosud.

Řešení, která reagovala na omezení 256 znaků existuje v dnešní době mnoho. Jedním z předních standardizovaných a používaných řešení je znaková sada Unicode definovaná standardem ISO 10646. Tato znaková sada používá 32bitových kódů pro každý znak. Podmnožinou této znakové sady mají být všechny doposud používané znakové sady. Pouze znakové sady US-ASCII a ISO-8859-1 přiřazují stejným znakům stejná čísla jako jim přiřazuje ISO 10646.

Pro znakovou sadu Unicode existuje mnoho schémat pro jejich kódování. Mezi nejpoužívanější kódování v současnosti patří UTF-8 a UTF-16. Každý znak sady UTF-8 je kódován jako řada 8bitových čísel, která si nesou ve vrchních bitech označení potřebná k dekódování 32bitového znakového kódu. Schéma kódování znakové sady US-ASCII je podmnožinou kódování znakové sady UTF-8. UTF-16 funguje analogicky UTF-8 s tím, že za elementární jednotku, ze které jsou 32bitová čísla skládána, považuje 16 bitů.

Tvůrci XML vyřešili problém znakových sad tak, že do deklarace XML přidali nepoviný atribut encoding, který označuje kódování, ve kterém je dokument nebo jeho fyzická část (entita) zapsána. Není-li tento atribut nastaven, pak se předpokládá kódování UTF-8 nebo UTF-16, a tyto již lze algoritmicky rozeznat. Důležitým poznatkem pro praktické psaní dokumentů tedy je, že pokud není dokument psán v UTF-8 (i US-ASCII) nebo UTF-16, tak kódování dokumentu musí být explicitně uvedeno.

Do XML dokumentu v libovolném kódování lze vložit libovolný znak z ISO 10646, a to pomocí znakového odkazu. Znakový odkaz začíná prefixem &#, resp. &#x a za ním následuje decimální, resp. hexadecimální vyjádření kódu znaku z ISO 10646.