Структура документа
Как уже говорилось, документы DocBook должны соответствовать заданной в DTD структуре. В начале каждого документа выбирается конкретная DTD:
<!DOCTYPE (1) book (2) PUBLIC "-//OASIS//DTD DocBook XML V4.1//EN" (3) "/usr/share/sgml/db41xml/docbookx.dtd" (4) [ ] (5) >
Для наглядности я разбил заключенное между "<" и ">" выражение на строки и пронумеровал их.
В части (1) говорится, что мы собираемся выбрать DTD. Часть (2) определяет элемент , который становится корневым элементом нашего документа. В части (3) идентификатор PUBLIC сообщает транслятору местоположение DTD на данном конкретном компьютере. Квадратные скобки, составляющие часть (5), могут содержать так называемые определения сущностей [entity definitions], но, поскольку в введении мне не хочется вдаваться в детали, эта часть оставлена пустой.
Итак, наш текст начинается с корневого элемента, в данном случае с book. То, какие элементы могут появится внутри определяется в DocBook DTD. Это может быть, например, bookinfo или chapter. Исчерпывающий перечень разрешенных элементов можно узнать из "Всеобъемлющего руководства". Элементы, которые могут появится внутри bookinfo или chapter определены в DocBook DTD, как и все другие элементы. Единственный способ составления правильного [valid] документа -- следование предписаниям DTD.
Хотя в первый момент правила могут показаться обременительными (Правила? Черт бы их побрал, эти правила!), но они играют ключевую роль в доступе к документам из программ. Поскольку документ соответствует DTD, то вся последующая обработка может использовать это обстоятельство. Какая радость для пишущих программы-обработчики! Признаю, что число элементов и их взаимоотшения понять непросто. Впрочем, эти взаимоотношения вполне логичны: глава [chapter] может содержать один или несколько (вводных) абзацев и один или несколько разделов первого уровня [level 1 sections]. С другой стороны, ни один раздел не может включать главу -- что было бы нелепо. Изучению DocBook может также помочь экземляр "Всеобъемлющего руководства", "поселившийся" рядом с клавиатурой. Ниже приводится краткая подборка часто используемых тэгов.
Вот совсем коротенький, но полный документ DocBook.
<!DOCTYPE book PUBLIC "-//OASIS//DTD DocBook XML V4.1//EN" "/usr/share/sgml/db41xml/docbookx.dtd" []> <book> <bookinfo> <title>XYZ (версия 0.8.15) Руководство пользователя</title> </bookinfo> <chapter id = "chapter-introduction"> <title>Введение</title> <para> Это глава содержит краткое введение в XYZ. </para> <sect1 id = "section-syntax"> <title>Syntax</title> <para> Раздес содержит обзор синтаксиса языка XYZ. </para> </sect1> <sect1 id = "section-core-library"> <title>Основная библиотека</title> <para> Использование некоторых основных библиотечных функций возможно даже если программа XYZ не загружает дополнительные библиотеки. </para>
</sect1> </chapter> <chapter id = "chapter-commands"> <title>Команды</title> <sect1 id = "section-interactive-commands"> <title>Команды диалогового режима</title> <para> ... </para> <sect2 id = "section-interactive-commands-argumentless"> <title>Команды, не требующие аргументов</title> <para> ... </para> </sect2> </sect1> <sect1 id = "section-non-interactive-commands"> <title>Команды, доступные в пакетном режиме</title> <para> ... </para> <sect2 id = "section-non-interactive-commands-argumentless"> <title>Команды, не требующие аргументов</title> <para> ... </para> </sect2> </sect1> </chapter> </book>