SGML Docbook

Материал из свободной русской энциклопедии «Традиция»
Перейти к навигации Перейти к поиску

DocBook — приложение SGML или XML (проще говоря — популярный набор тэгов), предназначенное для разметки документов, такое же, как HTML для разметки веб-документов. Но в отличие от HTML, Docbook не предоставляет информацию о визуальном представлении документа. Преобразованием Docbook документа в форматы, доступные для печатного или просто визуального представления занимаются различные утилиты, обычно осуществляющие такое преобразование на основе настраиваемых шаблонов, т. е. происходит настоящая изоляция структуры документа от визуального представления.

История[править | править код]

Docbook был рожден в 1991 году (первоначально — для облегчения переноса troff-меченой UNIX-документации), и, в разное время, развивался и поддерживался различными организациями:

1991-1994
HaL Computer Systems и O'Reilly & Associates (+большое влияние Novell и Digital).
1994-1998
Davenport Group (+большое влияние Novell и Sun). Эпоха расцвета Docbook.
1998-
OASIS. Разработка официальных DocBook SGML V4.1 и DocBook XML V4.1.2. С 2001 года длиться разработка DocBook V5.0 DTD.

Пример[править | править код]

Заголовок[править | править код]

Рассмотрим заголовок XML Docbook документа:

<code-xml>

<?xml version='1.0' encoding="windows-1251"?>
<!DOCTYPE book PUBLIC "-//OASIS//DTD DocBook V5.0/EN"
               "http://www.oasis-open.org/docbook/xml/5.0/docbook.dtd" [
<!ENTITY nwalsh "Norman Walsh">
<!ENTITY chap1 SYSTEM "chap1.sgm">
<!ENTITY chap2 SYSTEM "chap2.sgm">

]> </code-xml>

Документ в формате SGML Docbook будет абсолютно такой же, только без первой строчки (XML-декларации). Вообще XML—версия Docbook более строгая, но более легкая в понимании и изучении. Так как XML также является SGML—приложением, все программые средства SGML могут быть использованы. Основное различие между SGML и XML версиями состоит в следующем (применимо для всех XML — приложений):

  • XML элементы должны быть всегда закрыты.
  • XML элементы должны иметь правильную вложенность.
  • значения атрибутов должны быть обязательно в кавычках.
  • Это означает, что вы не можете использовать <BR> как в HTML, вы должны использовать <BR></BR>. Второе требование означает, что вы не можете использовать следующую конструкцию :
<B><A HREF="some_url">click here</B></A>

вы должны использовать правильную вложенность:

<B><A HREF="some_url">click here</A></B>.

Итак, заголовок состоит из

  1. XML-декларации
  2. Ссылки на DTD Docbook (соответствующей версии).
  3. Внутреннего подмножества (Internal Subset) — то что находится внутри квадратных скобок. Там определяются все entity (объекты или подстановки), раскрывающиеся в литералы или содержимое файлов.

Комментарии[править | править код]

Комментарии оформляются стандартно для SGML синтаксиса (и следовательно XML-синтаксиса), и встречаться где угодно, после декларации и внутреннего подмножества, (исключая содержимое литералов и блоков сырых данных):

<code-xml>

<title>Приложение глазами пользователя</title>                                            
&lib-app-struct.sgm;              
&lib-app-interface-forms.sgm;     
&lib-app-interface-usage.sgm;     
&lib-app-interface-database.sgm;  

</code-xml>

Корневой элемент[править | править код]

За заголовком (если не рассматривать возможные комментарии) должен идти корневой элемент, «book» или «set».

Идентификаторы, публичные и системные, каталог-файлы[править | править код]

Ссылку из документа на DTD или другой внешний файл можно оформить

  • через системный идентификатор (system identifier), обычно трактуемый как имя файла (в SGML), или, как в XML, URI-некоторого ресурса
  • или публичный идентификатор (public identifier), который должен внести некоторую степень косвенности в связь документа и его ссылки (как правило на DTD), т. е. освободить документ от необходимости (для целостности) сопровождать себя декларацией.

В XML-версии, обязательно предоставлять системный идентификатор (даже если есть публичный).


Публичные идентификаторы должны быть алфавитноцифровыми, и могут содержать

' ( ) + , - . / : = ?

а также пробелы и переводы строки. Главное — они должны быть глобально уникальными. Поэтому, принято использовать формальные публичные идентификаторы (Formal public identifiers, FPI), предложенные стандартом ISO 8879, правило формирования которых должно обеспечивать их уникальность:

prefix//owner-identifier//
text-class text-description//
language//display-version

где:

prefix
«+» или «-», в зависимости от того, зарегистрирован ли этот идентификатор или нет. Т.к. мало у кого есть право регистрировать публичные идентификаторы, большинство встречающихся публичных идентификаторов — незарегистрированы.
owner-identifier
Идентификатор владельца идентификатора — главное обеспечение уникальности. Если идентификатор не планируется официально регистрировать, то разумно сделать эту часть уникальной, основываясь например не на аббревиатуре организации, а на доменном имени, которое ей принадлежит.

Примеры:

+//ISO/IEC 9070/RA::A00002//...
+//IDN oreilly.com//...
-//OASIS//...
-//Davenport//...
-//IDN custis.ru//...
text-class
Тип документа. Наиболее распространенные типы:
DOCUMENT
SGML или XML документ
DTD
DTD
ELEMENTS
Набор деклараций SGML-элементов.
ENTITIES
Набор деклараций SGML-объектов (entities). A collection of entity declarations.
NONSGML
Данные не в SGML- (и соответственно не в XML-) формате.
text-description
Свободное текстовое описание (должно только не включать «//»).
language
Двухбуквенный ISO-код языка документа.
display-version
Описывает вариации документа для различных систем. Например для документа с FPI
-//ISO 8879-1986//ENTITIES Added Latin 1//EN
может быть XML-версия с FPI:
-//ISO 8879-1986//ENTITIES Added Latin 1//EN//XML

Отображение с публичных идентификаторов (включая формальные) на системные идентификаторы, должно происходить посредством каталог-файлов. Стандарт на SGML-catalog файлы находится здесь — OASIS Technical Resolution 9401:1997, а стандарт «XML Catalog» пока еще не готов.

Файловая (физическая) структура документа[править | править код]

Документ можно легко разделить на несколько файлов, с использованием объектов-подстановок (entities) следующим очевидным образом:

<code-xml>

 <!DOCTYPE BOOK PUBLIC "-//OASIS//DTD DocBook V3.1//EN" [
   <!ENTITY intro.sgm SYSTEM "intro.sgm">
   <!ENTITY sgml.sgm SYSTEM  "sgml.sgm">
   <!ENTITY db.sgm SYSTEM "db.sgm">
   <!ENTITY lib-sql.sgm SYSTEM "lib-sql.sgm">
   <!ENTITY lib-tools.sgm SYSTEM "lib-tools.sgm">
 ]>
 <book id="lib-book-tech" lang="ru"><title>Технологии разработки</title>
   &intro.sgm;           
   &sgml.sgm;            
   &db.sgm;              
   &lib-sql.sgm;         
   &lib-tools.sgm;       
 </book>

</code-xml> Обратите внимание, что включаемые файлы, содержащие части документа, не должны содержать никаких заголовков или деклараций — файл intro.sgm: <code-xml>

<preface ID="intro" revision="$Date: 2001/12/27 14:25:13 $">
  <title>Структура документа</title>
  <abstract><para>Данная книга содержит информацию 
        о применяемых технологиях разработки проектов и
        предназначена для использования в качестве справочника по ним.</para>
  </abstract>
</preface>

</code-xml> Можно отделить и автоматизировать процесс декларации Docbook-файлов в виде entities, например написав скрипт, который для всего каталога генерирует файл !filelist (рекурсивно включающий файлы !filelist из подкаталогов):

  <!ENTITY % subdirectory1.fl SYSTEM "subdirectory1\!file-list">
  %subdirectory1.fl;
  <!ENTITY % subdirectory2.fl SYSTEM "subdirectory2\!file-list">
  %subdirectory2.fl;
  <!ENTITY intro.sgm     SYSTEM "intro.sgm">
  <!ENTITY sgml.sgm      SYSTEM  "sgml.sgm">
  <!ENTITY db.sgm        SYSTEM "db.sgm">
  <!ENTITY lib-sql.sgm   SYSTEM "lib-sql.sgm">
  <!ENTITY lib-tools.sgm SYSTEM "lib-tools.sgm">

Сам документ при этом становиться неизменным, и в нем, с помощью entities можно включать все файлы из каталога документа и его подкаталогов: <code-xml>

 <!DOCTYPE BOOK PUBLIC "-//OASIS//DTD DocBook V3.1//EN" [
    <!ENTITY % file-list SYSTEM "!file-list">
    %file-list;
 ]>
 <book id="lib-book-tech" lang="ru"><title>Технологии разработки</title>
   &intro.sgm;           
   &sgml.sgm;            
   &db.sgm;              
   &lib-sql.sgm;         
   &lib-tools.sgm;       
 </book>

</code-xml>

Логическая структура документа[править | править код]

Элементы Docbook можно разделить на

структурные
книги, разделы, секции и т. п.
блочные
различные списки и параграфы.
строчные
форматирование внутристрочных элементов.
метаэлементы
вспомогательные метаэлементы, «атрибутирующие» другие элементы. В версии Docbookа 5.0, все такие элементы должны содержаться в метаэлементе Шаблон:Docbook

Вложенность структурных элементов удобно наблюдать на следующей (гипертекстовой) диаграмме: У параметра json недопустимое значение digraph G{

 rankdir=LR; ranksep=0.3;
 edge[arrowtail="none",arrowhead="crow"];
 set [URL="#set"]; 
 book [URL="#book"]; 
 part [URL="#part"]; 
 reference [URL="#reference"]; 
 article [URL="#article"]; 
 chapter [URL="#chapter"]; 
 section [URL="#section"]; 
 sect1 [URL="#section"]; 
 sect2 [URL="#section"]; 
 simplesect [URL="#simplesect"]; 
 set -> book;
 book -> chapter;
 book -> part;
 book -> reference;
 book -> article;
 book -> appendix;

 part -> article; 
 part -> chapter; 
 part -> appendix; 
 article -> section;
 chapter -> section;
 section -> section;
 chapter -> sect1 -> sect2;
 section -> simplesect;

}.

set[править | править код]

Самый верхний элемент docbook. Он может включать две или более связанных book, которые могут содержать ссылки («xref», «link») друг на друга (например, комплект документации по программному продукту, включающему «техническое задание», «руководство пользователя», «руководство системного администратора» и «руководство программиста»).

book[править | править код]

«Книга» — наиболее распространенный корневой элемент.

part[править | править код]

Раздел уровня выше чем глава.

reference[править | править код]

Справочник, т. е. набор справочных статей (вида «Unix Man» статей).

article[править | править код]

Статья общего вида (конкретный тип статьи специфицируется с помощью атрибутов).


chapter[править | править код]

Глава (верхнего уровня). Обязательно должен быть между «book» и «section».

section[править | править код]

Раздел. Разделы можно неограничено и гибко вкладывать друг в друга с помощью «section», либо использовать вложение элементов-разделов фиксированных уровней:

sect1 / sect2 / sect3 / sect4 / sect5

simplesect[править | править код]

Терминальный (листовой) раздел. Раздел этого уровня не должен попадать в «Содержание» (Table of Contents).

Блочные элементы[править | править код]

Блочные элементы находяться ниже уровня структурных элементов, по сути, это элементы уровня параграфов: списки, замечания, синопсисы, таблицы, рисунки и т. п.

Списки[править | править код]

Шаблон:Docbook
Список сносок и их описаний.

<code-xml>

<programlisting>
  print "hello world"  <co id="co1-op1">
  call do_work("yes")  <co id="co1-op2">
  return 1             <co id="co1-op3">
  <calloutlist>
     <callout arearefs="co1-op1"><para>Оператор print, выводит строку на консоль</para></callout>
     <callout arearefs="co1-op2"><para>Пример вызова функции.</para></callout>
     <callout arearefs="co1-op3"><para>Дальше могут идти другие операторы.</para></callout>
  </calloutlist>
</programlisting>

</code-xml>

Шаблон:Docbook
Список библиографических ссылок.
Шаблон:Docbook
Список терминов (например, в глоссарии) и их определений.

<code-xml> <glossdiv>

  <glossentry>
   <glossterm id="db--association">ассоциированный объект</glossterm>            
   <glossdef><para>Объекты которые каким-либо образом связаны с другим объектом, 
     который в данный момент рассматривается как текущий. 
     Например: <quote>все неоплаченные требования к контрагентам данного менеджера</quote>. 
   </para></glossdef>
   </glossentry>

</glossdiv> </code-xml>

Шаблон:Docbook
Ненумерованный (маркированный) список.

<code-xml>

Процедура может работать в следующих режимах (значение параметра         <literal>a_regim</literal>).      
 <itemizedlist mark="bullet" spacing="compact">
    <listitem><para><systemitem>do</systemitem>; </para></listitem>
    <listitem><para><systemitem>undo</systemitem>; </para></listitem>
    <listitem><para><systemitem>redo</systemitem>. </para></listitem>
 </itemizedlist>         

</code-xml>


Шаблон:Docbook
Нумерованный список.

<code-xml>

   Могут быть разные причины того, что подсистема не предоставляет доступа к системе:
   <orderedlist>
     <listitem><para>неверно указан адрес страницы internet,
          в результате чего фактически выполняется обращение к другой,
          также закрытой странице;</para></listitem>
     <listitem><para>ошибка (опечатка) во введенном пароле 
           - необходимо еще раз внимательно ввести пароль;</para></listitem>
     <listitem><para>ошибка во введенном пароле может заключаться в том, 
           что пользователь не переключил шрифт с русского на латинский или наоборот,
          а также режим ввода больших букв - необходимо проверить режим работы клавиатуры.
     </para></listitem>
   </orderedlist>

</code-xml>

Шаблон:Docbook
Список для определения нескольких определенных параметров для разных обьектов. Например:

<code-xml>

   <segmentedlist>
     <segtitle>Разработчик</segtitle>
     <segtitle>Платформа</segtitle>
     <segtitle>Язык</segtitle>
     <seglistitem>
       <seg>Macrosoft</seg>
       <seg>Win32</seg>
       <seg>C++</seg>
     </seglistitem>
     <seglistitem>
       <seg>ЗИС</seg>
       <seg>Linux</seg>
       <seg>Python</seg>
     </seglistitem>
   </segmentedlist>

</code-xml>

Шаблон:Docbook
Самый простой (без сложного оформления), список. Может быть даже строчным, или построенным по колонкам.

<code-xml>

         <emphasis role="bold">Методы наследованные от java.lang.Object</emphasis>: 
         <simplelist type="inline">
           <member><literal>hashCode</literal></member>
           <member><literal>finalize</literal></member>
           <member><literal>notify</literal></member>
           <member><literal>notifyAll</literal></member>
           <member><literal>registerNatives</literal></member>
           <member><literal>wait</literal></member>
           <member><literal>getClass</literal></member>
           <member><literal>clone</literal></member>
           <member><literal>equals</literal></member>
           <member><literal>toString</literal></member>
         </simplelist>

</code-xml>

Шаблон:Docbook
Список терминов и их определений.

<code-xml> <variablelist><title>Входы пакета pk_name</title>

 <varlistentry>
   <term>name_short(a_name)</term>
   <listitem><para>Принимает необработанное название и возвращает его 
     <systemitem>краткую форму нормализованного названия</systemitem>.           
   </para></listitem>
 </varlistentry>
 <varlistentry>
   <term>name_trans(a_name)</term>
   <listitem><para>Принимает <systemitem>полную форму нормализованного названия</systemitem>
       и возвращает  <systemitem>краткую форму нормализованного названия</systemitem>.           
   </para></listitem>
 </varlistentry>
 <varlistentry>
   <term>name_full(a_name)</term>
   <listitem><para>Принимает необработанное название и возвращает его 
     <systemitem>полную форму нормализованного названия</systemitem>.           
   </para></listitem>
 </varlistentry>
</variablelist>

</code-xml>

Замечания[править | править код]

На самом деле, семантика разного типа заметок не сильно определена, и в основном, выбор типа заметки определяется или корпоративными правилами, или ожидаемым форматированием (например, разные типы заметок могут форматироваться блоками с разными графическими значками-предупреждениями).

Шаблон:Docbook
Предостережение. Как правило, связанное с действиями техники, чем с действиями людей (для чего предназначен «warning»).

<code-xml>

<сaution><para>Наверняка есть другие источники информации,  а также другая поступающая информация. 
         Так что этот список нуждается в расширении и доработке.
</para></сaution>

</code-xml>

Шаблон:Docbook
Важно!

<code-xml>

<important><para>При загрузке все нулевые значения отрезаются и не вводятся!</para></important>

</code-xml>

Шаблон:Docbook
Замечание, пометка.

<code-xml>

     <note><para>Этот размер различен для различных операционных систем и определяется
       для каждой из них отдельно.
     </para></note>

</code-xml>

Шаблон:Docbook
Совет, подсказка.

<code-xml>

  <tip><para>Каждый вопрос имеет ответ по умолчанию, который принимается 
         при нажатии кнопки <interface>Enter</interface>.</para></tip> 

</code-xml>

Шаблон:Docbook
Предостережение, скорее относящееся к действиям пользователя (а не к свойствам оборудования или софта — это «caution»).

<code-xml>

<warning><para><emphasis>Нельзя</emphasis> получать новые версии файлов другим путем, кроме 
  как выполнением команд <systemitem>update</systemitem> или
  <systemitem>checkout</systemitem>. Копирование новых версий файлов 
  с другого компьютера может привести к потере данных!
</para></warning>

</code-xml>

Специальные блоки[править | править код]

Шаблон:Docbook
Почтовый адрес.
Шаблон:Docbook
Преформатированный блок (без всякой семантики).
Шаблон:Docbook
Преформатированное окружение для текстов (или фрагментов текстов) программ или иных кодовых блоков (например, SQL-запросов).

<code-xml>

 <programlisting>
  delete from tsum_sub s1 -- нулевые суммы там, где нет ненулевых
     where s1.s_money = 0
         and not exists (select 1 from tsum_sub s2
                   where  s2.cod_pl = s1.cod_pl
                      and s2.cod_u = s1.cod_u
                      and s2.s_money ≠ 0 );
  </programlisting>

</code-xml>

Шаблон:Docbook
Преформатированное окружение для различных ASCII-фрагментов, типа вывода текстовой консоли или «текстового скриншота» с telnet-интерфейса.
Шаблон:Docbook
Специальное окружение для элемента «Graphic», который и включает скриншот.
Шаблон:Docbook
Преформатированный блок для синопсиса вызова функций и команд.

<code-xml>

               <synopsis>
                   cvs add -kb <replaceable>имя файла</replaceable>
               </synopsis>

</code-xml>

Таблицы, рисунки, примеры[править | править код]

Версии элемента с префиксом «informal», означают отсутствия вложенного элемента «title» (заголовка).

Шаблон:Docbook, Шаблон:Docbook
Пример (чего-либо).

<code-xml> <example id="exmp-xforms-request"><title>Пример XForms-спецификации</title>

  <programlisting width="80"><![CDATA[<?xml version="1.0" encoding="windows-1251"?>
  <xform:xform>
  <xform:input ref="accNumber">
   <xform:caption>Учетный номер</xform:caption>
  </xform:input>
  <xform:input ref="releaseDate">
    <xform:caption>Дата выпуска</xform:caption>
  </xform:input>
   ...
  </xform:xform>

]]></programlisting> </example> </code-xml>

Шаблон:Docbook, Шаблон:Docbook
Окружение для картинок/рисунков.

<code-xml>

 <figure id="lib-cis-structure-pict">
   <title>Структура компонентов cis-forms</title>
   <graphic entityref="interface-structure.gif " align=center scale=100></graphic>
 </figure>

</code-xml>

Шаблон:Docbookold,Шаблон:Docbookold
Таблица.

<code-xml>

<title>Автопрепроцессирование</title> <tgroup cols="5" align="left"> <colspec colnum="1" colname=c1 colwidth=4cm > <colspec colnum="2" colname=c2 colwidth=4cm> <thead> <row><entry>sgml-таг</entry><entry>html-таг</entry></row> </thead> <tbody> <row><entry>para </entry><entry>p align="justify" </entry></row> <row><entry>listitem </entry><entry>li </entry></row> <row><entry>listitem </entry><entry>li </entry></row> <row><entry>orderedlist </entry><entry>ol </entry></row> <row><entry>orderedlist </entry><entry>ol </entry></row> <row><entry>itemizedlist </entry><entry>ul </entry></row> <row><entry>itemizedlist </entry><entry>ul </entry></row> <row><entry>systemitem </entry><entry>em </entry></row> <row><entry>systemitem </entry><entry>em </entry></row> <row><entry>literal </entry><entry>code </entry></row> <row><entry>literal </entry><entry>code </entry></row> </tbody> </tgroup>

</code-xml>

Параграфы[править | править код]

Шаблон:Docbook
Обычный параграф.
Шаблон:Docbook
Абзац с заголовком (включает элемент «title»).
Шаблон:Docbook
Упрощенный параграф (не может включать других блочных элементов).

Уравнения[править | править код]

Есть элементы Шаблон:Docbook, Шаблон:Docbook и Шаблон:Docbook. Следует отметить, что в Docbook практически нет средств описания математических формул, но со временем можно ожидать поддержки MathML в XML-версии Docbook.

<code-xml> <equation><title>Fermat's Last Theorem</title>

 <mathphrase>x<superscript>n</superscript>
             + y<superscript>n</superscript>
              ?z<superscript>n</superscript>
              ? n ? 2</mathphrase>

</equation> </code-xml>

Графика и другие медиафрагменты[править | править код]

Для рисунков, которые вкладываются внутрь блочных окружений типа Шаблон:Docbook ранее использовался элемент «graphic», а для внутристрочных картинок (вероятно, небольших значков) — элемент «inlinegraphic» <code-xml>

     <para>Вызывается из пункта меню <literal>Правка/Добавить</literal>,
     или на панели инструментов кнопка <inlinegraphic entityref="insert.gif"></inlinegraphic>
     или клавиша <literal>shift+F4</literal>.

</code-xml>

Для вставки произвольных медиафрагментов в версии Docbook 5.0 нужно использовать использовать Шаблон:Docbook и Шаблон:Docbook.

Вопросы и ответы[править | править код]

Различные коллекции ответов на вопросы (в частности, FAQ) можно сделать с помощью элемента Шаблон:Docbookold, состоящего из элементов Шаблон:Docbookold и Шаблон:Docbookold.

Остальные блочные элементы[править | править код]

Шаблон:Docbook
Блок-цитата.

<code-xml>

<para>Copyright (C) 2000 Free Software Foundation, Inc. 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA Everyone is permitted to copy and distribute verbatim copies of this license document, but changing it is not allowed.</para>

</code-xml>

Шаблон:Docbook
Синопсис вызова команды.
Шаблон:Docbook
Синопсис вызова функции.
Шаблон:Docbook
Эпиграф.
Шаблон:Docbookold
Краткие тезисы или ключевые моменты содержимого главы или раздела.
Шаблон:Docbook
Набор сообщений об ошибках.
Шаблон:Docbook
Процедура. Формальное описание алгоритма.

<code-xml>

  <procedure><title>Алгоритм pkb_prim_control.create_procedure </title>
     <step><para>Проверяем SQL-запрос заданного формата на синтаксис.</para></step> 
     <step><para>Формируем текст процедуры первичного контроля.</para></step> 
     <step><para>Создаем процедуру с полученным текстом но с именем F_TEST_LOAD. </para></step> 
     <step><para> Проверяем созданную процедуру на ошибки. </para></step> 
     <step><para> Создаем настоящую процедуру с именем PRIM_LOAD_[название формата]. </para></step> 
     <step><para> Выдаем на созданную процедуру грант схеме DIC на выполнение. </para></step> 
 </procedure>

</code-xml>

Шаблон:Docbook
Блок текста выделенный рамкой.

<code-xml>

<sidebar>
   <para>Абзац может быть выделен рамкой.</para>
</sidebar>

</code-xml>

Общие атрибуты[править | править код]

Ниже представлен список атрибутов, общих для всех (или большинства) элементов и их значения.

Arch[править | править код]

Текстовая строка, специфицирующая компьютерную архитектуру, к которой применим Docbook элемент.

Condition[править | править код]

Общеполезная текстовая строка. Ее можно использовать произвольно, для настройки хитрых корпоративных регламентов сборки документов.

Conformance[править | править код]

Текстовая строка, означающая соответствие содержимого элемента каким-либо стандартам.

ID[править | править код]

Наиболее важный атрибут. Позволяет присвоить любому элементу уникальный (внутри документа) идентификатор, чтобы впоследствии ссылаться на него (элементами «xref», «link»). Должен начинаться с латинской буквы, содержать алфавитно-цифровые символы и «-». Вообще, содержимое должно удовлетворять требованиям к именам из SGML Declaration (например, длина идентификатора ограничена NAMELEN).

Lang[править | править код]

Двухбуквенный код языка, по ISO 639. Дополнительно, после «-» можно использовать код страны (ISO 3166). Например, «ru», «ru-RU», «en-US». Может использоваться при формировании выходного документа для выбора правил переноса и форматирования параграфов.

OS[править | править код]

Текстовая строка, описывает операционную систему, к которой применим элемент и его содержимое.

Remap[править | править код]

Remap contains an element name or similar semantic identifier assigned to the content in a previous markup scheme.

Role[править | править код]

Текстовая строка для классификации (или подклассификации) элемента. Домен значений различный у различных элементов.

Revision[править | править код]

Текстовая строка, идентифицирующая ревизию (версию) содержимого элемента. Например, если исходные тексты находяться под управлением CVS, можно использовать

revision="$Id"

и тогда CVS сам подставит CVS-версию документа в значение атрибута.

RevisionFlag[править | править код]

Домен значений — (changed, added, deleted, off). Может использоваться для отслеживания изменения статуса документа, от одной версии к другой.

Security[править | править код]

Текстовая строка, определяющая уровень конфиденциальности элемента и его содержимого.

UserLevel[править | править код]

Текстовая строка, определяющая уровень компетентности пользователя, необходимый для понимания содержимого элемента. Например, так можно вести документы, содержащие в себе и обзорные части, направленные на обычных пользователей, и сложные технические разделы, предназначенные для экспертов.

Vendor[править | править код]

Текстовая строка опредедяющая «computer vendor»-а, относящегося к данному элементу.

XrefLabel[править | править код]

Текстовая строка, содержащая текст, который должен быть использован при подстановке в ссылке («XRef»), сделанной на этот элемент.

status[править | править код]

Атрибут содержит редакционный или издательский статус включаемого блока текста. Домен его значений не специфицирован, т. е. можно вводить произвольные значения. Например, использовать набор:

  • Черновик;
  • На утверждении;
  • Утверждено;
  • Автогенерация;

Cсылочные атрибуты[править | править код]

linkend[править | править код]

В нем указывается ID элемента, на который ссылаются.

Обработка Docbook-документов[править | править код]

У параметра json недопустимое значение digraph G{

 rankdir=LR; edge[fontsize=10pt,fontcolor=blue];
 "SGML Docbook"->"HTML Document"[label="openjade, dsssl stylesheets"];
 "SGML Docbook"->"RTF Document"[label="openjade, dsssl stylesheets"];
 "SGML Docbook"->"TeX Document"[label="openjade, dsssl stylesheets"];
 "TeX Document"->"PDF Document"[label="PDFTex"];
 "HTML Document"->"CHM Document"[label="Help Compiler",fontsize=10pt,fontcolor=blue];

}.

С помощью DocBook можно разметить несколько видов документов: заметки и книги и наборы книг.

DocBook имеет две реализации — SGML и XML. XML — версия более строгая, но более легкая в понимании и изучении. Так как XML также является SGML — приложением, все программые средства SGML могут быть использованы. Основное различие между SGML и XML версиями состоит в следующем (применимо для всех XML — приложений:

  • XML элементы должны быть всегда закрыты
  • XML элементы должны иметь правильную вложенность
  • Это означает, что вы не можете использовать <BR> как в HTML, вы должны использовать <BR></BR>. Второе требование означает, что вы не можете использовать следующую конструкцию :
<B><A HREF="some_url">click here</B></A>

вы должны использовать правильную вложенность:

<B><A HREF="some_url">click here</A></B>. 

Приведем пример документа в SGML Docbook формате: <code-xml>

<title>Справочник по препроцессору m4.</title> <Abstract>

   <para>
       В данной главе приведено справочное описание 
       макропроцессора <systemitem>m4</systemitem>, включая      
       формат вызова, синтаксис использования, встроенные макрокоманды.
   </para>
   <para>
   Здесь описана версия <systemitem>GNU m4</systemitem>, 
   отличающаяся от стандартного макропроцессора <link linkend="tetech-m4--m4"></link>,
   входящего в поставку большинства UNIX-систем, наличием большого числа функциональных расширений,
   открытостью и переносимостью кода (доступен под любые платформы).
   </para>

</Abstract>

&lib-m4-ref-desc.sgm; &lib-m4-ref-cmd.sgm;

</code-xml>

Ссылки[править | править код]



По крайней мере часть этого текста взята с ресурса http://lib.custis.ru/ под лицензией GDFL.Список авторов доступен на этом ресурсе в статье под тем же названием.