Hlavní navigace

Akta X 0405

Petr Cimprich

Co se skrývá pod pojmem "neextraktivní" zpracování XML a jaké výhody může tato metoda nabídnout? W3C připravuje novou verzi jazyka SVG. Po dlouhé nemoci nás opustil oblíbený zpravodajský server.

Neextraktivní zpracování XML

V článku Non-Extractive Parsing for XML uveřejněném na XML.com navrhuje Jimmy Zhang zajímavý přístup ke zpracování XML. Jeho princip lze aplikovat na zpracování libovolného textového formátu, ale zůstaňme u XML.

Prvním krokem při parsování dokumentu XML je takzvaná tokenizace. Text je při ní rozdělen na atomické významové jednotky. Například kousek textu <item id=„i5“> si parser pravděpodobně rozdělí na tyto tokeny: <, item, mezera, id, ", i5, ", >. Izolované tokeny jsou uloženy v paměti, kde čekají na další krok zpracování – syntaktickou analýzu, jejímž výsledkem je syntaktický strom. Jádrem návrhu Jimmyho Zhanga je neukládat nalezené tokeny znovu do paměti, ale pouze si zapamatovat jejich polohu v původním dokumetu. Místo zkopírování tokenu si procesor jen uloží dvojici čísel (offset, délka).

Výhody jsou, podle článku, nasnadě. Úspora paměti a větší efektivita. Ušetří se místo v paměti pro nové řetězce a čas nezbytný pro vytváření těchto řetězců. Informaci o pozici tokenů je možné v binární podobě uložit do souboru, čímž by vzniklo cosi jako externí binární index textového dokumentu XML, umožňující rychlejší načtení dokumentu. Dále, neextraktivně načtený dokument, případně jeho libovolný fragment, je neustále k dispozici v serializované podobě.

Pokud jde o nejasnosti či slabiny, také se najdou. První otázkou je kódování. Serializovaný dokument XML může být libovolně kódovaný text, ale procesory XML potřebují pracovat se sekvencemi znaků Unicode. K interpretaci vstupního kódování a případnému převodu typicky dochází právě při tokenizaci. Při neextraktivním zpracování je třeba buď konvertovat celý dokument do vhodného kódování Unicode ještě před tokenizací, nebo konvertovat každý token vždy znovu při každém přístupu. Druhý způsob je zcela neefektivní, ten první vypadá přijatelně.

Úplně jasné není ani, jak by se podařilo skloubit neextraktivní a proudové, událostmi řízené zpracování. Aby zůstaly zachovány nízké paměťové nároky, musely by vždy být k dispozici pouze malé fragmenty dokumentu.

Dokonce i hlavní Zhangův argument týkající se zbytečného kopírování tokenů je možné oslabit. Opakovanému kopírování řetězců lze zabránit použitím poolu jmen, kde je každé jméno uloženo jen jednou a procesor pouze udržuje odkazy. V případě XML je tato metoda velmi účinná a často používaná. Neextraktivní zpracování textu je zajímavý nápad, ale revoluci v práci s XML od něho nečekám. Pokud se objeví implementace, určitě si ji ale nenechám ujít.

SVG 1.2

10. května pracovní skupina pro SVG konsorcia W3C zveřejnila již sedmou pracovní verzi specifikaceSVG 1.2 (Scalable Vector Graphics). SVG 1.2 je významnou aktualizací současného standardu SVG 1.1. Nové dynamické funkce mají omezit potřebu vkládat do dokumentů SVG javascriptový kód. Zdokonalený model SVG DOM poskytuje přístup k dalším užitečným vlastnostem obrázků.

Nekrolog

Od roku 1999 informoval server xmlhack.com o novinkách ze světa XML. Za tu dobu se stal součástí komunity a autoritou měřící význam událostí. Co nebylo na xmlhacku, jako by se nestalo. Poslední dobou však xmlhack viditelně ztrácel dech. Skupina dobrovolných editorů většinou přesunula svou psací energii do vlastních weblogů a na společný projekt přestával zbývat čas. Četnost nových příspěvků poklesla na úroveň, jež pro zpravodajský server znamená klinickou smrt.

Serveru xmlhack.com neprospěla ani skutečnost, že jeho provozovatelem je firma O'Reilly, které patří také podobně zaměřený, profesionálně vedený server XML.com. Dokud xmlhack běžel samospádem, vše bylo v pořádku. Jen blázen by ale investoval do dvou tématicky se překrývajících médií. xmlhack ukončil svou činnost stylově – nezmizel po anglicku (404) ani se z něho nestal zapomenutý zombie. V poslední„no­vince“ ozřejmuje okolnosti svého zániku a slibuje dostupnost svého, teď již historického, obsahu na původních URL.

Našli jste v článku chybu?