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