Часть II
Подробное описание формата FictionBook
§ 2.1 Структура файла FictionBook.
Базовые понятия
Книга FictionBook представляет собой XML-файл.
Структурно этот файл можно разделить на три части.
1) Desсription — заголовок (описание) книги;
2) Body — непосредственно текст книги. В книге может быть несколько body.
3) Binary — необязательная часть. Содержит бинарные файлы, в кодировке BASE64. [2.1] Как правило, это картинки.
§ 2.2 Пример книги в формате FictionBook
Cпецификация (schema) FictionBook находится на сайте Дмитрия Грибова, а также входит в комплект FB Tools. Поэтому размещать ее в электронной версии книги смысла нет.
Но пример книги в формате FictionBook привести необходимо:
<?xml version="1.0" encoding="windows-1251"?>
<FictionBook xmlns="http://www.gribuser.ru/xml/fictionbook/2.0" xmlns:l="http://www.w3.org/1999/xlink">
<description>
<title-info>
<genre>reference</genre>
<author>
<first-name>Имя автора</first-name>
<last-name>Фамилия автора</last-name>
<nickname>Юзич</nickname>
</author>
<book-title>Пример книги в формате FictionBook 2.1</book-title>
<annotation>
<p>Это пример книги в формате FictiionBook</p>
</annotation>
<date value="2006-04-14">14 апреля 2006 г.</date>
<lang>ru</lang>
</title-info>
<document-info>
<author>
<nickname>Юзич</nickname>
</author>
<program-used>FB Tools</program-used>
<date value="2006-04-14">2006-04-14</date>
<id>1E693E16-8A80-4391-9800-C1A91A5E29A7</id>
<version>1.0</version>
<history>
<p>v 1.0 — создание книги (Юзич)</p>
</history>
</document-info>
</description>
<body>
<title>
<p>Юзич</p>
<p>ПРИМЕР КНИГИ В ФОРМАТЕ FictionBook 2.1</p>
</title>
<epigraph>
<p>Это эпиграф</p>
<text-author>Автор эпиграфа</text-author>
</epigraph>
<section>
<title>
<p>Первая секция</p>
</title>
<p>Секции обычно содержат текст.</p>
<empty-line/>
<p>Текст может разделяться пустыми строками.</p>
<subtitle>Подзаголовок</subtitle>
<p>Или подзаголовками.</p>
</section>
<section>
<title>
<p>Вторая секция</p>
</title>
<section>
<title>
<p>Первая вложенная секция</p>
</title>
<p>Текст может быть <strong>полужирным</strong> или <emphasis>курсивным</emphasis>.</p>
<p>Содержать <a l:href="#Sect3">линки</a> и <a l:href="#note01" type="note">[сноски]</a>.</p>
<p>В тексте могут быть картинки.</p>
<image l:href="#sampl.png"/>
<empty-line/>
</section>
<section>
<title>
<p>Вторая вложенная секция</p>
</title>
<cite>
<p>Это цитата.</p>
<text-author>Автор цитаты.</text-author>
</cite>
<p>Снова текст.</p>
</section>
</section>
<section id="Sect3">
<title>
<p>Третья секция</p>
</title>
<p>Стихи:</p>
<poem>
<title>
<p>Парус</p>
</title>
<stanza>
<v>А у дельфина взрезано брюхо винтом.</v>
<v>Выстрела в спину не ожидает никто.</v>
<v>На батарее нету снарядов уже.</v>
<v>Надо быстрее на вираже.</v>
</stanza>
<stanza>
<v>Но парус! Порвали парус!</v>
<v>Каюсь! Каюсь! Каюсь!</v>
</stanza>
<text-author>Владимир Высоцкий</text-author>
</poem>
<p>Снова обычный текст.</p>
</section>
</body>
<body name="notes">
<title>
<p>Примечания</p>
</title>
<section id="note01">
<title>
<p>1</p>
</title>
<p>Текст сноски.</p>
</section>
</body>
<binary id="sampl.png" content-type="image/png">iVBORw0KGgoAAAANSUhEUgAAAAkAAAAICAMAAAAcEyWHAAAABGdBTUEAAK/INwWK6QAAABl0
RVh0U29mdHdhcmUAQWRvYmUgSW1hZ2VSZWFkeXHJZTwAAAAGUExURQEBAf///+tZAq0AAAAY
SURBVHjaYmBAAEZGRjDGzsKvDgYAAgwABR4AH2mwMFgAAAAASUVORK5CYII=</binary>
</FictionBook>
§ 2.3 Элементы описания книги.
Базовые структурные элементы
В самом начале любого файла книги идет признак формата XML
<?xml version="1.0" encoding="windows-1251"? >
Здесь указана сигнатура принадлежности к формату XML, его версия и кодировка файла. Для русскоязычных FictionBook это обычно windows-1251 или utf-8. [2.2]
За ним в обязательном порядке следует:
Корневой элемент.
Cинтаксис : <FictionBook >content</FictionBook >.
Фактически, всегда используется в виде:
<FictionBook xmlns=" http://www.gribuser.ru/xml/fictionbook/2.0 " xmlns:l=" http://www.w3.org/1999/xlink " >
content
</FictionBook >.
Используется в элементах : корневой элемент
Вложенные элементы : stylesheet , description , body , binary
Количество вхождений : одно
Атрибуты : xmlns
Версия формата : 2.0
Пример : см. пример книги FictionBook, § 2.2
Список стилей, позволяющих конкретно определить, как будет выглядеть книга на экране устройства для чтения. До последнего времени читалками не поддерживался и практически не использовался. Лишь в конце 2007 года появился CoolReader 3.09 с экспериментальной поддержкой stylesheet.
Cинтаксис : <stylesheet >content</stylesheet >.
Используется в элементах : FictionBook
Вложенные элементы : нет
Количество вхождений : одно или отсутствует.
Атрибуты : type
Версия формата : 2.0
Пример :
<stylesheet type="text/css">
.body{font-family : Verdana, Geneva, Arial, Helvetica, sans-serif;}
.p{margin:0.5em 0 0 0.3em; padding:0.2em; text-align:justify;}
</stylesheet>
Заголовок (описание) книги.
Cинтаксис : <description >content</description >.
Используется в элементах : FictionBook
Вложенные элементы : title-info , src-title-info , document-info , publish-info , custom-info , output
Количество вхождений : одно
Атрибуты : нет
Версия формата : 2.0
Пример :
<description>
<title-info>
<genre>nonfiction</genre>
<author>
<first-name>Имя автора</first-name>
<last-name>Фамилия автора</last-name>
</author>
<book-title>Название книги</book-title>
<date>2007 г.</date>
<lang>ru</lang>
</title-info>
<document-info>
<author>
<nickname>Юзич</nickname>
</author>
<program-used>FB Tools</program-used>
<date value="2006-07-10">2006-07-10</date>
<id>46C35002-014D-4AE4-8FE4-5E7881D72B0D</id>
<version>1.0</version>
</document-info>
</description>