Co je to parser?

V dnešním Zápisníku se budeme nadále věnovat světu XML. Začneme pojmem parser, který se často používá, aniž se p...


V dnešním Zápisníku se budeme nadále věnovat světu XML. Začneme pojmem parser,
který se často používá, aniž se příliš vysvětluje, co vlastně obnáší.
Výhoda ukládání dokumentů v XML spočívá především v možnosti zachytit pomocí
elementů strukturu dokumentu. Základním nástrojem, který se při práci s XML
dokumenty používá, je parser. Parser je program, který kontroluje, zda je
dokument správně strukturovaný. Lepší parsery zároveň kontrolují, zda dokument
odpovídá danému DTD (samozřejmě jen pokud DTD pro dokument existuje).
Parsery dnes existují ve dvou podobách. Tou první jsou knihovny pro různé
programovací jazyky, které můžeme využívat v našich programech. Parser nám pak
kromě detekce chyb v dokumentu umožní velmi snadné čtení dat z XML dokumentů.
Většina parserů existuje i v podobě jednoduchých programů, kterým na vstup
předáme XML dokument, a na výstupu obdržíme případný přehled chyb v dokumentu.
Parser využijeme zejména v situaci, kdy chceme ověřit, zda náš dokument
neobsahuje nějaké syntaktické a strukturní chyby. Tato situace může nastat v
případě, kdy dokument vytváříme v editoru, který nemá podporu XML a umožní nám
vytvořit chybný dokument. Dnes je k dispozici mnoho parserů napsaných v různých
programovacích jazycích. Velice populární platformou pro psaní parserů je jazyk
Java. Z hlediska výkonu jsou však dnes lepší parsery napsané v jazyce C++.
Použitý jazyk nás však jako uživatele nemusí až zas tak moc zajímat, důležitá
je funkčnost.
Za jeden z nejlepších parserů se dnes považuje parser SP od Jamese Clarka. SP
je k dispozici zdarma včetně zdrojových textů, pracuje ve Windows i na Unixu
(dokonce existuje i verze pro MS-DOS). Jeho kvality dokládá i to, že se stal
základem mnoha komerčních parserů. SP byl původně vyvinutý pro SGML, ale od
verze 1.3 podporuje i XML. SP lze stáhnout ze serveru www.jclark.com. Pro
spuštění SP ve Windows budete konkrétně potřebovat soubor
ftp://ftp.jclark.com/pub/win32/ sp1_3.zip. Soubor rozbalte např. do adresáře
c:sp. Pokud si chcete usnadnit spouštění parseru, přidáte si do proměnné PATH
cestu c:spbin.
Samotný parser je realizován programem nsgmls. Před jeho spuštěním musíte
nastavit ještě několik proměnných prostředí, aby správně pracovala podpora XML.
Proměnná SP_CHARSET_FIXED musí být nastavena na hodnotu YES. Proměnná
SP_ENCODING by měla mít hodnotu XML. Jelikož zatím není k dispozici mnoho
editorů, které by přímo podporovaly kódování UTF-8, jenž je v XML preferováno,
je lepší proměnnou SP_ENCODING nastavit na hodnotu windows, resp. iso-8859-2 (v
Unixu). Pro psaní XML dokumentů pak můžete použít libovolný textový editor.
Poslední proměnnou, kterou musíte nastavit, je SGML_CATALOG_FILES. Do proměnné
musíte uložit cestu k souboru xml.soc např. c:sppubtextxml.soc.
Nyní si vytvoříte dokument, který budete parserem kontrolovat. Dejme tomu, že
vytvoříte dokument, jenž vyhovuje DTD, které jsme v jednom z minulých Zápisníků
použili jako příklad pro parametrické entity. DTD uložíte do souboru cla
nek.dtd. Váš testovací dokument pokus.xml může být třeba takovýto:
<!DOCTYPE clanek SYSTEM "clanek.dtd">
<clanek>
<nazev>O myších bez lidí</nazev>
<p>Myši možná nejsou tak...</p>
<p>Myšlenka, že myši ovládají...</p>
</clanek>
Pomocí příkazu
nsgmls -wxml -s pokus.xml
spusťte parser. Pokud je váš dokument dobře strukturovaný a vyhovuje zadanému
DTD, neohlásí parser žádnou chybu. Zkuste v dokumentu záměrně udělat nějakou
chybu (zapomeňte ukončovací tag, překřižte tagy, použijte neexistující atribut
apod.) a uvidíte, jak vám o tom podá nsgmls zprávu.
Pokud máte XML dokument, ke kterému neexistuje DTD, můžete jej pomocí nsgmls
také zkontrolovat. Stačí použít parametr -wno-valid a u dokumentu bude pouze
kontrolováno, zda je správně strukturovaný (well-formed).

9 1215 / pahn









Komentáře
K tomuto článku není připojena žádná diskuze, nebo byla zakázána.