Editory

Pokud budeme chtít psát dokumenty v XML, budeme k tomu dozajista potřebovat nějaký vhodný editor. Jelikož je XML dokument obyčejný textový soubor doplněný o tagy, můžeme k jeho vytváření a následné editaci použít libovolný textový editor. Přijdeme tak však o spoustu užitečných funkcí – lepší editor může automaticky kontrolovat strukturu dokumentu. Nedovolí nám pak vytvořit dokument, který není správně strukturovaný či neodpovídá požadovanému DTD nebo schématu. Chytrý editor nám také může napovídat, které elementy a atributy můžeme v daném místě dokumentu použít.

Luxusní editor může být přímo integrován s nějakým formátovacím enginem, který dokáže dokument zformátovat pro tisk nebo převést do dalších formátů. Pro někoho může být důležitá i integrace editoru se systémem pro správu dokumentů. Při větším objemu dokumentů je ukládání do souborů poměrně nepohodlné. Lepší je dokumenty ukládat do nějakého systému pro jejich správu, který bývá postaven nad databází a často v sobě zahrnuje i funkce pro řízení oběhu dokumentů apod.

Dnešní XML editory můžeme rozdělit do několika skupin, podle toho, jak moc je uživatel vystaven styku se samotným jazykem XML. Nejjednodušší editory zobrazují přímo zdrojový kód XML s tím, že mohou tagy zvýraznit jinou barvou pro odlišení od textu. Některé editory pouze zvýrazní syntaxi, jiné v tomto režimu automaticky kontrolují strukturu dokumentu a nabízejí uživateli elementy a atributy, které může na tom kterém místě dokumentu použít. Pokročilejší editory již pracují v částečném WYSIWYG režimu, kdy je text vidět zformátovaný pomocí stylu, ale jsou v něm vidět jednotlivé tagy. Poslední stupeň již před uživatelem XML úplně schová. Vkládání tagů je pak plně v režii editoru, který může podle nějakých pravidel mapovat jednotlivé vizuální styly na XML elementy.

Výše popsané editory se hodí spíše na editování textových dokumentů. Pokud však do XML ukládáme spíše databázová nebo hodně strukturovaná data, může nám více vyhovovat editor, který dokument zobrazuje jako hierarchickou stromovou strukturu. Pro speciální aplikace se může vyplatit vytvoření jednoúčelového editoru, který umožní velice efektivně editovat data vyhovující jednomu určitému DTD. Praktickým příkladem tohoto přístupu je například editor rovnic zabudovaný v prohlížeči Amaya, který umožňuje pohodlně vizuálně editovat matematické výrazy zapsané v MathML (obr. 1).

Obrázek 1. Experimentální prohlížeč Amaya obsahuje editor rovnic, který pracuje s formátem MathML

WYSIWYG editory

Pro masové použití XML se nejvíce hodí editory, které pracují ve WYSIWYG režimu a hodně tak připomínají klasický textový editor jako je třeba Microsoft Word. Důkazem správnosti této cesty budiž třeba HTML editor FrontPage, který si mnoho uživatelů oblíbilo právě proto, že v něm nemusejí vůbec přijít do styku s HTML kódem. FrontPage základní formátovací příkazy automaticky převádí do odpovídajících struktur jazyka HTML. Podobně je tomu i u vyspělých XML editorů. V následujících odstavcích se podíváme na funkce, které nabízejí editory spadající do této kategorie.

Silné postavení na poli XML editorů mají firmy SoftQuad a ArborText díky tomu, že již pěknou řádku let vyrábějí editory podporující SGML. Ty stačilo drobně upravit, a rázem jsou na světě dva špičkové XML editory – XMetaL a Epic. Překvapivě umí XML editovat i WordPerfect 9 (součást WordPerfect Office 2000), podpora XML byla přidána do klasického textového editoru.

Ačkoliv každý ze tří editorů má svou silnou stránku někde jinde, jsou si v mnohém podobné. Velkou výhodou všech editorů je, že podporují libovolné DTD. Pomocí zabudovaného makro jazyka lze navíc editory nastavit tak, že některé funkce a menu se objeví pouze při editaci dokumentu vyhovujícímu určitému DTD. Pokud se do dokumentu vkládají složitější data, můžeme si na to v zabudovaném jazyce vytvořit speciální vstupní dialogové okno.

Obrázek 2. Většina WYSIWYG editorů nabízí tři druhy pohledů na dokument – hierarchický strom, úplný WYSIWYG režim...

Obrázek 3. ...a hybridní WYSIWYG, ve kterém jsou vidět i jednotlivé tagy

Samotná editace dokumentů probíhá ve WYSIWYG režimu. Kromě toho nabízejí všechny editory i hierarchický pohled na strukturu dokumentu. Dokument můžeme editovat v libovolném z těchto pohledů. Editory nabízejí i hybridní WYSIWYG režim, ve kterém jsou v textu dokumentu viditelné i jednotlivé tagy. Editory samozřejmě hlídají strukturu dokumentu a ke vložení nám nabízejí jen platné elementy. Editace atributů je také velice pohodlná a probíhá pomocí dialogových oken.

Aby mohly editory pracovat ve WYSIWYG režimu, musí vědět, jak se mají jednotlivé elementy zobrazovat. Pro tyto účely používá každý z editorů jinou technologii.

V Epicu se pro definici vzhledu dokumentu používá stylový jazyk FOSI, který má svá zlatá léta již za sebou, ale většinu požadavků s přehledem uspokojí. Epic má v sobě navíc zabudovaný i výkonný formátovací engine. Vytvořené dokumenty lze tedy přímo tisknout nebo z nich můžeme vygenerovat PostScript. Pokud máme nainstalován Adobe Acrobat, můžeme z dokumentu přímo generovat i PDF.

V XMetaLu můžeme vzhled dokumentu v editoru definovat pomocí kaskádových stylů (CSS). To je velice příjemné, protože stejný styl lze použít i v prohlížečích. CSS však nemají dostatečné prostředky pro definici vzhledu stránky pro potřeby DTP, a tak je XMetaL pouze šikovný editor. Pro formátování dokumentu musíme použít samostatný program. Kaskádové styly nemusíme vytvářet ručně, XMetaL pro ně má zabudovaný poměrně komfortní editor. Součástí editoru je i zabudovaný prohlížeč, který využívá komponentu Internet Exploreru, takže je dokument vidět úplně stejně jako v prohlížeči. Verze XMetaLu 1.2 má v sobě již zabudovaný i XSL procesor, takže je možné provádět náhled dokumentu zformátovaného pomocí XSL.

WordPerfect nepoužívá žádný standardní stylový jazyk. Ve speciálním programu se musí každé DTD, které chceme používat, zkompilovat do šablony. Do ní je možné přidat ještě definice vzhledu jednotlivých elementů. K dispozici máme bohaté formátovací možnosti WordPerfectu, takže lze dosáhnout kvalitní typografický výstup.

Pro našince je rovněž důležité, v jakých kódováních umí editory dokumenty ukládat. V tomto ohledu XMetaL zklamal, protože podporuje pouze kódování ISO 8859-1. V něm chybějí některé české znaky s diakritikou, a proto současnou verzi XMetaLu pro editaci dokumentů v češtině použít nemůžeme. Příští verze by tento nedostatek měla odstranit. Epic je na tom s podporou různých kódování nejlépe. Pro češtinu můžeme použít UTF-8, ISO 8859-2 a windows-1250. Verze Epicu, kterou jsem měl k dispozici, bohužel neuměla rozpoznat kódování uvedené v XML deklaraci, budoucí verze by tuto chybu měly mít odstraněnu. WordPerfect podporuje pouze kódování UTF-8 a UTF-16.

Emacs – hodně muziky za málo peněz

Někomu nemusí editace ve WYSIWYG režimu vyhovovat a chce mít zdrojový kód dokumentu naprosto pod svou kontrolou. Na druhou stranu není proč se vzdávat takových vymožeností, jako je kontrola dokumentu oproti DTD a pohodlné vkládání jen těch elementů, které lze v daném místě dokumentu použít. Editorem, který toto vše nabídne a navíc zdarma je Emacs.

Emacs je kultovním textovým editorem. Je to jeden z prvních programů, který byl šířen pod GNU licencí – tedy zadarmo včetně zdrojových textů. To umožnilo široké obci vývojářů přizpůsobit Emacs pro další operační systémy – dnes je Emacs dostupný na většině používaných platforem. Původně byl Emacs vyvinut pro Unix, kde může běžet v textové konzoli i jako X-Window aplikace. Dnes jsou k dispozici i verze pro Windows a MS-DOS.

Obrázek 4. Emacs+PSGML zvládne editaci dokumentů vyhovujících libovolnému DTD. V jednom okně edituji článek v DTD DocBook, v druhém okně právě Emacs funguje jako editor WML stránek pro mobilní zařízení

Asi největší zbraní Emacsu je zabudovaný interpret jazyka Lisp, pomocí kterého lze upravovat činnost editoru a psát makra. V tomto jazyce je pro Emacs napsáno nepřeberné množství modulů – emailový klient, FTP klient, čtečka newsů, webový prohlížeč, vývojová prostředí pro mnoho programovacích jazyků a mnoho dalšího. Pro nás je však důležité, že existuje balík PSGML, který z Emacsu udělá plnohodnotný SGML/XML editor.

Vzhledem k tomu, že dnešní verze GNU Emacsu zatím není WYSIWYG editor, probíhá editace XML dokumentů v jejich zdrojovém tvaru. PSGML režim však nabízí mnoho nástrojů, jež nám editaci usnadní. Především jsou dokumenty zobrazovány se zvýrazněnou syntaxí – značkování má jinou barvu než samotný text dokumentu, což usnadňuje orientaci.

PSGML samozřejmě umí pracovat s DTD, a díky tomu nám během psaní umí nabídnout elementy, které může v daném místě použít. U každého elementu lze snadno editovat i atributy. PSGML má zkrátka pořád přehled o tom, kde v dokumentu právě jsme. Lze se proto snadno pohybovat mezi elementy a dokonce si můžeme nechat obsah zvolených elementů schovat – při editování dlouhých dokumentů se pak v textu snáze orientujeme. PSGML umí automaticky zdrojový kód přehledně formátovat. Z DTD si pamatuje i všechny definované entity, takže pokud si na nějakou nemůžeme vzpomenout, stačí si ji vybrat v menu. PSGML si poradí i s editací dokumentu, který je uložen ve více souborech.

PSGML má vestavěn jednoduchý parser, který obvykle na kontrolu správnosti dokumentu stačí. Přímo z editoru lze velice pohodlně volat další aplikace, jako externí parsery a různé formátovací programy.

Emacs ve spojení s PSGML je opravdu výborný nástroj. Asi po něm sáhnete v případě, kdy nebudete mít prostředky na nákup dříve zmíněných poměrně drahých WYSIWYG editorů. Z počátku vám možná nebude Emacs příliš vyhovovat, protože jeho ovládání je trošku odlišné než to, na které jste zvyklí z dnešních aplikací. Emacs přeci jen nějaký ten pátek pamatuje, a i když se neustále vyvíjí, ovládání se kvůli zpětné kompatibilitě nemění.

Editory pro „databázové dokumenty“

Všechny dosud popisované editory byly komfortní a hodily se na editaci dokumentů reprezentujících rozsáhlé texty. Pokud však někdy potřebujeme rychle vytvořit jednoduchý XML dokument, který slouží spíše pro ukládání strukturovaných dat než dlouhých textů, můžeme použít některý z editorů, který dokument zobrazuje jako hierarchickou strukturu elementů a atributů, jejichž hodnoty můžeme editovat. Zobrazení dokumentu je pak velice podobné Průzkumníku z Windows. Tuto funkčnost nabízí např. Microsoft XML Notepad a některé další jednoduché editory, které jsou napsané většinou v Javě.

Obrázek 5. XML Notepad se hodí jen na editaci velice jednoduchých dokumentů

XML Notepad je na stránkách Microsoftu k dispozici zdarma. Editor umí provádět validaci dokumentu oproti DTD a schématům, ale pouze při načítání dokumentu. Během editace můžeme vkládat libovolné elementy a atributy, editor pouze hlídá, aby byl vytvořený dokument správně strukturovaný. O jeho validitu se již nestará.

Microsoft Office 2000 a XML

Mnoho uživatelů se ptá, zda a jak Office 2000 podporuje XML. Microsoftí tvrdí, že jeho Office 2000 XML podporuje. Problém je ve vágnosti pojmu „podporuje“. Office 2000 (Word 2000) nepodporuje XML v tom smyslu, že by uměl editovat dokumenty vyhovující libovolnému DTD. Word 2000 tedy v žádném případě není XML editor, který bychom mohli srovnávat s XMetaLem, Epicem nebo WordPerfectem.

Na druhou stranu to neznamená, že by Microsoft lhal. Office 2000 skutečně formát XML používá, ale pouze pro své potřeby. Office 2000 umožňuje ukládání dokumentů ve formátu HTML místo klasických formátů DOC a XLS. Narozdíl od předchozích verzí se při ukládání do HTML neztrácejí žádné informace. Formát HTML je tak funkčně ekvivalentní s nativními formáty. Aby šlo do formátu HTML uložit všechny přídavné informace, používá se místo HTML ve skutečnosti XML a jmenné prostory. Jmenné prostory umožňují v jednom dokumentu používat několik různých sad značek. Jako implicitní jmenný prostor je zvoleno HTML 4.0. Ostatní jmenné prostory obsahují speciální elementy – pro vektorovou grafiku, pro uložení informací o dokumentu, pro uložení speciálních formátovacích vlastností apod. Starší prohlížeče přídavné jmenné prostory ignorují a vidí pouze HTML kód, který zobrazí. Novější verze Internet Exploreru a programy z Office 2000 pak rozumí všem elementům.

O tom, jak bude vypadat podpora XML v dalších verzích Office, zatím představitelé Microsoftu mlčí. A mlží. Tvrdí, že Office bude postupně podporovat XML ve třech úrovních. Office 2000 údajně obsahuje podporu první úrovně. Nezbývá než čekat a doufat, že další úroveň bude zahrnovat úplnou podporu XML a že se tato úroveň objeví hned v příští verzi Office.

Pomocné editory

Pokud v našich aplikacích používáme XML, obvykle používáme i další technologie úzce svázané s XML – především různé stylové jazyky a jazyky pro definice schématu nebo DTD dokumentu. Tuto práci nám samozřejmě mohou ulehčit specializované programy.

Styl můžeme samozřejmě ručně zapisovat přímo v odpovídajícím stylovém jazyku. Pro složité dokumenty to však může být poměrně nevděčná a zdlouhavá práce. Existují editory, které nám umožní vytvoření stylu v pohodlném vizuálním prostředí bez nutnosti znát syntaktické detaily používaného stylového jazyka. Často jsou tyto editory součástí XML editorů a nejsou k dispozici jako samostatné programy.

Vytváření DTD nebo schémat si lze rovněž usnadnit pomocí různých podpůrných programů. Složitější DTD nebo schémata jsou poměrně velké a složitě strukturované textové dokumenty. Vizuální editory dokáží schéma dokumentu znázornit v grafické podobě a takto s ním i pracovat. Můžeme se soustředit na strukturu dokumentů a nemusíme myslet na syntaktické detaily použitého jazyka pro zápis schémat. Příkladem editoru schémat je XML Authority, který umí vizuálně editovat schémata. XML Authority rozumí několika nejpoužívanějším schémovým jazykům a DTD, takže je mezi sebou můžeme i převádět.

© Jiří Kosek 2000-2001