Kapitola 10. Podpora DocBooku v editorech

Obsah

10.1. XMLmind XML Editor
10.2. oXygen
10.3. Emacs+PSGML
10.4. Emacs+nXml
10.5. jEdit
10.6. Epic
10.6.1. Instalace poslední verze DocBooku do Epicu
10.6.2. Epic a české znaky
10.7. XMetaL 1.x a 2.0
10.7.1. Příprava DTD
10.7.2. Přizpůsobení editoru pro dané DTD
10.7.3. Psání českých znaků v XMetaLu
10.8. XMetaL 2.1 a 3.0
10.9. XMetaL 4.x

Pro efektivní vytváření dokumentů v DocBooku samozřejmě potřebujeme editor, který nám maximálně usnadní práci. Nyní se podíváme na XML editory, které se ve spojení s DocBookem nejčastěji používají. Ukážeme si, jak je připravit pro editování dokumentů v DocBooku. Mnoho editorů se přitom dnes dodává již se zabudovanou podporou DocBooku – obsahují DTD i styly pro následnou konverzi DocBooku do výstupních formátů.

10.1. XMLmind XML Editor

XMLmind XML Editor je WYSIWYG editor XML, který je pro osobní použití zdarma. Uživatelské rozhraní není sice tak příjemné jako u editorů Epic a XMetaL, ale jeho nedostatky v mnoha případech vyváží cena (je zdarma i pro komerční využití). Navíc se dodává s předkonfigurovanou podporou DocBooku a zvládá editování dokumentů rozdělených pomocí entit nebo XInclude do několika souborů.

Placená verze umožňuje i snadné spouštění konverze DocBooku do různých výstupních formátů.

10.2. oXygen

oXygen je v dnešní době asi jeden z nejlepších editorů XML na úrovni zdrojového kódu. Ihned po instalaci obsahuje podporu DocBooku – DTD i styly.

10.3. Emacs+PSGML

Nastavení Emacs a PSGML je podrobně popsáno v několika publikacích, proto se jím nebudeme detailně zabývat [SGML-NT], [GNU-WWW].

10.4. Emacs+nXml

http://www.thaiopensource.com/nxml-mode/

10.5. jEdit

jEdit je editor napsaný v Javě a nabízí pomocí plug-inů poměrně komfortní prostředí pro editování dokumentů XML, včetně doplňování elementů a atributů na základě DTD. Pro pohodlnou práci s XML je užitečné nastavení, kdy kromě dokumentu vidíme vlevo jeho stromovou strukturu, vpravo se nám nabízejí podle DTD elementy ke vložení a v dolní části vidíme seznam chyb. Toto rozložení můžeme nastavit pomocí příkazu UtilitiesGlobal Options.... Nyní vybereme jEditDocking. Pro okno Structure Browser nastavíme dokovací pozici left, pro XML Insert right a pro Error List bottom.

Dokument si můžeme nechat kdykoliv zvalidovat nebo zkontrolovat alespoň well-formedness. Stačí jej uložit, při ukládání se automaticky spustí parser a v okně Error List si můžeme prohlédnout jednotlivé chyby.

Pro editování dokumentů v DocBooku je vhodné přidat si do jEditu katalogový soubor, který zamezí načítání DTD ze sítě. Zvolíme opět UtilitiesGlobal Options... a nyní PluginsXMLCatalogs. A přidáme katalogový soubor pro DocBook – v našem případě c:\docbook\dtd\docbook.cat.

Pro automatické doplnění   za neslabičné předložky lze použít plug-in tildify.

Obrázek 10.1. jEdit při editování DocBookového dokumentu

jEdit při editování DocBookového dokumentu

10.6. Epic

Epic je dodáván již s několika předinstalovanými DTD. Nejlépe nakonfigurované je DTD, které vychází z DocBooku 4 a přidává do něj podporu pro vkládání matematických vzorců. Editor je pro toto DTD velice dobře nakonfigurován a to se netýká jen stylů. Podle kontextu v dokumentu se například mění význam klávesy Enter – v odstavci její stisk způsobí vytvoření nového odstavce, v nadpisu pak vložení prvního odstavce za nadpis, ve výpisu programu přechod na nový řádek. V liště programu přibudou tlačítka pro snadnu změnu formátování či pro vytváření seznamů. Podobné chování lze samozřejmě vytvořit pro libovolné DTD, ale přece jen to jen to určitý čas zabere.

Pokud si k Epicu dokoupíte publikační moduly, umí editor sám docbookové dokumenty formátovat pro tisk, převádět do HTML, HTML Helpu a dalších formátů. Standardně je podporována profilace dokumentu pro různé skupiny čtenářů – v dokumentu stačí pomocí příznaků označit vybrané elementy, při tisku si pak můžeme vybrat profil, pro který se bude výstup generovat.

S Epicem je standardně dodávána i zcela běžná SGML verze DocBooku 4.0. My si v následujícím textu popíšeme, jak do Epicu přidat podporu standardní XML verze DocBooku.

10.6.1. Instalace poslední verze DocBooku do Epicu

Pokud pro zpracování DocBooku budeme používat i jiné aplikace než Epic, patrně nám nebude vyhovovat použití upravené verze DocBooku. Nezbude nám nic jiného, než do Epicu přidat standardní XML verzi DocBooku.

Požadavky na instalaci

Pro úspěšnou instalaci potřebujeme Epic Editor a Epic Architect a samozřejmě DTD pro DocBook. Následující postup předpokládá, že Epic je nainstalován v adresáři f:\program files\epic a že DTD pro DocBook máme v adresáři e:\sgml\dtd\dbx412. Pokud máte soubory v jiných adresářích, musíte v postupu odpovídajícím způsobem zaměnit adresáře.

Postup instalace

Celá instalace se skládá z několika kroků.

  1. Vytvoření adresářů pro naše vlastní DTD

    Uživatelem definovaná DTD je dobré nahrát do jiného adresáře, než do toho, kde je Epic nainstalován. Ušetříme si tak problémy při případném reinstalaci nebo upgradu programu.

    Na libovolném místě na disku si vytvoříme adresář (např. f:\epic) a v něm vytvoříme čtyři podadresáře se jmény doctypes, entities, graphics a lib.

  2. Nastavení cest v Epic Editoru a Epic Architectu

    Spustíme Epic Editor nebo Epic Architect a z menu vybereme příkaz OptionsPreferences. Přepneme se na záložku File a do polí Catalog Path, Graphics Path a Entities Path doplníme cestu k námi vytvořeným adresářům (viz obrázek 10.2 – „Nastavení cest v Epicu).

    Obrázek 10.2. Nastavení cest v Epicu

    Nastavení cest v Epicu

    Změny uložíme stiskem tlačítka Save and Update Current Settings.

  3. Zkompilování DTD DocBook do interního formátu Epicu

    DTD bychom měli zkompilovat do pracovního adresáře, odkud se pak bude instalovat. Epic Architect si pracovní adresář načítá z proměnné prostředí HOME. V našem ukázkovém postupu jsem proměnnou nastavil na hodnotu e:\home.

    Spustíme Epic Architect. V menu Compile aktivujeme volbu XML Application. Vybereme příkaz FileImport. Do dialogového okna vyplníme údaje jako na obrázku 10.3 – „Import DTD pro DocBook“. Stačí vyplnit námi zvolený název, cestu k DTD a cestu ke stylům pro upravený DocBook od ArborTextu – tím vyřešíme problém se zobrazováním dokumentů.

    Obrázek 10.3. Import DTD pro DocBook

    Import DTD pro DocBook

    Tlačítkem OK pak spustíme import.

  4. Průběh importu

    Na začátku importu se kompilátor ptá, jaký veřejný identifikátor má používat pro dané DTD (viz obrázek 10.4 – „Nastavení veřejného identifikátoru“).

    Obrázek 10.4. Nastavení veřejného identifikátoru

    Nastavení veřejného identifikátoru

    Během importu Epic Architect nenajde entitu, která obsahuje fragment DTD pro tvorbu tabulek. Cestu k tomuto souboru musíme zadat ručně (viz obrázek 10.5 – „Ruční zadání cesty k entitě, kterou nelze nalézt“).

    Obrázek 10.5. Ruční zadání cesty k entitě, kterou nelze nalézt

    Ruční zadání cesty k entitě, kterou nelze nalézt

    Nakonec se nás program zeptá na kořenový element. Většinou budeme v DocBooku asi vytvářet knihy, vybereme proto book (viz obrázek 10.6 – „Volba kořenového elementu“).

    Obrázek 10.6. Volba kořenového elementu

    Volba kořenového elementu

    Poznámka

    Někdy instalace skončí neúspěšně s chybovým hlášením o špatném DTD.

    Epic Architect se v tomto případě chybně přepnul do SGML režimu. Stačí v menu znovu vybrat XML režim (CompileXML Application).

  5. Instalace nového DTD do editoru

    Po kompilaci ještě musíme DTD nainstalovat. Vybereme příkaz FileInstall. Zvolíme místo, kam se má DTD instalovat (f:\epic\doctypes) – obrázek 10.7 – „Výběr místa, kam se má DTD nainstalovat“.

    Obrázek 10.7. Výběr místa, kam se má DTD nainstalovat

    Výběr místa, kam se má DTD nainstalovat

    Dále si musíme zvolit jméno, pod kterým nám bude Epic Editor nabízet naše DTD při vytváření nových dokumentů (viz obrázek 10.8 – „Výběr názvu pro naše DTD“). Pokud chceme vytvořit šablonu pro nové dokumenty, musíme zaškrtnout volbu Add.

    Obrázek 10.8. Výběr názvu pro naše DTD

    Výběr názvu pro naše DTD

    Na výzvu pro zadání souborů se šablonou, zadáme jako jméno souboru template.xml (obrázek 10.9 – „Výběr souborů se šablonou“).

    Obrázek 10.9. Výběr souborů se šablonou

    Výběr souborů se šablonou

  6. Upravení šablony pro nové dokumenty

    V šabloně pro nové dokumenty, která se nám přidá do Epicu, je špatně doplněný (nebo chybí) systémový identifikátor. Pro lepší přenositelnost dokumentů je vhodné nahradit ho standardní hodnotou. Otevřeme soubor e:\epic\doctypes\docbookx\template.xml a opravíme ho na:

    <?xml version="1.0" encoding="utf-8"?>
    <!DOCTYPE book PUBLIC "-//OASIS//DTD DocBook XML V4.2//EN" "http://www.oasis-open.org/docbook/xml/4.0/docbookx.dtd">
    <book><?Pub Caret1?></book>

    V případě potřeby můžeme změnit použité kódování nebo doplnit poněkud větší kostru dokumentu. Instrukce pro zpracování určuje místo, kam se umístí kurzor po otevření nového dokumentu.

10.6.2. Epic a české znaky

Epic se zpracováním českých znaků nemá žádné problémy. Standardně pracuje v kódování UTF-8, ale zvládá i ISO-8859-2. Pokud chceme, aby Epic používal jiné kódování než UTF-8, stačí ve stávajících dokumentech zaměnit informaci o kódování v XML deklaraci, pro nové dokumenty se kódování přebírá ze šablony (více viz předchozí sekce).

Standardně se české znaky ukládají jako odkazy na odpovídající entity (&eacute; apod.). Pokud chceme, aby se znaky ukládaly přímo, stačí aktivovat volbu OptionsPreferencesFileWrite 8-Bit Characters.

10.7. XMetaL 1.x a 2.0

10.7.1. Příprava DTD

XMetaL 1.x a 2.0 používá vlastní katalogové soubory, proto je dobré pro bezproblémovou práci přidat položky pro DocBook do souboru extid.map, který je v adresáři s instalací XMetaLu. Do souboru přidáme řádky:

#
# DocBook
#
"-//OASIS//DTD DocBook XML V4.3//EN" ! "c:\docbook\dtd\docbookx.dtd"
! "http://www.oasis-open.org/docbook/xml/4.3/docbookx.dtd" "c:\docbook\dtd\docbookx.dtd"

Při prvním otevření dokumentu, který používá toto DTD si ho XMetaL zkompiluje. Při první kompilaci mu občas musíme pomoci nalézt nějaké entity, pak už však vše pracuje tak, jak má.

10.7.2. Přizpůsobení editoru pro dané DTD

Pro pohodlnou práci v editoru musíme mít odpovídající CSS styl definující zobrazení dokumentu a je dobré upravit pravidla pro DocBook – editor pak rozpozná, co je obrázek, co seznam apod.

Kromě toho lze editor plně přizpůsobit pomocí zabudovaného skriptovacího jazyka (JScript, VBScript a další).

10.7.3. Psání českých znaků v XMetaLu

XMetaL 1.x a 2.0 bohužel nepodporuje Unicode, takže v něm nelze rovnou psát dokumenty v češtině. Nicméně lze editor „znásilnit“ tak, aby v něm šlo psát dokumenty v kódování windows-1250.

Nejprve musíme upravit hodnoty několika parametrů v souboru xmetal.ini v adresáři s XMetaLem:

export_convert_to_ISOlat1 = false
export_convert_to_ISOnum = false
export_convert_remainder_to_char_ref = false
import_convert_ISOlat1 = false
import_convert_ISOnum = false
import_convert_char_ref = false

V kaskádovém stylu pak musíme nastavit font, který má ve svém názvu na konci CE.

10.8. XMetaL 2.1 a 3.0

Nová verze XMetaLu přináší mnohá vylepšení. Konečně jsou podporovány standardní katalogové soubory. Pro bezproblémové editování docbookových dokumentů stačí do souboru c:\Program Files\SoftQuad\XMetaL 2\Rules\catalog přidat řádku, která odkazuje na katalog pro DocBook DTD.

CATALOG "c:\docbook\dtd\docbook.cat"

Provozujete-li XMetaL 2.1 ve Windows 2000/NT je k dispozici podpora Unicode. Lze tak bez problémů psát české texty. Editor podporuje pouze kódování UTF-8 a UTF-16.

Chceme-li, aby editor lépe zobrazoval dokumenty a usnadňoval editaci, musíme mít k dispozici kaskádový styl a soubor s úpravami. Ukázka těchto souborů je dostupná na adrese http://cvs.sourceforge.net/cgi-bin/viewcvs.cgi/docbook/contrib/tools/xmetal/.

10.9. XMetaL 4.x

Postup úprav nejnovější verze XMetaLu je podobný jako u předchozích verzí, ale je potřeba mít k dispozici vývojové prostředí XMetaL Developer. Úpravy XMetaLu pro komfortní použití s DocBookem je možné získat na komerční bázi.

© Jiří Kosek 2007
Tento dokument je určen výhradně pro osobní potřebu seznámení se systémem DocBook. Jakékoliv jiné použití, včetně dalšího šíření, pořizování kopií apod. je výslovně zakázáno a bude považováno za porušení autorských práv.