Obsah
Nyní si na příkladě typických dokumentů ukážeme použití nejběžnějších docbookových elementů.
Základní členění knihy do kapitol jsme již probrali. Zajímavé
možnosti nabízí element bookinfo
,
do kterého lze zapsat mnoho metainformací o knize.
Příklad 4.1. Ukázka knihy a vložených metainformací – kniha.xml
<?xml version='1.0' encoding='utf-8'?> <!DOCTYPE book PUBLIC '-//OASIS//DTD DocBook XML V4.5//EN' 'http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd'> <book lang="cs"> <bookinfo> <title>První pokusná kniha</title> <subtitle>Uživatelská příručka</subtitle> <authorgroup> <author> <firstname>Jiří</firstname> <surname>Kosek</surname> <affiliation> <orgname>nezávislý publicista</orgname> <address><email>jirka@kosek.cz</email></address> </affiliation> </author> <author> <honorific>Ing</honorific> <firstname>Jan</firstname> <surname>Novák</surname> <affiliation> <orgname>Nějaká firma, a.s.</orgname> <address><street>Dlouhá 10</street> <city>Praha 1</city> <postcode>110 11</postcode></address> </affiliation> </author> </authorgroup> <publisher> <publishername>První vydavatelská</publishername> </publisher> <copyright> <year>2001</year> <holder>První vydavatelská</holder> </copyright> <releaseinfo>První veřejná verze příručky.</releaseinfo> </bookinfo> <preface> <title>Úvod</title> <para>Odstavec textu.</para> <para>...</para> </preface> <chapter> <title>První kapitola</title> <para>Text první kapitoly</para> <para>...</para> </chapter> <chapter> <title>Druhá kapitola</title> <para>Text druhé kapitoly</para> <para>...</para> </chapter> <appendix> <title>První příloha</title> <para>Text přílohy</para> <para>...</para> </appendix> <appendix> <title>Druhá příloha</title> <para>Text přílohy</para> <para>...</para> </appendix> </book>
Podobné metainformace můžeme přidávat i k jednotlivým kapitolám a dalším komponentám dokumentů.
Příklad 4.2. Ukázka kapitoly a vložených metainformací – kapitola.xml
<?xml version='1.0' encoding='utf-8'?> <!DOCTYPE book PUBLIC '-//OASIS//DTD DocBook XML V4.5//EN' 'http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd'> <book lang="cs"> <bookinfo> <title>První pokusná kniha</title> <subtitle>Uživatelská příručka</subtitle> <author> <firstname>Jiří</firstname> <surname>Kosek</surname> </author> <copyright> <year>2001</year> <holder>První vydavatelská</holder> </copyright> </bookinfo> <preface> <title>Úvod</title> <para>Odstavec textu.</para> <para>...</para> </preface> <chapter> <title>První kapitola</title> <para>Text první kapitoly</para> <para>...</para> </chapter> <chapter> <chapterinfo> <title>Druhá kapitola</title> <author> <honorific>Ing</honorific> <firstname>Jan</firstname> <surname>Novák</surname> <affiliation> <orgname>Nějaká firma, a.s.</orgname> <address><street>Dlouhá 10</street> <city>Praha 1</city> <postcode>110 11</postcode></address> </affiliation> </author> </chapterinfo> <title>Druhá kapitola</title> <para>Text druhé kapitoly</para> <para>...</para> </chapter> <appendix> <title>První příloha</title> <para>Text přílohy</para> <para>...</para> </appendix> <appendix> <title>Druhá příloha</title> <para>Text přílohy</para> <para>...</para> </appendix> </book>
Uvnitř článku můžeme používat v podstatě stejné elementy jako uvnitř kapitol. Navíc může být článek doplněn abstraktem a přílohami. Metainformace o článku mohou obsahovat i takové údaje jako ISSN, ISBN nebo třeba informace o konferenci, kde byl článek prezentován.
Příklad 4.3. Ukázka článku – clanek.xml
<?xml version='1.0' encoding='utf-8'?> <!DOCTYPE article PUBLIC '-//OASIS//DTD DocBook XML V4.5//EN' 'http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd'> <article lang="cs"> <articleinfo> <title>Lehký úvod do XML</title> <author> <firstname>Jiří</firstname> <surname>Kosek</surname> <affiliation> <orgname>Vysoká škola ekonomická v Praze</orgname> <address>E-mail: <email>jirka@kosek.cz</email> Web: <otheraddr><ulink url="http://www.kosek.cz">http://www.kosek.cz</ulink></otheraddr></address> </affiliation> </author> <confgroup> <confdates>15. až 18. února 2001</confdates> <conftitle>SLT 2001</conftitle> <confnum>2</confnum> </confgroup> </articleinfo> <abstract> <para>Příspěvek posluchače seznámí s jazykem XML, který přináší mnoho revolučních změn do oblasti elektronického publikování, výměny a sdílení dat a elektronického obchodu. Kromě základních principů XML se příspěvek zmíní i o souvislosti s dalšími navazujícími technologiemi (stylové jazyky, jazyky pro definici struktury dokumentu, dotazovací jazyky, jazyky pro tvorbu odkazů).</para> </abstract> <section> <title>Úvod</title> <para>Málokterá technologie se rozšířila tak rychle jako XML. Před třemi lety o ní skoro nikdo nic nevěděl, a dnes se přitom používá v mnoha aplikacích. Budeme-li se držet přesné definice zjistíme, že XML (eXtensible Markup Language) je jednoduchý rozšiřitelný značkovací jazyk. Co si pod touto definicí představíme záleží zejména na naší fantazii. V následujícím příspěvku se proto pokusím vysvětlit, co je to XML a k čemu se dá použít.</para> <para>...</para> </section> </article>
Název kořenového elementu se musí shodovat s názvem
uvedeným v deklaraci typu dokumentu (<!DOCTYPE
).název
...>
DocBook byl původně určen jako formát pro výměnu manuálových stránek, a proto není překvapující, že v sobě obsahuje elementy pro popis manuálových stránek a jiných referenčních přehledů. Ukázka použití těchto elementů je na následujícím příkladě.
Příklad 4.4. Ukázka reference – reference.xml
<?xml version='1.0' encoding='utf-8'?> <!DOCTYPE reference PUBLIC '-//OASIS//DTD DocBook XML V4.5//EN' 'http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd'> <reference> <title>Funkce pro práci s e-mailem</title> <titleabbrev>Mail</titleabbrev> <partintro> <para>Následující funkce umožňují pohodlnou práci s e-mailem.</para> </partintro> <refentry id="function.mail"> <refnamediv> <refname>mail</refname> <refpurpose>Odeslání e-mailu</refpurpose> </refnamediv> <refsect1> <title>Popis</title> <funcsynopsis> <funcprototype> <funcdef>bool <function>mail</function></funcdef> <paramdef>string <parameter>to</parameter></paramdef> <paramdef>string <parameter>subject</parameter></paramdef> <paramdef>string <parameter>message</parameter></paramdef> <paramdef>string <parameter>additional_headers</parameter></paramdef> </funcprototype> </funcsynopsis> <para><function>Mail</function> automaticky odmailuje vzkaz specifikovaný v <parameter>message</parameter> příjemci specifikovanému v <parameter>to</parameter>. Přidáním čárky mezi adresami v <parameter>to</parameter> můžete specifikovat více příjemců.</para> </refsect1> </refentry> <refentry id="function.ezmlm-hash"> <refnamediv> <refname>ezmlm_hash</refname> <refpurpose>Počítá hash hodnotu potřebnou pro EZMLM</refpurpose> </refnamediv> <refsect1> <title>Popis</title> <funcsynopsis> <funcprototype> <funcdef>int <function>ezmlm_hash</function></funcdef> <paramdef>string <parameter>addr</parameter></paramdef> </funcprototype> </funcsynopsis> </refsect1> </refentry> </reference>
Často potřebujeme do dokumentu zařadit seznam často kladených
otázek a odpovědí. DocBook pro to nabízí několik speciálních elementů,
celé FAQ se vždy uzavírá do elementu qandaset
.
Příklad 4.5. Dokument s FAQ – faqukazka.xml
<?xml version='1.0' encoding='utf-8'?> <!DOCTYPE article PUBLIC '-//OASIS//DTD DocBook XML V4.5//EN' 'http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd'> <article lang="cs"> <articleinfo> <title>PHP FAQ</title> <author> <firstname>Jirka</firstname> <surname>Kosek</surname> <affiliation> <address><email>kosek@vse.cz</email></address> </affiliation> </author> </articleinfo> <para><emphasis>V následujících odstavcích se pokusím zodpovědět na nejčastější dotazy a problémy, se kterými se setkávají především začínající uživatelé systému PHP. Vycházím přitom ze skutečných dotazů, se kterými jsem setkal během výuky PHP a v různých diskusních skupinách.</emphasis></para> <qandaset> <qandaentry> <question> <para>Nainstaloval jsem si úspěšně PHP42, ale skriptům se nepředávají proměnné z formulářů.</para> </question> <answer> <para>Tento problém jste si způsobili sami snahou o co nejvýkonnější server. Distribuce PHP4 pro Windows obsahuje dva předpřipravené konfigurační soubory <filename>php.ini</filename> – <filename>php.ini-dist</filename> a <filename>php.ini-optimized</filename>. Většina uživatelů slepě sáhne po druhém konfiguračním souboru. Ten však vypíná mnoho funkcí interpretu PHP, aby maximálně urychlil jeho běh. Vypnuté je v něm i načtení parametrů z formulářů do proměnných. Pro jeho zapnutí stačí v <filename>php.ini</filename> správně nastavit hodnotu direktivy <literal>register_globals</literal>:</para> <programlisting>register_globals = On</programlisting> </answer> </qandaentry> <qandaentry> <question> <label>Záludná otázka</label> <para>Ani předchozí krok nepomohl, stále se mi některé proměnné z formulářů nepředávají.</para> </question> <answer> <label>Šalamounská odpověď</label> <para>Nejpravděpodobnější je varianta, že někdy v minulosti jste si v prohlížeči uložili cookie se stejným názvem jaký má proměnná. Při předávání proměnných skriptům mají cookies standardně vyšší prioritu než proměnné z formulářů. Řešením je buď přejmenovat proměnné, nebo si nepotřebné cookies z prohlížeče vymazat.</para> <para>Pokud vaše aplikace používá cookies, vyplatí se používat prohlížeč, který umožňuje snadné prohlížení a odstraňování cookies. Takovým prohlížečem je například Mozilla, která získala ocenění produkt roku. Zkuste v ní příkaz <menuchoice><guimenu>Tasks</guimenu><guisubmenu>Privacy and Security</guisubmenu> <guisubmenu>Cookie Manager</guisubmenu><guimenuitem>View Stored Cookies</guimenuitem></menuchoice>.</para> </answer> </qandaentry> </qandaset> </article>
Pokud máme delší seznam otázek a odpovědí, můžeme je pomocí
qandadiv
rozdělit na několik částí.
Jedna položka FAQ může obsahovat libovolný počet odpovědí
(i žádnou) na jednu otázku.
Pro vkládání obrázků je nejlepší používat elementy mediaobject
a inlinemediaobject
. Ve starších verzích
DocBooku se používal element graphics
a inlinegraphics
. Výhodou mediaobject
u je možnost vložení obrázku
do dokumentu v několika formátech – například ve vektorové
a bitmapové podobě. Při formátování se pak automaticky použije ten
obrázek, který nejvíce vyhovuje požadavkům generovaného výstupního
formátu.
Příklad 4.6. Dokument s obrázky – obrazky.xml
<?xml version='1.0' encoding='utf-8'?> <!DOCTYPE chapter PUBLIC '-//OASIS//DTD DocBook XML V4.5//EN' 'http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd'> <chapter lang="cs"> <title>Kapitola s obrázky</title> <mediaobject> <imageobject> <imagedata fileref="schema.eps" format="EPS" srccredit="Jiří Kosek, 2000"/> </imageobject> <imageobject> <imagedata fileref="schema.pdf"/> </imageobject> <imageobject> <imagedata fileref="schema.wmf" format="WMF"/> </imageobject> <imageobject> <imagedata fileref="schema.png" format="PNG"/> </imageobject> <textobject> <para>Schéma WAPu – delší text, pro který se generuje textový popis</para> </textobject> <textobject> <phrase>Schéma WAPu – krátké do atributu ALT</phrase> </textobject> </mediaobject> <figure> <title>Obrázek s popisem zvětšený na 200 % volného místa</title> <mediaobject> <imageobject> <imagedata fileref="schema.png" format="PNG" scale="200"/> </imageobject> </mediaobject> </figure> <figure> <title>Obrázek s popisem zmenšený na 25 % volného místa</title> <mediaobject> <imageobject> <imagedata fileref="schema.png" format="PNG" scale="25"/> </imageobject> </mediaobject> </figure> <figure> <title>Obrázek s popisem roztažený na šířku stránky</title> <mediaobject> <imageobject> <imagedata fileref="schema.png" format="PNG" width="100%"/> </imageobject> </mediaobject> </figure> <figure> <title>Obrázek s šířkou 4cm zarovnaný doprava</title> <mediaobject> <imageobject> <imagedata fileref="schema.png" format="PNG" width="4cm" align="right"/> </imageobject> </mediaobject> </figure> <figure> <title>Obrázek je podle potřeby proporcionálně zvětšen do plochy 2 × 5 cm</title> <mediaobject> <imageobject> <imagedata width="2cm" depth="5cm" fileref="schema.png" format="PNG"/> </imageobject> </mediaobject> </figure> <figure> <title>Obrázek zmenšený na 50 % skutečné velikosti</title> <mediaobject> <imageobject> <imagedata contentwidth="50%" fileref="schema.png" format="PNG"/> </imageobject> </mediaobject> </figure> <figure> <title>Obrázek zobrazený jako 2 × 10 cm</title> <mediaobject> <imageobject> <imagedata contentwidth="2cm" contentdepth="10cm" fileref="schema.png" format="PNG"/> </imageobject> </mediaobject> </figure> <figure> <title>Obrázek se umístí do prostoru 8 × 8 cm a zmenší se na 1/2 původní velikosti</title> <mediaobject> <imageobject> <imagedata width="8cm" depth="8cm" scale="50" fileref="schema.png" format="PNG"/> </imageobject> </mediaobject> </figure> <figure> <title>Obrázek zobrazený ve své originální velikosti</title> <mediaobject> <imageobject> <imagedata contentwidth="100%" contentdepth="100%" fileref="schema.png" format="PNG"/> </imageobject> </mediaobject> </figure> <figure> <title>Obrázek postaru</title> <graphic fileref="schema.png" format="PNG"/> </figure> <para>Zařazení obrázku do odstavce <inlinemediaobject> <imageobject> <imagedata fileref="sipka.png"/> </imageobject> <textobject> <phrase>⇒</phrase> </textobject> </inlinemediaobject> a text pokračuje dál.</para> </chapter>
Umístění a zpracování obrázků lze ovládat pomocí několika atributů. Jediný problém je v tom, že interpretování těchto atributů ve velké míře závisí na konkrétní aplikaci, která provádí formátování. Je dobré vyzkoušet, jaké formáty a jak podporují programy použité v našem systému.
V části věnované úpravám stylů se ještě podíváme na to, jak lze ovlivňovat automatický výběr jedné z variant obrázku, případně automaticky doplňovat příponu obrázku.
Tabulky se do docbookových dokumentů zapisují podobným způsobem jako v HTML. Tabulka se zapisuje po řádkách a jednotlivé řádky pak po buňkách zleva doprava. V současné době obsahuje DocBook pro zápis tabulek takzvaný CALS model, který je na poli SGML/XML de facto standard. DocBook 5.0 bude používat zjednodušenou verzi CALS [TableExchange]. Je proto lepší již dnes nepoužívat věci, které budou časem z DocBooku odstraněny. Následující příklady se omezují na použití elementů a atributů, které budou dostupné i v DocBooku 5.0.
Příklad 4.7. Ukázky tabulek – tabulky.xml
<?xml version='1.0' encoding='utf-8'?> <!DOCTYPE chapter PUBLIC '-//OASIS//DTD DocBook XML V4.5//EN' 'http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd'> <chapter lang="cs"> <title>Kapitola s tabulkami</title> <table> <title>Pokusná tabulka</title> <tgroup cols="3"> <colspec colwidth="4cm"/> <colspec colwidth="2cm"/> <colspec colwidth="10cm"/> <thead> <row> <entry>Výstupní formát</entry> <entry>Stylový jazyk</entry> <entry>Potřebné nástroje</entry> </row> </thead> <tbody> <row> <entry>jedna HTML stránka</entry> <entry>DSSSL</entry> <entry>Jade</entry> </row> <row> <entry>jedna HTML stránka</entry> <entry>XSL</entry> <entry>libovolný XSLT procesor</entry> </row> <row> <entry>sada HTML stránek</entry> <entry>DSSSL</entry> <entry>Jade</entry> </row> <row> <entry>sada HTML stránek</entry> <entry>XSL</entry> <entry>libovolný XSLT procesor</entry> </row> <row> <entry>RTF</entry> <entry>DSSSL</entry> <entry>Jade</entry> </row> <row> <entry>PDF</entry> <entry>DSSSL</entry> <entry>Jade+JadeTeX nebo Jade+Word+Distiller</entry> </row> <row> <entry>PDF</entry> <entry>XSL</entry> <entry>libovolný XSLT procesor + FO procesor (např. PassiveTeX)</entry> </row> </tbody> </tgroup> </table> <table> <title>Tabulka se sloučenými buňkami</title> <tgroup cols="3"> <colspec colname="c1" align="left"/> <colspec colname="c2" align="char" char=","/> <colspec colname="c3" align="char" char=","/> <thead> <row> <entry morerows="1" align="center" valign="middle">Měsíc</entry> <entry namest="c2" nameend="c3" align="center">Prodej zboží</entry> </row> <row> <entry align="center">A</entry> <entry align="center">B</entry> </row> </thead> <tbody> <row> <entry>Leden</entry> <entry>865,54</entry> <entry>16,3</entry> </row> <row> <entry>Únor</entry> <entry>917,7</entry> <entry>8,1</entry> </row> <row> <entry>Březen</entry> <entry>1036,8</entry> <entry>18,9</entry> </row> </tbody> </tgroup> </table> <table> <title>Tabulka s rámečkem, ale bez linek mezi buňkami</title> <tgroup cols="3" colsep="0" rowsep="0"> <colspec align="left"/> <colspec align="char" char=","/> <colspec align="char" char=","/> <tbody> <row> <entry>Leden</entry> <entry>865,54</entry> <entry>16,3</entry> </row> <row> <entry>Únor</entry> <entry>917,7</entry> <entry>8,1</entry> </row> <row> <entry>Březen</entry> <entry>1036,8</entry> <entry>18,9</entry> </row> </tbody> </tgroup> </table> <table frame="topbot"> <title>Tabulka s linkou nahoře a dole</title> <tgroup cols="3" colsep="0" rowsep="0"> <colspec align="left"/> <colspec align="char" char=","/> <colspec align="char" char=","/> <tbody> <row> <entry>Leden</entry> <entry>865,54</entry> <entry>16,3</entry> </row> <row> <entry>Únor</entry> <entry>917,7</entry> <entry>8,1</entry> </row> <row> <entry>Březen</entry> <entry>1036,8</entry> <entry>18,9</entry> </row> </tbody> </tgroup> </table> <table frame="topbot"> <title>Tabulka s linkou nahoře, dole a mezi sloupci</title> <tgroup cols="3" colsep="1"> <colspec align="left"/> <colspec align="char" char=","/> <colspec align="char" char=","/> <tbody> <row> <entry>Leden</entry> <entry>865,54</entry> <entry>16,3</entry> </row> <row> <entry>Únor</entry> <entry>917,7</entry> <entry>8,1</entry> </row> <row> <entry>Březen</entry> <entry>1036,8</entry> <entry>18,9</entry> </row> </tbody> </tgroup> </table> <para>Odstavec textu, za kterým bude tabulka bez nadpisu.</para> <informaltable> <tgroup cols="3"> <colspec align="left"/> <colspec align="char" char=","/> <colspec align="char" char=","/> <tbody> <row> <entry>Leden</entry> <entry>865,54</entry> <entry>16,3</entry> </row> <row> <entry>Únor</entry> <entry>917,7</entry> <entry>8,1</entry> </row> <row> <entry>Březen</entry> <entry>1036,8</entry> <entry>18,9</entry> </row> </tbody> </tgroup> </informaltable> </chapter>
Každá tabulka se musí skládat alespoň z jednoho elementu
tgroup
. Narozdíl od HTML musíme
vždy povinně určit počet sloupců v atributu cols
. Dovnitř tgroup
se pak vkládají definice jednotlivých
sloupců (colspec
), záhlaví tabulky
(thead
) a tělo tabulky (tbody
). Řádky se zapisují do elementu
row
a buňky do entry
.
Od verze 4.3 umožňuje DocBook i alternativní zápis tabulek používající HTML syntaxi.
Seznamy asi nepotřebují příliš velký komentář.
Příklad 4.8. Ukázka seznamů – seznamy.xml
<?xml version='1.0' encoding='utf-8'?> <!DOCTYPE chapter PUBLIC '-//OASIS//DTD DocBook XML V4.5//EN' 'http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd'> <chapter lang="cs"> <title>Kapitola se seznamy</title> <itemizedlist> <listitem> <para>jablka</para> </listitem> <listitem> <para>hrušky</para> </listitem> <listitem> <para>švestky</para> </listitem> </itemizedlist> <orderedlist> <listitem> <para>Praha</para> </listitem> <listitem> <para>Brno</para> </listitem> <listitem> <para>Bratislava</para> </listitem> </orderedlist> <itemizedlist> <title>Ovoce:</title> <listitem> <para>jablka</para> </listitem> <listitem> <para>hrušky</para> </listitem> <listitem> <para>švestky</para> </listitem> </itemizedlist> <orderedlist continuation="continues"> <title>Číslovaný seznam může pokračovat v přerušeném číslování</title> <listitem> <para>Ostrava</para> </listitem> <listitem> <para>Plzeň</para> </listitem> </orderedlist> <para>Následující seznam bude číslován římskými číslicemi</para> <orderedlist numeration="upperroman"> <listitem> <para>SGML</para> </listitem> <listitem> <para>HTML</para> </listitem> <listitem> <para>XML</para> </listitem> </orderedlist> <variablelist> <varlistentry> <term>XML</term> <listitem> <para>eXtensible Markup Language</para> </listitem> </varlistentry> <varlistentry> <term>SGML</term> <listitem> <para>Standard Generalized Markup Language</para> </listitem> </varlistentry> <varlistentry> <term>HTML</term> <term>XHTML</term> <listitem> <para>Jazyky pro tvorbu webových stránek odvozené od SGML, resp. XML.</para> </listitem> </varlistentry> <varlistentry> <term><emphasis>XSL</emphasis></term> <listitem> <para>XSL = eXtensible Stylesheet Language. Tento popis uděláme delší ať je vidět, že se zalomí do několiak řádek.</para> <para>Můžeme samozřejmě použít i více odstavců.</para> </listitem> </varlistentry> </variablelist> </chapter>
Seznamy do sebe můžeme samozřejmě navzájem zanořovat.
Ve větších dokumentech se bez odkazů neobejdeme. Pokud chceme
vytvořit odkaz na určitou část dokumentu (kapitolu, obrázek apod.)
musíme cílovému elementu přiřadit jednoznačný identifikátor
v atributu id
.
Na takto označené místo pak můžeme vytvořit odkaz pomocí
elementů xref
a link
. Rozdíl je v tom, že při použití
prvního elementu se automaticky generuje text odkazu, u link
u text určujeme sami.
Internetové odkazy se zapisují pomocí elementu ulink
.
Příklad 4.9. Ukázka odkazů – odkazy.xml
<?xml version='1.0' encoding='utf-8'?> <!DOCTYPE book PUBLIC '-//OASIS//DTD DocBook XML V4.5//EN' 'http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd'> <book lang="cs"> <bookinfo> <title>První pokusná kniha</title> <subtitle>Uživatelská příručka</subtitle> </bookinfo> <preface> <title>Úvod</title> <para>Odstavec textu. Více informací naleznete na mé <ulink url="http://www.kosek.cz">domovské stránce</ulink>. Seznam najdete na adrese <ulink url="http://www.seznam.cz">http://www.seznam.cz</ulink>.</para> </preface> <chapter> <title>První kapitola</title> <para>Text první kapitoly</para> <para>Popis instalace programů používaných v této kapitole najdete v příloze <xref linkend="apb"/>.</para> <para>Popis instalace programů používaných v této kapitole najdete v <link linkend="apb">samostatné příloze B</link>.</para> <para>Popis instalace programů používaných v této kapitole najdete v <xref endterm="apb-short" linkend="apb"/>.</para> <para>Popis instalace programů nepoužívaných v této kapitole najdete v <xref linkend="apa"/>.</para> </chapter> <chapter> <title>Druhá kapitola</title> <para>Text druhé kapitoly</para> <para>Informace o prodeji naleznete v tabulce <xref linkend="tab.prodeje"/>.</para> <table id="tab.prodeje"> <title>Prodeje za Q1</title> <tgroup cols="3"> <colspec align="left"/> <colspec align="char" char=","/> <colspec align="char" char=","/> <tbody> <row> <entry>Leden</entry> <entry>865,54</entry> <entry>16,3</entry> </row> <row> <entry>Únor</entry> <entry>917,7</entry> <entry>8,1</entry> </row> <row> <entry>Březen</entry> <entry>1036,8</entry> <entry>18,9</entry> </row> </tbody> </tgroup> </table> <para>Obrázek <xref linkend="pic.wap-schema"/> znázorňuje schéma WAP sítě.</para> <para><xref xrefstyle="template:Obrázek %t (%n)" linkend="pic.wap-schema"/> znázorňuje schéma WAP sítě.</para> <para>Obrázek <xref xrefstyle="select: labelnumber" linkend="pic.wap-schema"/> znázorňuje schéma WAP sítě.</para> </chapter> <appendix id="apa" xreflabel="Příloha A - Obrázková příloha"> <title>Obrázková příloha</title> <figure float="0" id="pic.wap-schema"> <title>Schéma WAPu</title> <mediaobject> <imageobject> <imagedata fileref="schema.png" format="PNG"/> </imageobject> </mediaobject> </figure> </appendix> <appendix id="apb"> <title>Druhá příloha</title> <titleabbrev id="apb-short">2. příloha</titleabbrev> <para>Text přílohy</para> <para>...</para> </appendix> </book>
Automaticky generovaný text odkazu je ovlivněn několika
atributy. Jednak můžeme u odkazu říci, z kterého elementu se
má vytáhnout text použitý pro odkaz (atribut endterm
). U každého elementu také
můžeme v atributu xreflabel
nastavit text, který se použije pro vytvoření textu odkazu místo
samotného obsahu elementu.
V češtině je trošku problém s automaticky generovanými názvy jako „Obrázek“, „Tabulka“ apod. V textu se mohou vyskytovat v několika různých pádech, s tím však styl nemůže počítat. Pro jazyky jako čeština jsou styly upraveny tak, že vkládají pouze číslo obrázku či tabulky a text dopíše autor sám ve správném pádu. V části věnované úpravě stylů si ukážeme, jak modifikovat tvar křížového odkazu.
Ve větších dokumentech se člověk může snadno ztratit
v identifikátorech, které používá. Je proto dobré zvolit si
nějaký systém. Například můžeme na začátek identifikátoru vkládat
prefix, který určí typ objektu, který označuje. Například pic.
pro obrázky a tab.
pro tabulky. Obvyklé bývá také vložení
čísla kapitoly nebo jejího identifikátoru jako součást identifikátoru
vnořeného elementu.
V DocBooku 4.0 bylo přidáno mnoho nových elementů pro popis tříd a rozhraní. Pomocí atributů můžeme určit pro jaký jazyk je definice určena. Pro některé jazyky umí styly upravit formátování dle konvencí daného jazyka.
Příklad 4.10. Ukázka definice třídy a rozhraní – trida.xml
<?xml version='1.0' encoding='utf-8'?> <!DOCTYPE chapter PUBLIC '-//OASIS//DTD DocBook XML V4.5//EN' 'http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd'> <chapter lang="cs"> <title>Ukázky definice tříd a rozhraní</title> <!-- Příklady jsou převzaty z DocBook 4.0 Update Reference http://www.docbook.org/tdg/40update/classsynopsis.html a drobně upraveny --> <section> <title>Třída v Javě</title> <classsynopsis language="java"> <ooclass> <modifier>public</modifier> <classname>TextFileWriter</classname> </ooclass> <ooclass> <classname>HandlerBase</classname></ooclass> <fieldsynopsis> <modifier>private</modifier> <type>Writer</type> <varname>writer</varname> </fieldsynopsis> <fieldsynopsis> <modifier>public</modifier> <type>String</type> <varname>writerName</varname> <initializer>"MyWriter"</initializer> </fieldsynopsis> <methodsynopsis> <modifier>static</modifier> <modifier>public</modifier> <void/> <methodname>write</methodname> <methodparam> <type>ResultTreeFragment</type> <parameter>frag</parameter> </methodparam> <methodparam> <type>String</type> <parameter>file</parameter> </methodparam> <exceptionname>SAXException</exceptionname> </methodsynopsis> </classsynopsis> </section> <section> <title>Definice rozhraní v IDL</title> <classsynopsis class="interface" language="idl"> <oointerface> <interfacename>Element</interfacename></oointerface> <oointerface> <interfacename>Node</interfacename></oointerface> <fieldsynopsis> <modifier>readonly</modifier> <modifier>attribute</modifier> <type>DOMString</type> <varname>tagName</varname> </fieldsynopsis> <methodsynopsis> <type>DOMString</type> <methodname>getAttribute</methodname> <methodparam> <modifier>in</modifier> <type>DOMString</type> <parameter>name</parameter> </methodparam> </methodsynopsis> <methodsynopsis> <void/> <methodname>setAttribute</methodname> <methodparam> <modifier>in</modifier> <type>DOMString</type> <parameter>name</parameter> </methodparam> <methodparam> <modifier>in</modifier> <type>DOMString</type> <parameter>value</parameter> </methodparam> <exceptionname>DOMException</exceptionname> </methodsynopsis> </classsynopsis> </section> </chapter>
DocBook nabízí několik elementů pro snadné komentování výpisů zdrojového kódu.
Příklad 4.11. Komentované výpisy – callouts.xml
<?xml version='1.0' encoding='utf-8'?> <!DOCTYPE chapter PUBLIC '-//OASIS//DTD DocBook XML V4.5//EN' 'http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd'> <chapter lang="cs"> <title>Ukázka <quote>callouts</quote></title> <example> <title>Malá exkurze do SGML DTD pro jazyk HTML</title> <programlisting><!ELEMENT UL - - (LI)+ > <co id="co.element"/> <!ATTLIST UL <co id="co.atributy"/> type (disc|square|circle) #IMPLIED <co id="co.atribut"/> ></programlisting> <calloutlist> <callout arearefs="co.element"> <para>Deklarace elementu <sgmltag class="element">ul</sgmltag> (nečíslovaný seznam). Element musí mít počáteční i ukončovací tag a může obsahovat pouze elementy <sgmltag class="element">li</sgmltag>.</para> </callout> <callout arearefs="co.atributy"> <para>Deklarace atributů použitelných u <sgmltag class="element">ul</sgmltag>.</para> </callout> <callout arearefs="co.atribut"> <para>Atribut <sgmltag class="attribute">type</sgmltag> může mít jednu z hodnot <symbol>disc</symbol>, <symbol>square</symbol> a <symbol>circle</symbol>.</para> </callout> </calloutlist> </example> <para>Další ukázka ukazuje možnost označení oblastí pomocí souřadnic. Je převzata z testovacích dokumentů pro DSSSL styly.</para> <programlistingco lang="en"> <areaspec> <area id="prologue" coords="1"/> <area id="skipeof" coords="4"/> <areaset id="xreq" coords=""> <area id="require1" coords="9"/> <area id="require2" coords="10"/> </areaset> <area id="use" coords="11 12"/> <area id="funccall" coords="27"/> </areaspec> <programlisting>@rem = '--*-Perl-*-- @echo off perl.exe %_batchname %$ goto endofperl @rem '; # Compress mail... require 'n:/home/nwalsh/lib/cygnus.pl'; require 'timelocal.pl'; use Cwd; select (STDERR); $| = 1; select (STDOUT); $| = 1; @DIRS = ("/home/nwalsh/Mail"); while (@DIRS) { $dir = shift @DIRS; opendir (DIR, $dir); while ($fname = readdir(DIR)) { $file = "$dir/$fname"; next if ! -d $file; next if $fname =~ /^\.\.?$/; print "$file\n"; push (@DIRS, $file); &compress ($file); } } exit;</programlisting> <calloutlist> <callout arearefs="prologue"> <para>The prologue handles embedding a Perl script in a DOS batch file.</para> </callout> <callout arearefs="skipeof"> <para>The <literal>goto</literal> statement, interpreted by the DOS batch file interpreter, skips over the body of the Perl script.</para> </callout> <callout arearefs="require1"> <para>The <literal>require</literal> statement sources in external program fragments.</para> </callout> <callout arearefs="use"> <para>The <literal>use</literal> statement is similar, but has additional utility. It is a Perl5 function. (Note that this callout area specifies both a line and a column.)</para> </callout> <callout arearefs="funccall"> <para>This is a user subroutine call.</para> </callout> </calloutlist> </programlistingco> </chapter>
DocBook nabízí poměrně bohaté možnosti pro zápis bibliografických záznamů.
Příklad 4.12. Ukázka seznamu literatury – literatura.xml
<?xml version='1.0' encoding='utf-8'?> <!DOCTYPE bibliography PUBLIC '-//OASIS//DTD DocBook XML V4.5//EN' 'http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd'> <bibliography id="literatura"> <title>Literatura a další zajímavé odkazy</title> <biblioentry> <abbrev>REC-XSLT</abbrev> <editor> <firstname>James</firstname> <surname>Clark</surname> </editor> <title><ulink url="http://www.w3.org/TR/xslt">XSL Transformations (XSLT) Version 1.0</ulink></title> <publishername>W3C</publishername> <pubdate>1999</pubdate> </biblioentry> <biblioentry id="bib.ptux"> <title><ulink url="http://www.cranesoftwrights.com">Practical Transformation Using XSLT and XPath</ulink></title> <publisher> <publishername>Crane Softwrights</publishername> </publisher> <pubdate>2000</pubdate> <isbn>1-894049-04-7</isbn> </biblioentry> <biblioentry> <abbrev>SGML-NT</abbrev> <author> <firstname>Markus</firstname> <surname>Hoenicka</surname> </author> <title>SGML for NT</title> <subtitle>A brief tutorial how to set up a free SGML editing and publishing system for Windows NT</subtitle> <releaseinfo>URL: <ulink url="http://ourworld.compuserve.com/homepages/hoenicka_markus/ntsgml.html">http://ourworld.compuserve.com/homepages/hoenicka_markus/ntsgml.html</ulink></releaseinfo> </biblioentry> <biblioentry> <abbrev>DSSSL</abbrev> <title>Information technology – Processing languages – Document Style Semantics and Specification Language (DSSSL)</title> <subtitle>ISO/IEC 10179:1996(E)</subtitle> <releaseinfo>URL: <ulink url="ftp://ftp.ornl.gov/pub/sgml/WG8/DSSSL/dsssl96b.pdf">ftp://ftp.ornl.gov/pub/sgml/WG8/DSSSL/dsssl96b.pdf</ulink></releaseinfo> <releaseinfo>URL: <ulink url="ftp://ftp.ornl.gov/pub/sgml/WG8/DSSSL/readme.htm">ftp://ftp.ornl.gov/pub/sgml/WG8/DSSSL/readme.htm</ulink></releaseinfo> </biblioentry> <biblioentry> <abbrev>XSLTQUICK</abbrev> <title><ulink url="http://www.mulberrytech.com/quickref/XSLTquickref.pdf">XSLT and XPath Quick Reference</ulink></title> <publishername>Mulberry Technologies</publishername> <pubdate>2000</pubdate> </biblioentry> <biblioentry> <abbrev>XPATHTUT</abbrev> <author> <firstname>Miloslav</firstname> <surname>Nič</surname> </author> <title><ulink url="http://www.zvon.org/xxl/XPathTutorial/General/examples.html">XPath Tutorial</ulink></title> </biblioentry> <biblioentry> <abbrev>XSLTUT</abbrev> <author> <firstname>Miloslav</firstname> <surname>Nič</surname> </author> <title><ulink url="http://www.zvon.org/xxl/XSLTutorial/Books/Book1/index.html">XSLT Tutorial</ulink></title> </biblioentry> <biblioentry> <abbrev>GNU-WWW</abbrev> <author> <firstname>Lenka</firstname> <surname>Třísková</surname> </author> <title>GNU nástroje pro tvorbu WWW stránek</title> <publisher> <publishername>Grada Publishing</publishername> </publisher> <pubdate>2000</pubdate> <isbn>ISBN 80-7169-861-X</isbn> <pagenums>244</pagenums> </biblioentry> <biblioentry> <abbrev>TDG</abbrev> <authorgroup> <author> <firstname>Norman</firstname> <surname>Walsh</surname> </author> <author> <firstname>Leonard</firstname> <surname>Muellner</surname> </author> </authorgroup> <title>DocBook</title> <subtitle>The Definitive Guide</subtitle> <pubdate>1999</pubdate> <edition>1</edition> <isbn>ISBN: 156592-580-7</isbn> <pagenums>648</pagenums> <releaseinfo>URL: <ulink url="http://www.docbook.org/tdg/html/docbook.html">http://www.docbook.org/tdg/html/docbook.html</ulink></releaseinfo> </biblioentry> <biblioentry> <abbrev>DocBook4</abbrev> <authorgroup> <author> <firstname>Norman</firstname> <surname>Walsh</surname> </author> <author> <firstname>Leonard</firstname> <surname>Muellner</surname> </author> </authorgroup> <title>DocBook 4.0</title> <subtitle>Update Reference</subtitle> <releaseinfo>URL: <ulink url="http://www.docbook.org/tdg/40update/">http://www.docbook.org/tdg/40update/</ulink></releaseinfo> </biblioentry> <biblioentry> <abbrev>XSL-DOC</abbrev> <authorgroup> <author> <firstname>Norman</firstname> <surname>Walsh</surname> </author> <author> <firstname>Bob</firstname> <surname>Stayton</surname> </author> </authorgroup> <title>DocBook XSL Stylesheet Documentation</title> <releaseinfo>URL: <ulink url="http://www.nwalsh.com/docbook/xsl/doc/">http://www.nwalsh.com/docbook/xsl/doc/</ulink></releaseinfo> </biblioentry> <biblioentry> <abbrev>TableExchange</abbrev> <author> <firstname>Norman</firstname> <surname>Walsh</surname> </author> <title>Organization for the Advancement of Structured Information Standards (OASIS) Technical Memorandum TR 9901:1999</title> <subtitle>XML Exchange Table Model Document Type Definition</subtitle> <pubdate>1999</pubdate> <publisher> <publishername>OASIS</publishername> </publisher> <releaseinfo>URL: <ulink url="http://www.oasis-open.org/html/tm9901.htm">http://www.oasis-open.org/html/tm9901.htm</ulink></releaseinfo> </biblioentry> <biblioentry> <abbrev>DSSSL-DOC</abbrev> <author> <firstname>Norman</firstname> <surname>Walsh</surname> </author> <title>The Modular DocBook Stylesheets</title> <releaseinfo>URL: <ulink url="http://www.nwalsh.com/docbook/dsssl/doc/">http://www.nwalsh.com/docbook/dsssl/doc/</ulink></releaseinfo> </biblioentry> <biblioentry> <abbrev>DB-L</abbrev> <title>Archiv mailing listu <email>docbook@lists.oasis-open.org</email></title> <releaseinfo>URL: <ulink url="http://lists.oasis-open.org/archives/docbook/">http://lists.oasis-open.org/archives/docbook/</ulink></releaseinfo> </biblioentry> <biblioentry> <abbrev>DBAPPS-L</abbrev> <title>Archiv mailing listu <email>docbook-apps@lists.oasis-open.org</email></title> <releaseinfo>URL: <ulink url="http://lists.oasis-open.org/archives/docbook-apps/">http://lists.oasis-open.org/archives/docbook-apps/</ulink></releaseinfo> </biblioentry> <biblioentry> <abbrev>DSSSL-Pages</abbrev> <title>Stránky věnované jazyku DSSSL</title> <releaseinfo>URL: <ulink url="http://www.netfolder.com/DSSSL/">http://www.netfolder.com/DSSSL/</ulink></releaseinfo> </biblioentry> </bibliography>
Odkaz na zdroj se vytváří buď pomocí elementu
xref
, který ukazuje na id
zdroje, nebo pomocí elementu
citation
, který obsahuje zkratku zdroje uvedenou
v seznamu literatury v elementu
abbrev
.
Nelíbí-li se nám formátování seznamu literatury, můžeme si
upravit styly. To je však velice náročné, proto se obvykle volí jiná
cesta. Nejjednodušší je jednotlivé zdroje zapisovat pomocí elementu
bibliomixed
, který dovoluje ručně zadat veškerý
text včetně různých interpunkčních znamének.
<bibliomixed> <abbrev>Ko99</abbrev> Kosek, J.: <citetitle>PHP – tvorba interaktivních internetových aplikací</citetitle>. Grada Publishing. Praha 1999. </bibliomixed>
Citujeme-li hodně, můžeme použít některý z nástrojů pro práci s citačními databázemi, který podporuje DocBook. Například RefDB, BibTeXML nebo JReferences.
Inline elementů existuje v DocBooku několik desítek. Následující příklad ukazuje použití těch elementů, jejichž zpracování závisí na hodnotě atributu nebo na kontextu, ve kterém jsou použity.
Příklad 4.13. Ukázka inline elementů – inline.xml
<?xml version='1.0' encoding='utf-8'?> <!DOCTYPE chapter PUBLIC '-//OASIS//DTD DocBook XML V4.5//EN' 'http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd'> <chapter lang="cs"> <title>Ukázka vybraných inline elementů</title> <section> <title>Zápis SGML/XML značkování</title> <literallayout> <sgmltag>element</sgmltag> <sgmltag class="attribute">atribut</sgmltag> <sgmltag class="attvalue">hodnota atributu</sgmltag> <sgmltag class="element">element</sgmltag> <sgmltag class="emptytag">empty</sgmltag> – prázdný element <sgmltag class="starttag">tag</sgmltag> – počáteční tag <sgmltag class="endtag">tag</sgmltag> – ukončovací tag <sgmltag class="genentity">mdash</sgmltag> – odkaz na entitu <sgmltag class="numcharref">x201C</sgmltag> – odkaz na číselnou znakovou entitu <sgmltag class="paramentity">iso-pub</sgmltag> – parametrická entita <sgmltag class="pi">Pub caret</sgmltag> – SGML instrukce pro zpracování <sgmltag class="xmlpi">xml-stylesheet href="styl.css" type="text/css"</sgmltag> – XML instrukce pro zpracování <sgmltag class="sgmlcomment">nějaký komentář</sgmltag> </literallayout> </section> <section> <title>GUI elementy – menu, klávesové zkratky apod.</title> <para>Náš úžasně geniální program se spouští pomocí kliknutím na ikonu <guiicon>GENPROG</guiicon>. Program lze ukončit stiskem <keycombo> <keycap>Alt</keycap><keycap>F4</keycap></keycombo> nebo pomocí příkazu z menu <menuchoice><guimenu><accel>S</accel>oubor</guimenu> <guimenuitem><accel>K</accel>onec</guimenuitem></menuchoice>.</para> <para>Soubor lze otevřít pomocí <menuchoice> <shortcut> <keycombo><keycap>Ctrl</keycap><keycap>O</keycap></keycombo> </shortcut> <guimenu>Soubor</guimenu> <guimenuitem>Otevřít</guimenuitem> </menuchoice>.</para> </section> <section> <title>Pár dalších ukázek</title> <para>Moje e-mailová adresa je <email>jirka@kosek.cz</email>. Neposílejte mi nic <emphasis>zbytečně</emphasis>. Myslím to <emphasis role="bold">vážně</emphasis>. Na následujícím <phrase role="important">kusu textu</phrase> si ukážeme úpravy stylů.</para> </section> </chapter>