Цитирую"Всеобемлющее руководство по DocBook" (подробности -- в разделе Дополнительные материалы): DocBook представляет собой систему для написания структурированных документов с использованием SGML или XML. В дальнейшем я сосредоточусь на XML-варианте DocBook, поскольку вариант, использующий SGML, постепенно выходит из употребления.
По сравнению с системами, которые обсуждались раньше (статьи про POD и LaTeX/latex2html), развитие DocBook происходило на базе несколько иной идеологии:
- В документах DocBook "текст" означает скорее "текстовые данные". В этом смысле, о документе DocBook лучше думать, как о базе данных, сохраняющей "читабельность" [human-readable].
- Как стандарт, DocBook предписывает и то, какую внутреннюю структуру должны иметь документы с верной структурой [valid documents], и то, как они должны "выглядеть". Я написал "выглядеть" в кавычках потому, что применение документов DocBook не ограничено просмотром на экране. Такие документы могут быть трансформированны и в поток речи, например, в навигационной системе автомабиля (Представьте, как Ваша SUV спрашивает: "Желаете установить KDE3 прямо сейчас?").
- В ходе преобразования в какой-либо выходной формат документы DocBook тщательно проверяются на соответствие определенной структуре. Эта структура определена в так называемом описании типа документа, сокращенно -- DTD (document type description).
Изменяя DTD, на документ в формате DocBook можно наложить практически любые ограничения. Например, организационный комитет какой-либо научной встречи может принять такую DocBook DTD, что все статьи в протоколах конференции будут выглядеть одинаково и содержать необходимую информацию об авторах.
Эти специфические черты DocBook намекают на такое применение, которое если и не невозможно, то крайне затруднительно реализовать в документах POD или LaTeX.
- Благодаря своей структуре, документы формата DocBook можно легко созавать и модифицировать программными средствами, а также по ним удобно проводить автоматизированный поиск.
Для доступа к соответствующим XML документам мы, например, можем загрузить модуль
XML::DOM
в программу на Perl или служащий тем же целям модульxml.dom
в Python.Для преобразования XML World Wide Web Consortium (W3C, http://www.w3c.org) даже определил специальный язык, названный XSLT (посмотрите, например, http://www.w3.org/TR/xslt and http://www.oasis-open.org/cover/xsl.html). XSLT сам определен в рамках SGML, что делает XML и XSL очень похожими: сплошные угловые скобки:).
-
Для преобразования DocBook в HTML, TeX, GNU Texinfo и многие другие -- включая аудио -- форматы существует множество инструментов. Это тоже непохоже на рассмотренные ранее форматы, для обработки которых имелось лишь одно приложение.
-
Популярные средства преобразования (трансляторы):
- OpenJade (http://openjade.sourceforge.net/) использует для преобразования DSSSL -- Lisp'одобный язык, описывающий преобразование XML-DocBook в HTML, TeX и т.д. Дополнительная информация по адресам: http://www.jclark.com/dsssl/ и http://www.oasis-open.org/cover/dsssl.html и
- Saxon (http://saxon.sourceforge.net/), делающий то же самое с помощью XSL.
Установка обеих программ, включая необходимые стилевые таблицы DSSSL и стилевые таблицы XSL -- дело достаточно непростое, так что начинающим я бы советовал попробовать пакеты .deb или .rpm.
Оба набора программ являюстя многоцелевыми трансляторами и, таким образом, не ограничены преобразованиями документов DocBook. При наличии правильных стилевых таблиц можно делать и другие трансформации.
Синтаксис
Синтаксис DocBook/XML напоминает HTML. Фундаментальное отличие между ними -- строгость, с которой требуется выполнение синтаксических правил. Многие HTML-браузеры в высшей степени терпимы к "незакрытым" [unterminated] элементам и обычно безмолвно игнорируют неизвестные элементы и атрибуты. Трансляторы DocBook/XML отвергают не соответствующие DTD входные данные отказываясь в этом случае выдавать какие-либо выходные данные. Отказ сопровождается подробным отчетом об обнаруженных ошибках.
DocBook/XML имеет несколько "наречий", отличающихся интерпретацией закрывающих тэгов. Наиболее "многословный" диалект всегда закрывает тэг
с помощью . Другой вариант допускает сокращение закрывающего тэга до
>
, в то время, как третий вообще разрешает опускать закрывающий тэг в пустых элементах. Я предпочитаю "выписывать" все тэги, стиль, который доказал свои преимущества для таких грубоко вложенных структур, как, например, вложенные списки. Поэтому в этой статье будет встречаться только форма
.
Специальные символы записываются с помощью привычных соглашений об амперсанде &
и точки с запятой ;
, как и в HTML. Наиболее часто употребимые специальные символы:
- Амперсанд, "
&
" - Меньше чем, "
<
" и - Больше чем, "
>"
.
Комментарии заключаются между "спецскобками"