Docbook системний підхід до документації, відкриті системи

Реєстрація на конференцію

Наглядова користувач може виявити в Мережі безліч документів з однотипною навігацією між сторінками за допомогою посилань Prev, Next, Up, Top, причому один і той же документ може пропонуватися в кількох форматах: каскадний HTML, єдиний HTML, PDF (рис. 1).

Docbook системний підхід до документації, відкриті системи

Ясно, що документи в різних форматах генеруються з одного джерела. З якого? Щоб це дізнатися, заглянемо в «тельбухи» - в код HTML:


charset = ISO-8859-1 »>


of HOWTOs added to Samba documentation over the years.

Чим же так приваблива ця технологія і кому вона може бути корисна? Справді, адже існує безліч програм для підготовки текстів (починаючи з Microsoft Word), настільних видавничих систем (наприклад Xerox Ventura Publisher, Adobe PageMaker) і мов розмітки (unix nroff / troff, TeX / LaTeX, той же HTML). Свої переваги DocBook успадкував від XML:

  • простий HTML-подібна мова розмітки;
  • чіткий поділ контенту і верстки, чого немає в HTML;
  • потужний набір стандартів і підтримують їх інструментів, що дозволяють обробляти тексти (XSLT, XSL-FO, Xpath);
  • незалежність від комерційних виробників і їх стандартів, наявність вільно поширюваного інструментарію;
  • розширюваність.

Крім того, HTML недостатньо чітко формалізований. Звичайно, є офіційний стандарт W3C, але в реальності і браузери, і Web-майстра широко використовують нестандартні конструкції. Це ускладнює автоматизовану обробку HTML-документів, без якої не можна обійтися, коли мова йде про корпоративному середовищі.

Завдяки опорі на XML в DocBook відсутній цілий ряд недоліків, властивих HTML-інструментарію. Так, в DocBook присутні тільки структурні теги. Їх багато (близько 400), але ходових всього пара десятків: замість

і т.д. Формат документа жорстко витримується: наприклад, кожному відкривається тегом зобов'язаний відповідати закриває. В іншому випадку ні одна програма такий документ обробляти не буде. Нарешті, маючи на вході чітко структурований документ, пристосований до автоматизованої обробки, отримання вихідного документа, оформленого в корпоративному стилі, в форматі HTML, PDF, WinHelp або іншому, стає справою техніки - при тому, що вже є велика частина інструментарію, стандартні XSL- процесори.

Нескладно і інтуїтивно зрозуміло.

інструментарій

Конвертери - це XSLT-процесор і скрипти. І те й інше є в складі дистрибутива практично будь-який більш-менш сучасної версії ОС Linux. Скрипти постійно розвиваються: наприклад, у версії 1.68 виправлені огріхи в предметному покажчику російською мовою, тому їх варто відразу оновити, завантаживши останню версію (docbook.sourceforge.net/projects/xsl) і розгорнувши архів на сервері.

Для перетворення вихідного документа в вихідний формат треба набрати команду:

$ Xsltproc /usr/docbook/xsl-stylesheets/html/chunk.xsl article.xml

- xsltproc - викликається програма, XSLT-процесор (один з декількох можливих);

- / Usr / docbook / xsl-stylesheets - це те місце на сервері, де розміщені XSLT-скрипти;

- html / chunk.xsl - один з варіантів генерації вихідного документа;

- article.xml - вихідний документ DocBook.

Готово! У поточному каталозі повинні з'явитися HTML-файли, по одному на розділ статті і загальне зміст.

Перший, найпростіший рівень настройки - це вибір стартового скрипта. У наведеному раніше прикладі таким є html / chunk.xsl - він найбільш затребуваний, але не єдиний. Ширші можливості для управління зовнішнім виглядом вихідного документа надають параметри, яких тільки для chunk.xsl налічується понад 200. Приклад: змусимо виділяти в окремий файл перший розділ документації і задамо кодування вихідного документа windows-1251 замість UTF-8, прийнятої за замовчуванням:

$ Xsltproc --param chunk.first.sections 1
> --stringparam chunker.output.encoding windows-1251
> /usr/docbook/xsl-stylesheets/html/chunk.xsl article.xml

Для реальної роботи захочеться поставити як мінімум десяток параметрів, однак робити це через командний рядок незручно. Тому можна використовувати так званий «XSL-драйвер». В результаті різних маніпуляцій можна домогтися того, що згенеровані HTML-сторінки будуть повністю задовольняти вашим уявленням про естетику і ергономіці або просто відповідати прийнятому корпоративному стилю (рис. 2).

Docbook системний підхід до документації, відкриті системи

Максимальної гнучкості у використанні XSL-скриптів можна досягти, якщо підміняти не тільки значення параметрів, а й код, який використовується для обробки тих чи інших тегів. Наприклад, якщо вас не влаштовує те, як відпрацьовується той чи інший шаблон, ви просто копіюєте його з файлу в каталозі / usr / docbook / xsl-stylesheets в свій драйвер і керуєте його так, як вважаєте за потрібне. Шаблони, які ви напишете, перекриють імпортовані. Схожим способом можна не тільки міняти обробку існуючих тегів, але і вводити свої власні!

Можлива ситуація, коли ваш документ виявиться правильним з точки зору XML, але не буде відповідати схемі DocBook. Наприклад, в ньому будуть придумані користувачем теги. XSL-скрипти поводяться дуже розумно: що міститься всередині таких тегів текст потрапить в вихідний документ, але при цьому буде виділено червоним кольором. Тепер залишилося написати свій обробник (xsl: template) для винайденого тега і вставити його в свій драйвер, а ще краще - імпортувати з окремого файлу.

вихідні формати

Перетворення з DocBook в HTML в стандартних XSL-скриптах відпрацьовано практично ідеально. Немає проблем також з генерацією в Windows HTML Help. Скрипт htmlhelp / htmlhelp.xsl створює набір HTML і необхідні службові файли. Після цього запускається Help-компілятор hhc.exe, який Microsoft поширює вільно, і породжується HTML Help.

З комерційних FOP-процесорів, мабуть, найкращим на сьогоднішній день є продукт XEP від ​​компанії RenderX ціною близько 300 дол. Це зрілий продукт і проблем з російською мовою у нього немає, благо вся команда розробників російськомовна. На жаль, «з коробки» кириличні шрифти в ньому не працюють і немає інструкції, яка толково пояснювала б, як їх включити. Але якщо здогадався, то далі все працює гладко, є навіть переноси для російського тексту.

Друга альтернатива - проміжне перетворення в LaTeX. Стандартні XSL-скрипти його не підтримують, але є, наприклад, db2latex - також пакет XSL-скриптів, який можна змусити робити те, що потрібно. «З коробки» він з російськими буквами теж не працює - потрібно налаштувати XSLT-драйвер. Згенерований документ у форматі LaTeX можна перетворити в PDF командою pdflatex, також штатно наявної в ОС Linux. Після цього російський текст з'являється, але до задовільного результату ще далеко: залишаються огріхи в графіку, у вирівнюванні тексту, в закладках PDF і т.п. Також в db2latex не підтримує атрибут morerows - в таблицях неможливо об'єднувати осередки по вертикалі. До того ж стало ясно, що для доведення цього варіанту до розуму не обійтися без глибокого вивчення TeX / LaTeX.

Не в останню чергу джерелом проблем PDF є компанія Adobe - труднощі з підтримкою російської мови виникають мало не у всіх її продуктах: і в Photoshop, і у FrameMaker, і в Acrobat. Мабуть, серед програмістів в Adobe ще немає вихідців з колишнього СРСР. Ось що пише компанія з приводу Adobe Acrobat версії 6: «При створенні PDF з HTML-файлів текст, набраний кириличними шрифтами, замінюється неправильними символами або порожнечами». Іншими словами, не працює - і не повинно!

У підсумку ми прийшли до висновку, що єдиний простий і надійно працюючий варіант генерації PDF на російській мові - це Acrobat Distiller, який вміє включати використовувані шрифти в створюваний документ, що гарантує його прочитання на будь-якому комп'ютері, а не тільки на те, що оснащений російської версією Windows.

Для технічного письменника

Традиційно під документацією в першу чергу цей бачили надрукований документ або книга. Але сьогодні документація в більшості випадків потрібно і в друкованому, і в електронному вигляді. Якщо у вас вже є документ, зверстаний для друку, то найпростіший (і універсальний) спосіб зробити його електронний варіант - скористатися Adobe Acrobat Distiller. Ви отримаєте PDF, який можна записати на компакт-диск або викласти на сайт. Однак PDF - не рідний для Internet формат. Ваші документи не стануть органічною частиною сайту і будуть дратувати користувача тривалої завантаженням, до них не вдасться прив'язати стандартне оформлення сайту (шапки, панелі, сервіси), в них утруднено використання посилань і пошук засобами сайту.

Концептуально підхід DocBook до випуску документації в декількох форматах є найбільш грамотним: вихідний текст, зовсім не прив'язаний до вихідного формату, і керовані параметрами програми генерації вихідних документів. У практичній реалізації завдання генерації HTML-документів вже вирішена, з PDF поки не цілком гладко, але все ж завдання теж вирішується.

Крім того, технічному письменникові необхідний сервіс: автоматична нумерація розділів, таблиць, малюнків, автоматичне формування змісту, переліку малюнків, алфавітного покажчика. З усіма цими завданнями DocBook справляється.

Для колективної роботи

Дуже технологічно, мінімум накладних витрат. Одночасно, не заважаючи один одному, над документом може працювати велика команда.

Контент, дизайн і структура

Єдине, що нас не влаштувало в роботі з DocBook, - це «хвости» SGML, які з'явилися в головному файлі для організації посилань на розділи документа. По-перше, кожен файл повинен бути згаданий двічі (один раз у визначенні, другий в розміщенні); але там, де дублювання, з'являються помилки. По-друге, робота зі складними структурами організована неадекватно. У розглянутому прикладі всього два фрагмента, реальні ж документи на програмні продукти можуть складатися з сотень фрагментів при значній глибині вкладеності розділів. Виникає природне бажання зробити структуру більш наочною. Але як найбільш наочно відобразити ієрархічну структуру, якою є документ DocBook? Очевидно, ієрархією каталогів.

Тому ми реалізували наступну схему роботи з розгалуженими документами DocBook. Під розділ будь-якого рівня створюється окремий каталог. Вміст розділу поміщається в XML-файл, що лежить в цьому каталозі, а для вкладених підрозділів створюються свої підкаталоги. Збірка фрагментів здійснюється автоматично нескладної програмою, написаної на shell і XSLT. Правильний порядок проходження розділів досягається за допомогою явного атрибута «nr» в тегах. SGML-декларації стають непотрібними.

Остання є важливим з точки зору не стільки технологічної (в кінці кінців, з дублюванням назв розділів можна було б впоратися), скільки концептуальної. Якщо необхідність поділу контента і дизайну - це більш-менш загальне місце, то ми пішли далі і домоглися поділу контента, дизайну і структури.

тотальне документування

XML-стратегія

DocBook ґрунтується на технологіях XML. Чи треба боятися, якщо ці технології для вас новиною? На нашу думку, XML заслуговує того, щоб кожної ІТ-компанії сформувати по відношенню до нього власну стратегію використання. XML - не данина моді, хоча і не паличка-виручалочка. Це ефективне рішення для широкого кола завдань, які до сих пір погано піддавалися автоматизації. Комп'ютери давно вже пристосували до зберігання і обробки, з одного боку, жорстко структурованих і об'ємних даних, а з іншого - слабоструктурованої інформації, такої як текстові документи. Сила ж XML полягає в тому, що він дозволяє ефективно організовувати і обробляти квазіструктурірованную інформацію: специфікації і API; вимоги замовника та сценарії використання; тестові дані і сценарії; поширені запитання; навчальні курси з лекціями, прикладами і тестами. Подібна інформація, як правило, являє собою колекцію об'єктів з однаковою структурою верхнього рівня і текстовими описами на нижніх рівнях. На відміну від подання такої інформації у вигляді тексту, XML дозволяє відобразити структуру. З іншого боку, у порівнянні з базами даних XML має набагато більшу гнучкість, при тому що обсяги інформації тут невеликі і міць СУБД не потрібно. Є маса прикладів успішного використання DocBook в подібних завданнях. Наприклад, навчальна лекція представляється у вигляді одного XML-файла, з якого автоматично формуються: слайди для лектора; роздаткові матеріали для студентів; тестові дані для лабораторної роботи; екзаменаційні завдання, питання і тести.

Таким чином, для технологічно просунутих компаній DocBook стане органічним доповненням вже використовуваних XML-додатків, а для інших - технологічним доробком, який сприятиме впровадженню XML.

Анатолій Бєлайчук ([email protected]), Марія Ніколаєва ([email protected]), Надія Матвєєва ([email protected]), Станіслав Фрідкін ([email protected]) - співробітники компанії «Бізнес-Консоль» (Москва) .

стандарт DocBook

Матеріальне втілення DocBook - це XML-схеми (DTD) і скрипти (DSSSL, XSLT). Вони поширюються вільно: їх дозволяється використовувати з будь-якими цілями, модифікувати і тиражувати без обмежень і спеціального дозволу. Єдине, що забороняється відповідно до духу спільноти Open Source - це обмежити інших у вільному використанні і поширенні DocBook або його модифікацій.

Стандартом в популярному викладі DocBook служать керівництва [1, 2], де проведена «селекція»: вихідні приблизно 400 тегів зведені до 100 найбільш вживаним (швидше за все і це багато більше, ніж реально знадобиться). Для настройки XSLT-інструментарію і параметрів, що впливають на вид вихідних документів, вам знадобиться керівництво [3] і довідник [4].

література
  1. Norman Walsh, Leonard Muellner. DocBook: The Definitive Guide (www.docbook.org).
  2. Norman Walsh. Simplified DocBook: The Definitive Guide (www.docbook.org).
  3. Bob Stayton. DocBook XSL: The Complete Guide (www.sagehill.net/docbookxsl).
  4. Norman Walsh, Bob Stayton, Jirka Kosek DocBook XSL Stylesheet Reference Documentation (docbook.sourceforge.net/release/xsl/ current / doc / reference.html).

DocBook Website

Нове застосування DocBook - створення Web-сайтів. Ідея полягає в наступному: користуючись тегами DocBook, можна створити по одному XML-файлу на кожну сторінку сайту (кореневої тег) плюс один XML-файл, який містить зміст. Потім ці файли обробляються за допомогою XSL-скриптів, отримуючи на виході набір HTML-сторінок, складових сайт.

В ході генерації до кожної сторінки автоматично підверстується панель з ієрархічним змістом сайту, пункти якого можна згортати і розгортати. Також автоматично в змісті виділяються нові і змінені сторінки. Примітно, що посилання між сторінками сайту оформляються не з допомогою звичних, а за допомогою тега docbook. Це гарантує, що всі внутрішні посилання на результуючому сайті будуть коректними.

Основна перевага цієї технології, як і DocBook в цілому, - послідовне відділення контенту від дизайну. Скажімо, сайти www.docbook.org. www.docbook.ru. зроблені за цією технологією, виглядають по-академічному строго. Але, скориставшись стандартними прийомами настройки DocBook, можна радикально міняти дизайн і верстку свого сайту, абсолютно не зачіпаючи при цьому його контент.

Поділіться матеріалом з колегами і друзями

Запрошення Говарда Рейнгольда в якості гостя чергового випуску «Відкритих систем» для мене має особливий сенс. Так сталося, що ми з ним непогано знайомі; я багато років беру участь в створеному

Експоненціальне зростання Мережі, про? Якому все, звичайно, чули, не може тривати вічно, інакше нас просто чекає інформаційний колапс. Обсяг накопиченої інформації вже зараз такий великий, що «топить» результати пошуку по Internet.

Аналітичні програми стають сьогодні основним засобом підвищення ефективності роботи підприємств

Схожі статті