DocBook
DocBook — это семейство схем для разметки технической документации, основанное на языке XML (ранее — SGML). DocBook предоставляет набор семантических элементов (тегов) для описания структуры книг, статей, руководств, справочников и другой документации, позволяя отделить содержание от визуального представления. Файлы DocBook обрабатываются инструментарием (например, XSLT-преобразованиями) для генерации конечных форматов: HTML, PDF, EPUB, CHM, PostScript и других.
История
Изначально DocBook был разработан в 1991 году компанией HaL Computer Systems совместно с O’Reilly & Associates для публикации технической документации по программному обеспечению. Первая версия DTD (Document Type Definition) была создана на языке SGML. В 1994 году проект перешёл под управление некоммерческой организации Davenport Group, а затем — в 1998 году — в ведение OASIS (Organization for the Advancement of Structured Information Standards).
В 1999 году вышла версия 3.1, последняя на SGML. В 2000 году была выпущена версия 4.0, переведённая на XML, что упростило интеграцию с современными инструментами обработки. В 2005 году, после версии 4.4, OASIS прекратила активное развитие DTD-варианта и сосредоточилась на разработке релаксированной схемы (RELAX NG) и схемы W3C XML Schema.
В 2006 году появился DocBook V5.0, ставший основным релизом на RELAX NG. Эта версия внесла значительные изменения: удалены устаревшие элементы, введены пространства имён, добавлена поддержка модульных расширений. Текущая стабильная версия — DocBook V5.1 (выпущена в 2016 году). Разработку курирует DocBook Technical Committee при OASIS.
Структура и элементы
DocBook использует иерархическую модель документации. Основные элементы делятся на несколько категорий:
- Корневые элементы:
book(книга),article(статья),set(набор книг),part(часть),appendix(приложение). Они задают верхний уровень структуры. - Метаданные:
<info>(сведения о документе: автор, дата, версия, лицензия),<title>(заголовок),<copyright>(копирайт),<revhistory>(история изменений). - Блочные элементы:
<para>(абзац),<section>(раздел),<simplesect>(простой раздел без подзаголовков),<orderedlist>(нумерованный список),<itemizedlist>(маркированный список),<table>(таблица),<figure>(рисунок),<example>(пример),<programlisting>(листинг кода). - Инлайновые элементы:
<emphasis>(акцент),<literal>(буквальный текст),<code>(код),<filename>(имя файла),<option>(ключ команды),<parameter>(параметр),<glossterm>(термин),<link>(ссылка),<xref>(перекрёстная ссылка). - Специализированные:
<procedure>(последовательность шагов),<step>(шаг процедуры),<warning>(предупреждение),<note>(примечание),<tip>(совет),<caution>(осторожно),<danger>(опасность). - Индексирование:
<index>(указатель),<glossary>(глоссарий).
Пример фрагмента XML-документа DocBook:
``xml <book xmlns="http://docbook.org/ns/docbook" version="5.0"> <info> <title>Руководство пользователя Системы</title> <author> <personname>Иван Иванов</personname> </author> <pubdate>2023</pubdate> </info> <chapter> <title>Установка</title> <para>Для установки выполните команду:</para> <programlisting>sudo apt install package</programlisting> </chapter> </book> ``
Обработка и инструментарий
Основной метод обработки DocBook — преобразование с помощью XSLT (Extensible Stylesheet Language Transformations). Стандартные стили (DocBook XSL Stylesheets) предоставляются проектом DocBook и позволяют генерировать:
- HTML (одна страница или набор страниц)
- PDF (через XSL-FO или LaTeX)
- EPUB
- CHM (справочные файлы Windows)
- Простой текст (plain text)
- RTF (через FO-processor)
Для сборки часто используются инструменты:
- xsltproc (из состава libxslt) — утилита командной строки для XSLT-преобразований.
- Apache FOP — форматтер XSL-FO для генерации PDF.
- Dblatex — утилита для преобразования DocBook в PDF через LaTeX.
- Pandoc — конвертер документов, поддерживающий чтение DocBook.
Современные рабочие процессы могут использовать системы автоматизации сборки (Make, Maven, SCons) или интегрированные среды (XMLmind XML Editor, oXygen XML Editor).
Применение
DocBook получил широкое распространение в open-source сообществе и в индустрии, особенно для проектов, требующих единого формата документации из одного исходника. Наиболее известные проекты, использующие DocBook:
- Ядро Linux — документация по ядру (Documentation/*.xml) исторически частично использовала DocBook, хотя сейчас переходит на другие форматы (ReStructuredText).
- GNOME — документация по среде рабочего стола и приложениям (Yelp Help System использует DocBook).
- KDE — документация KDE Applications.
- FreeBSD — документация по операционной системе (Handbook на DocBook).
- Mozilla (Firefox, Thunderbird) — в прошлом активно использовали DocBook для справочной системы.
- Apache Software Foundation — ряд проектов (например, Apache Tomcat) используют DocBook для своих мануалов.
- O‘Reilly Media — издательство технической литературы, где DocBook использовалось для создания ряда книг.
Преимущества
- Семантическая разметка: позволяет авторам описывать тип содержания (шаг, параграф, листинг), а не формат (жирный, отступ). Это упрощает автоматический вывод разных выходных форматов.
- Единый источник (Single Sourcing): из одного XML-файла можно получить PDF, HTML, EPUB и другие форматы без ручного переформатирования.
- Гибкость повторного использования: элементы можно включать из других документов с помощью
xi:include, что удобно для многостраничной документации. - Расширяемость: схему можно дополнять собственными элементами с помощью кастомизаций (customization layer).
- Стандартизация: DocBook является открытым стандартом OASIS, что обеспечивает переносимость между инструментами.
Недостатки и критика
- Сложность: полная схема DocBook содержит несколько сотен элементов, что требует значительного времени на изучение.
- Избыточность: для простых документов (несколько страниц) DocBook может быть излишне громоздким. Существуют более лёгкие альтернативы, такие как AsciiDoc или Markdown.
- Зависимость от инструментов: для обработки необходимо устанавливать и настраивать XSLT-стили и рендереры, что может быть неудобно для небольших проектов.
- Устаревший синтаксис: некоторые решения (например, использование
imagedataдля вставки изображений) выглядят архаично на фоне современных форматов. - Конкуренция: DocBook теряет популярность в пользу более простых языков разметки (Markdown, reStructuredText, AsciiDoc), которые требуют меньше усилий для написания и обработки, особенно для онлайн-документации.
Альтернативы
- AsciiDoc — более простой формат со встроенной системой преобразования, активно используется для проектов на GitHub и в документации ПО.
- reStructuredText (reST) — язык разметки на Python, используемый в Sphinx для создания документации.
- Markdown — минималистичный язык с широкой поддержкой в вебе, часто дополняется расширениями (например, Pandoc Markdown).
- LaTeX — система вёрстки, ориентированная на научные и технические публикации, обладает лучшим качеством вывода PDF, но сложнее в настройке.
Источники
- Руководство DocBook Technical Committee (OASIS)
- Документация проекта DocBook (docbook.org)
- Статья «DocBook» в «WikiBooks» (рус.)
- База знаний «XML.com»
- «DocBook: The Definitive Guide» by Norman Walsh and Leonard Muellner (O’Reilly Media)
BFOmetr — база данных и аналитика по компаниям России.
На главную BFOmetr →