Hlavní navigace

Akta X: EXI čili binární XML

5. 11. 2007
Doba čtení: 3 minuty

Sdílet

Už čtvrtým rokem pokračuje úsilí W3C zaměřené na možnost binární serializace XML. Konsorcium nejprve důkladně zvažovalo, zda se vůbec do standardizace takového formátu pustit. Poté porovnávalo existující technologie a nakonec opravdu došlo na tvorbu nového standardu. Ta se teď pomalu chýlí ke konci.

Takzvané binární XML, před dvěma, třemi lety vášnivě diskutované téma, se pomalu a vcelku nenápadně stává skutečností. Uprostřed letní okurkové sezóny pracovní skupina EXI konsorcia W3C představila první pracovní verzi dokumentu Efficient XML Interchange (EXI) Format 1.0. Podle plánu by ještě do konce roku nová specifikace měla přejít do víceméně stabilní fáze zvané Last Call.

W3C přitom v případě „binární XML“ postupuje nanejvýš obezřetně a důkladně. A až úsměvně důsledně se vyhýbá slovnímu spojení binární XML, na které mnozí veteráni značkovacích jazyků reagují jako býk na červený hadr. Jako první krok W3C ustanovilo pracovní skupinu XBC (XML Binary Characterization), jejímž úkolem bylo shromáždit informace, vyhodnotit případové studie a popsat z nich vyplývající vlastnosti a požadavky na případný binární formát. Důležitým požadavkem bylo, aby ony vlastnosti byly měřitelné. Dalším cílem XBC totiž bylo definovat pro vybrané vlastnosti metody měření, aby bylo možné co nejobjektivněji porovnat stávající nestandardní binární formáty pro serializaci XML.

Pracovní skupina XBC měla na svou práci vyhrazen přesně rok – od března 2004 do března 2005. Za tu dobu stačila publikovat čtyři dokumenty:

Svůj úkol pracovní skupina XBC beze zbytku splnila a připravila tím půdu pro další postup. Rok pilné práce přinesl zásadní argumenty do diskuze o užitečnosti či škodlivosti binární serializace. Odborná veřejnost v převážné většině přijala stanovisko XBC, že je možné a vhodné pokusit se o vytvoření univerzálního binárního formátu pro serializaci XML Infosetu. Že tento formát mnohým prospěje a nikomu neuškodí. Mimochodem, v červnu 2005 předseda XBC Robin Berjon přijal naše pozvání, aby o aktivitách a závěrech XBC promluvil na prvním ročníku konference XML Prague.

K pokračování práce započaté XBC byla v listopadu 2005 založena nová pracovní skupina EXI. Její činnost byla původně naplánována na dva roky do prosince 2007, ale nyní je jasné, že bude muset být o něco prodloužena. Konečným cílem EXI už je vytvoření specifikace formátu, který umožní efektivní serializaci XML Infosetu.

Pracovní skupina EXI se hned pustila do měření a porovnání existujících formátů podle kritérií připravených XBC. Soupeřily spolu tyto formáty: X.694 ASN.1/PER, Xebu, XSBC, FXDI, Fast Infoset, Efficient XML a esXML. Měření je podrobně popsáno v dokumentu Efficient XML Interchange Measurements Note; zde jsou výsledky měření. Nejlépe ze všech kandidátů si vcelku přesvědčivě vedl formát Efficient XML navržený firmou AgileDelta, který tak byl vybrán jako základ pro budoucí standardní formát EXI.

Formát EXI je založen na poměrně jednoduchém algoritmu. Dokument XML je modelován jako proud událostí, které jsou v daném kontextu reprezentovány různě dlouhými kódy. Na základě znalosti gramatiky jsou těm nejpravděpodob­nějším událostem přířazeny nejkratší kódy. Každý kód se skládá z nejvýše tří celých čísel bez znaménka, přičemž ke kódování každého celého čísla je použit minimální počet bitů nutný k rozlišení všech možných čísel na této úrovni. Dále může být použita dodatečná komprese na principu náhrady často opakujících se vzorů, některé textové řetězce (URI, prefixy, jména elementů) mohou být nahrazeny kompaktními identifikátory odkazujícími do tabulky řetězců, a podobně.

Stejný algoritmus se používá pro dokumenty bez schématu i pro ty, u nichž je k dispozici schéma. Liší se pouze použitá gramatika. Dokument bez schématu je zakódován podle základní gramatiky XML definované specifikací XML 1.0. Dokument se schématem je zákodován podle specifičtější gramatiky určené konkrétním schématem.

root_podpora

Formát EXI by měl dobře spolupracovat s existujícími standardy XML. Každý dokument EXI začíná bity 1 a 0, což je sekvence, na kterou nesmí začínat textové dokumenty XML v žádném z obvyklých kódování. Technicky tedy nic nebude bránit napsání parseru, který by uměl interpretovat jak XML, tak EXI. Obdobně na opačném konci zpracování se o vše může postarat serializér.

Dlouho kontroverzní binární XML se tak už brzy stane realitou. O tom, jaká bude skutečná odezva implementátorů a uživatelů, zatím můžeme jen spekulovat.

Byl pro vás článek přínosný?