Parsery

Parser je program, který kontroluje syntaktickou správnost dokumentu. Některé parsery umějí dokument kontrolovat oproti DTD nebo schématu. Většina parserů se dá spustit z příkazové řádky a jako parametr se jim předá dokument, který mají zkontrolovat. Parser je samozřejmě zabudován i ve všech prohlížečích s podporou XML. Mezi nejznámější parsery patří SP, XP a parser od Microsoftu.

Pro programátory

Pro programátora je čtení a zápis dokumentů v XML velice snadné. O zápisu netřeba hovořit, protože XML dokumenty jsou obyčejné textové soubory. Při čtení dokumentů využijeme existující parsery v podobě knihoven, které můžeme použít v našich programech. Náš program pak nemusí kontrolovat syntaxi dokumentu. Tu automaticky zkontroluje parser, navíc může parser ověřit i validitu oproti danému DTD nebo schématu. Naše aplikace pak nemusí obsahovat zdaleka tolik kódu pro ošetření chyb ve zpracovávaných datech.

Další výhodou parseru je to, že nám obsah dokumentu zpřístupní v příjemné podobě. Aby byl život vývojářů, co nejjednodušší, existují standardizovaná rozhraní (API) pro práci s dokumentem. Většina producentů parserů tato rozhraní používá. Dnes se používají dvě rozhraní DOM a SAX. Poznamenejme ještě, že parsery dnes existují pro většinu běžně používaných jazyků – Java, C, C++, Perl a další. Ve Windows jsou parsery často dostupné jako COM objekty, takže je lze využít v libovolném jazyce, který podporuje rozhraní COM (těch je dnes převážná většina).

SAX

Rozhraní SAX (Simple API for XML) je založeno na řízení pomocí událostí (event-driven). Pomocí rozhraní vytvoříme vazbu mezi událostmi, které generuje parser, a naším kódem. V praxi to znamená, že si nadefinujeme funkce, které se zavolají v okamžiku, kdy parser narazí na začátek elementu, na obsah elementu, na konec elementu, na komentář na instrukce pro zpracování apod. Naší funkci jsou pak předány všechny potřebné parametry jako např. název elementu.

Výhoda událostmi řízeného přístupu je v jeho rychlosti a malé spotřebě paměti. Jednotlivé události jsou vyvolávány postupně, jak je čten dokument. Jak za chvíli uvidíme, rozhraní DOM vyžaduje načtení celého dokumentu předtím, než s ním začneme pracovat. Pokud tedy nepotřebujeme funkčnost DOMu, vyplatí se použít SAX, protože naše aplikace bude rychlejší a bude mít menší paměťové nároky.

Rozhraní SAX dnes podporuje velké množství parserů, i když samotné rozhraní není definováno pomocí žádného standardu konsorcia W3C nebo jiné standardizační organizace. Rozhranní vzniklo společným úsilím vývojářů z diskusní skupiny xml-dev a je to de facto standard. Parsery se rozhraní SAX drží, takže můžeme v naší aplikaci klidně zaměnit jeden parser za druhý.

DOM

Rozhraní DOM (Document Object Model) je postaveno na zcela odlišném principu než SAX. Dokument je reprezentován jako stromová hierarchická struktura, kdy každému elementu odpovídá jeden uzel stromu. Odpovídající uzly mají samozřejmě i komentáře, instrukce pro zpracování atd. Tomuto způsobu reprezentace se říká grove (Graph Representation Of property ValuEs). Rozhraní DOM obsahuje funkce, které nám umožňují celý strom dokument procházet, modifikovat jeho jednotlivé uzly, mazat je a přidávat. Narozdíl od SAXu nemusíme dokument procházet od začátku do konce, ale můžeme se v něm pohybovat dle naší potřeby. Proto se rozhraní DOM uplatní v aplikacích, které provádějí náročnější operace s dokumentem – editory, prohlížeče a formátovače.

Rozhraní DOM je standardem z dílny konsorcia W3C. Původně byl DOM vytvořen zejména proto, aby nové nové prohlížečů podporující XML používaly stejný objektový model pro přístup k dokumentu ze skriptových jazyků jako JavaScript. Bez tohoto standardu bychom si o kompatibilitě prohlížečů mohli nechat jen zdát. Rozhraní DOM podporuje Internet Explorer i Mozilla.

© Jiří Kosek 2000-2001