Hlavní navigace

Akta X 0402

Petr Cimprich

V únoru uplynulo už šest let od zveřejnění specifikace XML 1.0 jako doporučení W3C. Možná právě k tomuto výročí si konsorcium načasovalo uvedení dosud největších změn od roku 1998; s definitivní platností je zde XML verze 1.1. Prosadí se tato novinka? Jaké budou důsledky pro běžné uživatele?

XML 1.0, třetí vydání

Malým předkrmem doprovázejícím příchod verze 1.1 je aktualizace specifikace stávající verze 1.0, Extensible Markup Language (XML) 1.0 Third Edition. Tento dokument nepřináší nic převratného, pouze upřesňuje formulace a opravuje nepřesnosti předchozího vydání specifikace, jak se v průběhu času nashromáždily v erratě.

XML 1.1

Doporučení Extensible Markup Language (XML) 1.1 také není úplnou revolucí, ale obsažené změny stačí k tomu, aby dokumenty XML 1.1 nebyly kompatibilní s nástroji pro XML 1.0. Změnila se definice pojmu správná zformovanost (well-formedness). Každý správně zformovaný dokument 1.0 je zároveň správně zformovaným dokumentem 1.1, ale opak není pravdou. Některé korektní dokumenty 1.1 musí být parsery verze 1.0 odmítnuty.

Změny se týkají tří oblastí:

  • Definice standardu Unicode – XML 1.0 – vychází z dobové verze Unicode 2.0. Specifikace sice připouští vývoj Unicodu a přidávání dalších znaků, ale na jiném místě výčtem jmenuje povolené znaky. XML 1.1 již je obezřetnější; neváže se přímo na dnešní Unicode 4.0 a explicitně uvádí pouze znaky, jež nejsou povoleny. Všechny ostatní platné znaky dnešní i budoucích verzí Unicodu jsou v XML 1.1 přípustné.
  • Konce řádků – přibyl nový oddělovač řádků, znak NEL používaný na mainframech IBM.
  • Řídicí znaky – XML 1.0 – ve jménech elementů, atributů a dalších značek připouští pouze omezenou třídu znaků (ASCII a několik málo dalších). XML 1.1 povoluje ve jménech všechny znaky Unicode s výjimkou omezeného počtu výslovně zakázaných znaků.

Na první pohled je zřejmé, že běžný uživatel si v podstatě všimne pouze poslední změny. Jména elementů a atributů v XML 1.1 mohou obsahovat háčky a čárky, řecká písmena a další, v tomto kontextu dosud nevídané znaky.

Jmenné prostory v XML 1.1

Nedílnou součástí XML verze 1.1 je také doporučení Namespaces in XML 1.1. Tento dokument především rozšiřuje obor znaků použitelných v identifikátorech jmenných prostorů, místo URI používá obecnější IRI a doplňuje mechanismus oddeklarování jmenných prostorů.

Infoset, druhé vydání

S XML 1.1 souvisí ještě třetí nová specifikace, XML Information Set, Second Edition. Druhé vydání Infosetu kromě běžných oprav a upřesnění zohledňuje změny, jež přinesla verze 1.1. Změny se týkají pouze pravidel parsování, samotný informační obsah dokumentu je u obou verzí XML stále stejný.

Praktické důsledky

O faktickém přijetí či nepřijetí nové verze XML rozhodnou uživatelé a hlavně výrobci softwaru. V okamžiku, kdy se XML 1.0 stalo doporučením W3C, už byl k dispozici široký výběr použitelných parserů. U verze 1.1 jsou výrobci podstatně zdrženlivější. Autoři Expatu mají v úmyslu podpořit novou verzi XML, ale zatím nemají ani přibližný časový rozvrh. Daniel Veillard zmiňuje podporu XML 1.1 ve svých plánech na další rozvoj knihovny Libxml někdy od loňského podzimu, ale skutek zatím utek. Z open source parserů zatím implementují XML 1.1 (byť jen starší pracovní verzi specifikace) pouze oba apachovské projekty: Xerces-C++ od verze 2.3.0 a Xerces2-Java od verze 2.4.0. Na příchod XML 1.1 zatím nestačily zareagovat ani firmní parsery, podporu dosud ohlásil jen Corel.

Dříve nebo později se asi všechny významné parsery k podpoře verze 1.1 rozhoupou, ale současná situace je poměrně výmluvná. Po XML 1.1 nikdo obzvlášť netoužil ani ho nepotřeboval. Je tady, protože ho příslušná pracovní skupina vyrobila, a zatím budí spíš rozpaky. Uživatelé však musí vzít novou verzi XML alespoň na vědomí. Rozumný postoj by se asi dal shrnout do dvou bodů:

  • Pokud produkujete XML, zůstaňte zatím u verze 1.0. Nástrojů na zpracování verze 1.1 je málo a nejsou dost rozšířené. Konzumenti vašich dokumentů by na vaši přílišnou pokrokovost mohli doplatit. Nemáte-li opravdu vážný důvod k přechodu na XML 1.1, není třeba nic měnit ani dlouhodobě. Všechny budoucí parsery verze 1.1 musí stále podporovat XML 1.0.
  • Pokud zpracováváte XML z různých zdrojů, které nemáte plně pod kontrolou, porozhlédněte se v dohledné době po parseru podporujícím verzi 1.1, případně v tomto ohledu upravte svou aplikaci. Vždy se najde někdo, kdo se nebude řídit doporučením z předchozího bodu.

Změny základních pravidel způsobené XML 1.1 budou muset být postupně brány na vědomí všemi standardy a technologiemi tvořícími širší jádro XML: XPath, XSL, XQuery, XInclude, X-doplňte-si-sami. Nelze například garantovat, že současný procesor XSLT 1.0 navržený pro dokumenty 1.0 korektně zpracuje každý dokument verze 1.1. Může a nemusí, záleží na detailech implementace konkrétního procesoru. Uvidíme, zda W3C bude zpětně upravovat platná doporučení (třeba formou dalšího vydání, viz Infoset), nebo podporu XML 1.1 zabuduje do příštích verzí příslušných specifikací. Buď jak buď, prostoru technologií XML přibyl nový rozměr a vše je zase o malý kousek složitější.

Našli jste v článku chybu?
2. 3. 2004 11:16
Jirka Kosek (neregistrovaný)

Jen bych upřesnil, že různé národní znaky lze používat v názvech elementů i ve verzi XML 1.0. Standard XML 1.0 vyjmenovává poměrně široký rozsah znaků, který však s dalším vývojem Unicode zastaral. Ironicky shrnutý rozdíl mezi 1.0 a 1.1 jde popsat jednou větou: "XML 1.1 dokumenty můžeme vytvářet na mainframech IBM a názvy elmentů zapisovat v etiopštině." Pro implementátory vidím největší v problém unicodové normalizaci textu (http://www.w3.org/TR/2004/REC-xml11-20040204/#sec-CharNorm). Pokud …