![]() Specializovaný týdeník o výpočetní technice o Internetu (CW 45/96) Co je to SGML?(pokračování z minulého čísla) Jiří Kosek ml.
SGML je předně zcela otevřeným standardem nezávislým na platformách, výrobcích nebo aplikacích. Soubory SGML jsou ukládány jako text ASCII, což zajišťuje jejich použitelnost prakticky na libovolné počítačové platformě. Význam a přínos SGML se objevuje ve chvíli, kdy je dokument označen příslušnými značkovacími příkazy. Definování struktury a vnitřních vztahů v informaci do té doby nestrukturované otevírá zcela nové možnosti zpracování, publikování a opakovaného používání této informace. Např. SGML databáze může obsahovat tisíce označkovaných dokumentů a využitím vyznačené struktury z ní lze na přání publikovat obsahově stejné dokumenty mnoha různých forem. Pro představu, jak takový systém může fungovat, uvedu velmi jednoduchý příklad: Předpokládejme, že máme manuál k letadlu o několika tisících stran. Když byl sestavován originál tohoto dokumentu, každý odstavec byl mimo jiné označen z hlediska přístupových práv -- je-li volně přístupný, tajný nebo přísně tajný. Kapitoly dokumentu byly označeny vzhledem k jejich významu pro techniky, řízení provozu, piloty a personál. Všechny tyto informace mohou být potom v publikačním systému SGML identifikovány a použity k vytváření selektivních publikací na přání. S využitím značek vyznačujících strukturu dokumentu lze z originálu vytvářet upravené verze. Je možné např. vytvořit manuál pro piloty s přístupem k některým nezveřejňovaným informacím nebo manuál pro personál řídící letový provoz. Protože SGML uchovává informace o struktuře dokumentu, nikoliv jeho formátování, může mít manuál různou podobu podle způsobu jeho použití. Lze jej vytisknout nebo stejně snadno prezentovat z CD-ROM na obrazovce počítače. Odkazy z tištěné podoby (např. "viz obrázek na straně xy") se pouze změní na hypertextové vazby.
SGML jako metajazyk Z předchzího textu by se mohlo zdát, že SGML je nějakou definicí značek, jež lze v textu použít. To ale není pravda -- SGML je metajazyk, který umožňuje definovat, jaké značky (tzv. elementy) lze v textu použít a jak spolu tyto souvisí (např. uvnitř elementu vyznačujícího kapitolu se mohou vyskytovat elementy vyznačující odstavce). Definice přípustných elementů a vztahů mezi nimi se označuje jako Document Type Definition (DTD). DTD bývá nejčastěji uložena v separátním textovém souboru; později se dostaneme k přesnější specifikaci. Samotný dokument se skládá z identifikace DTD, pomocí něhož je zapsán (tzv. prolog), a vlastního textu doplněného o elementy definované v DTD. DTD nedefinuje konkrétní význam jednotlivých elementů. To obstarávají další programy, které mohou dokument vytvořený na základě konkrétního DTD převést např. do PostScriptu, pokud chceme dokument tisknout, či do nějakého hypertextového systému, jestliže chceme dokument prohlížet interaktivně. Jedinou skupinou programů nezávislou na určitém konkrétním DTD jsou tzv. parsery. Jejich funkcí je provádět kontrolu SGML dokumentů -- tj. zjišťovat, zda použití elementů v dokumentu odpovídá jejich definici v DTD.
Ukázkový SGML dokument Abychom si vše přiblížili, ukážeme si použití SGML na případě, kdy budeme chtít v elektronické podobě uchovávat sbírku básní. Celou problematiku značně zjednodušíme -- budeme předpokládat, že sbírka se skládá z několika básní, báseň může mít název, vždy má několik veršů a každý verš se skládá z několika řádek. Příslušný dokument, ve kterém bychom měli uloženou sbírku, by mohl vypadat např. takto (ukázka pochází z básnické sbírky Rybí oko od Petra Cincibucha):
<poem><title>Cikáda</title>
<poem>
</book>
Vidíme, že celá sbírka je označena elementem book. Aby byl element rozeznán od ostatního textu, je třeba ho ohraničit nějakými speciálními znaky -- v našem případě " < " a " > ". Konkrétním výskytům elementů v textu se říká tagy. Aby byly rozeznány tagy uvozující začátek a konec označené oblasti, je před název ukončovacího tagu zapisováno lomítko "/".
Sbírka se pak dělí na jednotlivé básně, které jsou označeny tagy Vidíme, že zápis je logický a dobře strukturovaný. Definice příslušného DTD vypadá následovně:
Za klíčovým slovem !ELEMENT vždy následuje definice nového elementu. Za jménem elementu najdeme dva znaky, které mohou být buď "-", nebo "O". První znak odpovídá začátečnímu tagu a druhý ukončovacímu tagu. Pokud je znakem "-", musí být příslušný tag uveden; pokud "O", je tag pouze volitelný a není nutné uvádět ho v případech, kdy jej lze odvodit z kontextu ostatních tagů. Poté již následuje definice elementů, které mohou být v definovaném elementu obsaženy (včetně počtu výskytů: "?" -- žádný nebo jeden výskyt, "+" -- jeden a více výskytů a "*" -- žádný, jeden nebo více výskytů). Jelikož náš DTD umožňuje některé tagy vynechat, lze celou naši sbírku zkráceně zapsat takto:
<poem>
... následují další básně ...
</book>
Korektnost zápisu lze ověřit parserem, kterému bychom na vstup zadali naši sbírku básní a náš DTD. V případě volby speciálního filtru bychom dokázali dostat dokument do podoby vhodné pro tisk -- tag Náš ukázkový dokument samozřejmě nepostihl zdaleka všechny možnosti, SGML nabízí mnohem víc. Každý element může obsahovat několik atributů, jež lze použít ke speciálním účelům -- například u každé básně je možné do atributu uložit jméno autora či datum napsání básně apod.
Hlavní předností použití SGML oproti klasickým prostředkům na zpracování textu Asi největší výhodou systémů založených na SGML je jejich otevřenost. Vše pracuje v rámci standardu; ten je již definitivní, a tak nehrozí znehodnocení investic v důsledku nutnosti přechodu na nové verze, jak se často stává u komerčních textových procesorů. Další velkou předností SGML je to, že při tvorbě dokumentů nás zajímá jejich obsah a nikoliv konkrétní forma. Tu lze určit až v závislosti na požadovaném výstupu. Můžeme použít filtr, jenž ze SGML vytvoří postScriptový soubor nebo zdrojový text pro typografický systém TeX; jiný filtr dokument přemění např. na hypertextovou příručku. Takovým způsobem lze v zásadě realizovat převod do jakékoliv smysluplné formy. Pokud je DTD dobře navrženo, dojde rovněž k podstatnému usnadnění automatické syntézy řeči (tagy vyznačují místa, kde se obvykle i v řeči dělají pauzy), což je velkým pozitivem při zpřístupňování informací nevidomým občanům. Skutečnost, že celý text je rozčleněn a označen různými tagy, přináší i výhody při prohlížení dokumentů. Jednak lze, podobně jako u strukturovaných databází, prohledávat pouze určité položky (např. název a autora dokumentu) a navíc je možné informaci o struktuře využít při práci s celým textem -- slova obsažená v nadpisech a zvýrazněná odlišným typem písma mívají obvykle větší význam než zbytek dokumentu. Díky flexibilitě SGML není problémem vkládat do textu i další méně obvyklé prvky, jimiž mohou být tabulky, matematické vzorce, notové záznamy atd. V současné době je asi nejznámější aplikací SGML jazyk HTML (Hypertext Markup Language), který je používán pro tvorbu hypertextových dokumentů v rámci internetové služby World Wide Web. Většina velkých softwarových firem (např. IBM, Novell) má své systémy na správu dokumentace založeny rovněž na SGML. Dokonce i firma Microsoft oznámila, že hodlá opustit formát RTF a používat ve windowsové nápovědě HTML.
| <<< | CW o Internetu | COMPUTERWORLD | IDG CZ homepage | |