Описание формата FB2 от Sclex
Материал из FictionBook.
Версия 19:56, 7 июля 2006 Sclex (Обсуждение | вклад) Общая структура документа ← К предыдущему изменению |
Версия 19:57, 7 июля 2006 Sclex (Обсуждение | вклад) Первая строка документа К след. изменению → |
||
Строка 128: | Строка 128: | ||
</pre> | </pre> | ||
- | === Первая строка документа === | ||
- | |||
- | Первая строка FB2-документа имеет следующий стандартный для xml-файлов вид: | ||
- | |||
- | <pre><?xml version="1.0" encoding="windows-1251"?></pre> | ||
- | |||
- | Свойство encoding задает кодировку документа, в нашем случае это windows-1251. А может быть, например, utf-8. | ||
=== Раздел FictionBook === | === Раздел FictionBook === |
Версия 19:57, 7 июля 2006
FB2-файл - это файл XML
FB2-документ является файлом в формате XML.
XML (англ. Extensible Markup Language — расширяемый язык разметки; произносится [икс-эм-э́л]) — рекомендованный Консорциумом Всемирной паутины язык разметки, фактически представляющий из себя свод общих синтаксических правил. XML предназначен для хранения структурированных данных, для обмена информацией между программами, а также для создания на его основе более специализированных языков разметки (например, XHTML), иногда называемых словарями.
Ниже приведён пример простого кулинарного рецепта, размеченного с помощью XML:
<?xml version="1.0" encoding="UTF-8"?> <Recipe name="хлеб" prep_time="5 мин" cook_time="3 час"> <название>Простой хлеб</название> <ingredient amount="3" unit="стакан">Мука</ingredient> <ingredient amount="0.25" unit="грамм">Дрожжи</ingredient> <ingredient amount="1.5" unit="стакан">Тёплая вода</ingredient> <ingredient amount="1" unit="чайная ложка">Соль</ingredient> <Instructions> <step>Смешать все ингредиенты и тщательно замесить.</step> <step>Закрыть тканью и оставить на один час в тёплом помещении.</step> <step>Замесить ещё раз, положить на противень и поставить в духовку.</step> </Instructions> </Recipe>
Обратите внимание, что названия и значения элементов и атрибутов могут состоять не только из букв латинского алфавита, но десятичным разделителем может быть только точка.
Первая строка XML-документа называется объявлением XML — это необязательная строка, указывающая версию стандарта XML (обычно это 1.0), также здесь может быть указана кодировка символов и внешние зависимости.
Остальная часть этого XML-документа состоит из вложенных элементов, некоторые из которых имеют атрибуты и содержимое. Элемент обычно состоит из открывающего и закрывающего тегов (меток), обрамляющих текст и другие элементы. Открывающий тег состоит из имени элемента в угловых скобках, например «<step>
»; закрывающий тег состоит из того же имени в угловых скобках, но перед именем ещё добавляется косая черта, например «</step>
». Содержимым элемента называется всё, что расположено между открывающим и закрывающим тегами, включая текст и другие (вложенные) элементы. Ниже приведён пример XML-элемента, который содержит открывающий тег, закрывающий тег и содержимое элемента:
<step>Замесить ещё раз, положить на противень и поставить в духовку.</step>
Кроме содержания у элемента могут быть атрибуты — пары имя-значение, добавляемые в открывающий тег после названия элемента. Значения атрибутов всегда заключаются в кавычки (одинарные или двойные), одно и то же имя атрибута не может встречаться дважды в одном элементе. Не рекомендуется использовать разные типы кавычек для значений атрибутов одного тега.
<ingredient amount="3" unit="стакан">Мука</ingredient>
В приведённом примере у элемента «ingredient» есть два атрибута: «amount», имеющий значение «3», и «unit», имеющий значение «стакан». С точки зрения XML-разметки, приведённые атрибуты не несут никакого смысла, а являются просто набором символов.
Кроме текста элемент может содержать другие элементы:
<Instructions> <step>Смешать все ингредиенты и тщательно замесить.</step> <step>Закрыть тканью и оставить на один час в тёплом помещении.</step> <step>Замесить ещё раз, положить на противень и поставить в духовку.</step> </Instructions>
В данном случае элемент «Instructions» содержит три элемента «step». XML не допускает перекрывающихся элементов. Например, приведённый ниже фрагмент некорректен, так как элементы «em» и «strong» перекрываются.
<!-- ВНИМАНИЕ! Некорректный XML! --> <p>Обычный <em>акцентированный <strong>выделенный и акцентированный</em> выделенный</strong></p>
Каждый XML-документ должен содержать в точности один корневой элемент или document element), таким образом, следующий фрагмент не может считаться корректным XML-документом.
<!-- ВНИМАНИЕ! Некорректный XML! --> <thing>Cущность №1</thing> <thing>Cущность №2</thing>
Для обозначения элемента без содержания, называемого пустым элементом, допускается применять особую форму записи, состоящую из одного тега, в котором после имени элемента ставится косая черта. Следующие фрагменты полностью равнозначны:
<foo></foo>
<foo/>
В XML определены два метода записи специальных символов: ссылка на сущность и ссылка по номеру символа. Сущностью в XML называются именованные данные, обычно текстовые, в частности спецсимволы. Ссылка на сущность указывается в том месте, где должна быть сущность и состоит из амперсанда («&
»), имени сущности и точки с запятой («;
»). В XML есть несколько предопределённых сущностей, таких как «lt» (ссылаться на неё можно написав «<
») для левой угловой скобки и «amp» (ссылка — «&
») для амперсанда, возможно также определять собственные сущности. Помимо записи с помощью сущностей отдельных символов, их можно использовать для записи часто встречающихся текстовых блоков. Ниже приведён пример использования предопределённой сущности для избежания использования знака амперсанда в названии:
<company-name>AT&T</company-name>
Полный список предопределённых сущностей состоит из & («&»), < («<»), > («>»), ' («'»), и " («"») — последние две полезны для записи разделителей внутри значений атрибутов. Определить свои сущности можно в DTD-документе. Иногда бывает необходимо определить неразрывный пробел, который в HTML обозначается как в XML его записывают  
Cсылка по номеру символа выглядит как ссылка на сущность, но вместо имени сущности указывается символ #
и число (в десятичной или шестнадцатеричной записи), являющееся номером символа в кодовой таблице Юникод. Это обычно символы, которые невозможно закодировать напрямую, например буква арабского алфавита в ASCII-кодированном документе. Амперсанд может быть представлен следующим образом:
<company-name>AT&T</company-name>
Существует ещё множество правил, касающихcя составления корректного XML-документа, но целью данного краткого обзора было лишь показать основы, необходимые для понимания структуры XML-документа.
Общая структура документа
FB2-документ состоит из объявления XML и корневого элемента <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"> ... </FictionBook>
Как видно, в первой строке, в объявлении XML значением атрибута encoding задается кодировка документа. В приведенном примере это windows-1251, а в другом случае могла бы быть и utf-8.
Раздел FictionBook
Этот раздел начинается сразу за первой строкой и открывается таким образом:
<FictionBook xmlns="http://www.gribuser.ru/xml/fictionbook/2.0" xmlns:l="http://www.w3.org/1999/xlink">
А закрывается в самом конце FB2-документа.
В xmlns:l вместо l может быть написано и другое имя, главное, чтобы потом оно использовалось в ссылках по всему документу. То есть, если объявлено xmlns:l="http://www.w3.org/1999/xlink", то ссылки надо оформлять как <a l:href=...>...</a>, а если объявлено xmlns:xlink="http://www.w3.org/1999/xlink", то надо так: <a xlink:href=...>...</a>. Аналогично и для ссылок в тэгах <image/>.
Раздел FictionBook состоит из вложенных подразделов в указанном ниже порядке:
- <description> – который описывает заголовок документа. Одно и только одно вхождение. (фразы вроде "одно и только одно вхождение" говорят, сколько раз подряд может идти данный тэг в данном месте документа)
- <body> – описывает тело документа. Одно или более вхождений.
- <binary> – содержит приложенные к файлу двоичные объекты – картинки и прочее. Любое число вхождений.
Иными словами, присутствуют как минимум разделы <description> с <body>, а остальное – по необходимости.
Пример:
<?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> ... </description> <body> ... </body> ... <body name="notes"> ... </body> <binary id="cover.jpg" content-type="image/jpeg">/9j/ 4AAQSkZJRgABAgAAZABkAAD/ ... </binary> </FictionBook>
Раздел FictionBook
Этот раздел начинается сразу за первой строкой и открывается таким образом:
<FictionBook xmlns="http://www.gribuser.ru/xml/fictionbook/2.0" xmlns:l="http://www.w3.org/1999/xlink">
А закрывается в самом конце FB2-документа.
В xmlns:l вместо l может быть написано и другое имя, главное, чтобы потом оно использовалось в ссылках по всему документу. То есть, если объявлено xmlns:l="http://www.w3.org/1999/xlink", то ссылки надо оформлять как <a l:href=...>...</a>, а если объявлено xmlns:xlink="http://www.w3.org/1999/xlink", то надо так: <a xlink:href=...>...</a>. Аналогично и для ссылок в тэгах <image/>.
Поля раздела description
Раздел <description> состоит из перечисленных ниже частей в указанном порядке:
- <title-info> – данные о книге. Одно и только одно вхождение.
- <src-title-info> – данные об исходнике книги (до перевода). От нуля до одного вхождений.
- <document-info> – информация об FB2-документе. Одно и только одно вхождение.
- <publish-info> – сведения об издании книги, которая была использована как источник при подготовке документа. От нуля до одного вхождений.
- <custom-info> – произвольная информация. Любое число вхождений.
То есть обязательны разделы <title-info> и <document-info>, а остальные добавляются по необходимости.
Рассмотрим пример заполнения его полей (они должны следовать в указанном порядке):
<description> <title-info> <genre>sci_medicine</genre> <genre>science</genre> <author> <first-name>Борис</first-name> <last-name>Сергеев</last-name> </author> <book-title>Ум хорошо…</book-title> <annotation> <p>Об организации высших психических функций.</p> </annotation> <date value="1984-01-01">1984</date> <coverpage><image l:href="#cover.jpg"/></coverpage> <lang>ru</lang> <src-lang>ru</src-lang> <sequence name="Раскрывая тайны психики" number="2"/> </title-info> <document-info> <author> <nickname>Sclex</nickname> <email>sclex_at_inbox.ru</email> </author> <program-used>Dn/2, Opera 8.50, Bred3</program-used> <date value="2006-05-21">2006-05-21</date> <id>91824ABE-EEF7-48C3-AAAA-A719EFC4824A</id> <version>1.1</version> <history> <p>1.0 - подготовка fb2 by Sclex</p> <p>1.1 - вычитка ошибок by Sclex</p> </history> </document-info> <publish-info> <book-name>Борис Федорович Сергеев. Ум хорошо…</book-name> <publisher>Молодая гвардия</publisher> <city>М.</city> <year>1984</year> </publish-info> </description>
Рассмотрим последовательно смысл значений тэгов заголовка. (Некоторые из тэгов отсутствуют в примере, но описаны ниже).
Внутри раздела <title-info>:
<genre> – указывает жанр книги. Список возможных значений приведен в соответствующем разделе данного описания. Любое число вхождений, то есть книга может относиться к нескольким жанрам одновременно. В нашем примере это sci_medicine и science, то есть книга относится к жанрам "Медицина" и "Научно-образовательная: Прочее".
<author> – содержит информацию об авторе книги. Возможны такие вложенные тэги как <first-name> – имя, <last-name> – фамилия, <middle-name> – отчество, <nick> – ник, и <email> – адрес электронной почты. Одно или более вхождений, так как может быть несколько авторов у одной книги. В нашем примере определены имя Борис и фамилия Сергеев.
<book-title> – описывает название книги. Одно и только одно вхождение. В нашем примере книга называется "Ум хорошо…".
<annotation> – аннотация книги. Возможны в любом количестве и порядке следующие вложенные тэги: <p>, <poem>, <cite>, <subtitle>, <table>, <empty-line/> с соответствующим содержанием. От нуля до одного вхождения.
<keywords> – содержит ключевые слова к данной книге для поисковых систем. Слова должны быть в виде неформатированного текста. От нуля до одного вхождения.
<date> – хранит дату написания книги. В свойстве value дата описывается в формате ГГГГ-ММ-ДД, а внутри тэга дата задается в текстовом виде. От нуля до одного вхождения. В нашем примере свойство value имеет значение 1984-01-01, то есть первое января 1984-го года, а внутри тэга прописано значение 1984.
<coverpage> – обложка книги. Внутри может содержать только тэг <image/>. От нуля до одного вхождения. В нашем примере ссылка указывает на картинку cover.jpg, приложенную к документу (значок # говорит, что эта ссылка локальная, то есть адресует в пределах документа).
<lang> – сообщает язык книги в документе, то есть язык после перевода. Одно и только одно вхождение. В нашем примере это ru, то есть русский язык. Полный список кодов приведен в соответствующем разделе данного описания.
<src-lang> – определяет язык, на котором исходно написана книга, то есть язык до перевода. От нуля до одного вхождений. Те же коды, что для тэга <lang>. В нашем примере это ru, то есть русский язык. Английскому языку соответствует код en.
<translator> – информация о переводчике книги. Возможны такие вложенные тэги как <first-name> – имя, <last-name> – фамилия, <middle-name> – отчество, <nick> – ник, и <email> – адрес электронной почты. Любое число вхождений.
<sequence> – сведения о том, к каким сериям относится книга. Имеет такие свойства, как name (текстовая строка) – название серии, и number (целое число) – порядковый номер книги в серии. Любое число вхождений. В нашем примере описана серия "Раскрывая тайны психики", и указан номер книги в серии – вторая.
Внутри раздела <document-info>:
<author> – содержит информацию об авторе документа. Возможны такие вложенные тэги как <first-name> – имя, <last-name> – фамилия, <middle-name> – отчество, <nick> – ник, и <email> – адрес электронной почты. Одно или более вхождений. В нашем примере определены ник Sclex и адрес электронной почты sclex_at_inbox.ru.
<program-used> – в виде простого перечисляет программы, использованные при создании FB2-документа. От нуля до одного вхождений. В нашем примере это Dn/2, Opera 8.50 и Bred3.
<date> – хранит дату создания документа. В свойстве value дата описывается в формате ГГГГ-ММ-ДД, а внутри тэга дата задается в текстовом виде. Одно и только одно вхождение. В нашем примере свойство value имеет значение 2006-05-21, то есть 21-е мая 2006-го года, и такое же значение прописано внутри тэга.
<src-url> – URL страницы, откуда взят текст для подготовки документа. Любое число вхождений.
<src-ocr> – автор текста, который был использован при подготовке документа. Но не тот автор, который написал книгу, а тот, который сканировал ее и подготовил электронный текст. От нуля до одного вхождений.
<id> – уникальный идентификатор документа FB2. Каждый отдельный FB2-документ должен иметь собственный ID, отличающийся от ID других документов. Данный идентификатор имеет произвольный вид, то есть его содержание никак не ограничивается. Одно и только одно вхождение.
<version> – версия документа в текстовом виде. Описывается дробным числом. Одно и только одно вхождение. В нашем случае – 1.1.
<history> – история создания и изменения документа. Содержит форматированный текст. Возможны в любом количестве и порядке следующие вложенные тэги: <p>, <poem>, <cite>, <subtitle>, <table>, <empty-line/> с соответствующим содержанием. От нуля до одного вхождений.
Внутри тэга <publish-info>:
<book-name> – название оригинальной (бумажной) книги. От нуля до одного вхождений. В примере это "Борис Федорович Сергеев. Ум хорошо…".
<publisher> – название издательства. От нуля до одного вхождений. В примере – Молодая гвардия.
<city> – город, в котором издана книга. От нуля до одного вхождений. В нашем случае это М., то есть Москва.
<year> – год издания книги. От нуля до одного вхождений. В нашем случае – 1984.
Тело документа (структура разделов body и section)
Тэг <body> предназначен для описания собственно тела документа. Этот тэг может иметь свойство name, которое описывает имя раздела. Например:
<body name="notes">
Внутри раздела <body> могут идти в указанном порядке:
- Картинка <image/>, которая будет отображаться вверху раздела. От нуля до одного вхождений.
- Заголовок <title>. От нуля до одного вхождений.
- Эпиграф <epigraph>. Любое число вхождений.
- Раздел <section>. Любое число вхождений.
Откуда видно, что ни один подраздел не является обязательным.
Для раздела <section> имя описывается свойством id. Например так:
<section id="note33">
Раздел <section> состоит из следующих частей в указанном порядке:
- Заголовок <title>. От нуля до одного вхождений.
- Эпиграф <epigraph>. Любое число вхождений.
- Картинка <image/>, которая будет отображаться вверху раздела. От нуля до одного вхождений.
- Аннотация <annotation>, описывающая раздел. От нуля до одного вхождений.
- Либо подраздел <section> (любое число вхождений), либо форматированный текст с картинками (любое число вхождений).
Следовательно ни один подраздел не является обязательным.
Разделов <body> в документе может быть несколько. Это используется, например, для оформления примечаний (footnotes). По умолчанию пользователю показывается первый раздел <body>, а содержание остальных должно быть доступно по гиперссылкам. Имя раздела должно отражать смысл его содержания, но для основного раздела это необязательно.
Разделы <section> должны иметь вложенную структуру согласно иерархии оглавления. Например, если документ делится на части, которые в свою очередь делятся на главы, то части будут будут описаны в разделе <section> первого уровня, а главы – в подразделе второго уровня. Проще понять это на примере:
<body> <title><p>Борис Сергеев</p><p>Парадоксы мозга</p></title> <section> <title><p>Часть 1. Великие невежды.</p></title> <section> <title><p>Глава 1. Во тьме веков.</p></title> <p>Когда люди стали о себе задумываться? ...</p> ... </section> </section> </body>
Принято названия глав писать маленькими буквами, начиная с большой.
Еще принято кроме того, что указано в заголовке, давать имя автора и название книги в тексте документа до того, как открывается <section> первого уровня, то есть в <title>, относящемся к <body>. Это видно из вышеприведенного примера.
Форматированный текст
Форматированный текст представляет собой последовательность фрагментов, ограниченных тэгами <p>, <poem>, <subtitle>, <cite>, <table>. Также могут входить пустые строки – <empty-line/>.
Тэг <p> предназначен для описания одного абзаца текста книги.
Например:
<p>Вот абзац текста.</p> <p>Еще один абзац текста.</p>
Пустые строки
Если нужно в форматированном тексте вставить пустую строку, это делается с помощью тэга <empty-line/>. Один такой тэг – одна пустая строка. Закрывающий тэг в данном случае не требуется.
Например:
<p>Абзац до пустой строки.</p> <empty-line/> <p>А вот это уже абзац после пустой строки.</p>
Жирный и курсивный
Для форматированного текста, то есть внутри тэгов <p>, <poem>, <subtitle>, <table> возможно описать текст как жирный или курсивный. Жирный текст следует выделить тэгом <strong>, а курсивный – тэгом <emphasis>.
Например:
<p>Вот это слово выведем <strong>жирным</strong>, а вот это – <emphasis>курсивным</emphasis>.</p>
Заголовки
Заголовки описываются тэгом <title>, который содержит в себе форматированный текст. Тэг <title> может быть вложенным в тэги <body> и <section>, причем более одного заголовка в разделе не допускается, а может его и не быть вовсе.
Пример:
<title> <p>От Александрии до Лондона</p> </title>
Подзаголовки
Подзаголовки описываются тэгом <subtitle>, который содержит простой (неформатированный) текст. Тэг <subtitle> может быть вложенным в тэги <body> и <section>.
Обычно описание подзаголовка выглядит так:
<subtitle>* * *<subtitle>
Подзгаловком, в отличие от нормального заголовка, оформляется элемент оглавления, незначимый для структуры документа. Обычно это те самые три звездочки или x x x.
Стихи
Чтобы разместить стихотворение в тексте документа, используют тэг <poem>. Он может нести внутри себя следующие части в указанном порядке:
- Заголовок <title>. От нуля до одного вхождений.
- Эпиграф <epigraph>. Любое число вхождений.
- Строфы <stanza>. Одно или более вхождений. Строфа <stanza> – это группа строк стихотворения, отделенная пустым промежутком от остальных строк. Отдельная строка стихотворения помечается тэгом <v>, который должен быть вложен в <stanza>.
- Автор стихотворения <text-author>. Любое число вхождений.
- Дата написания <date>. От нуля до одного вхождений.
То есть обязательно присутствует как минимум одна строфа <stanza>, а остальное добавляется при необходимости.
Например, стихотворение из двух строф:
Наша Таня громко плачет,
Уронила в речку мячик.
Тише, Танечка, не плачь,
Не утонет в речке мяч.
Следует разметить таким образом:
<poem> <stanza> <v>Наша Таня громко плачет,</v> <v>Уронила в речку мячик.</v> </stanza> <stanza> <v>Тише, Танечка, не плачь,</v> <v>Не утонет в речке мяч.</v> </stanza> </poem>
Эпиграфы
Для оформления эпиграфов предусмотрен тэг <epigraph>, который должен содержать внутри себя форматированный текст – тэги <p>, <poem>, <cite>, <empty-line/> (любое число вхождений), а затем автора текста <text-author> (тоже любое число вхождений).
Пример:
<epigraph> <p>Читателям, которые станут доискиваться, какие реальные люди и места описаны здесь под вымышленными именами и названиями, я бы посоветовал посмотреть вокруг себя и заглянуть в собственную душу, так как в этом романе рассказано о том, что происходит сегодня почти во всей Америке.</p> </epigraph>
Тэг <epigraph> может быть вложен в тэги <body>, <section> и <poem>.
Цитированный текст
Для разметки цитированного текста существует тэг <cite>, который может содержать форматированный текст – вложенные тэги <p>, <poem>, <empty-line/>, <subtitle>, <table> (любое число вхождений), а затем автора цитаты (любое число вхождений).
Пример:
<cite> <p>Время – деньги.<p> <text-author>Бенджамин Франклин</text-author> </cite>
Автор цитаты
Внутри тэгов <poem>, <cite> и <epigraph> возможно указать автора соответственно стихотворения, цитаты или эпиграфа. Для этого служит тэг <text-author>. Этот тэг должен стоять в самом конце родительского тэга, то есть непосредственно перед его закрытием. Допускается любое число вхождений тэга <text-author>.
Вот пример:
<epigraph> <p>Кажется, знаешь о себе все, так нет. Находятся люди, которые знают о тебе больше.</p> <text-author>В. Андреев</text-author> </epigraph>
Картинки
Картинки вставляются с помощью тэга <image/> (закрывающий тэг не требуется). Свойство href указывает на адрес картинки. Если адрес картинки начинается с символа # (решетка), то картинка находится внутри документа.
Пример:
<image l:href="#picture.jpg"/>
В этом примере в текст вставляется картинка picture.jpg, приложенная к документу (на что указывает символ решетки перед именем).
Файл обложки принято называть cover.jpg или cover.png.
Ссылки
Ссылки вставляются с помощью тэга <a>. Свойство href определяет адрес ссылки. Адреса с символа # (решетка) задают расположение внутри документа.
Примеры:
<a l:href="#n1" type="note">[1]</a>
В этом примере текстом ссылки будет [1], а указывать она будет на раздел с идентификатором n1 внутри документа.
В l:href вместо l может быть и другой идентификатор, подробнее это описано в разделе "Раздел FictionBook".
Примечания
Примечания к тексту книги должны находиться в специальном разделе <body>, поименнованном notes, то есть описан он должен быть как <body name="notes">. Каждое примечание должно находиться в отдельном разделе <section> и иметь уникальный id, по которому оно будет доступно в ссылках. Вот типичный пример оформления тела примечаний:
<body name="notes"> <title><p>Примечания</p></title> <section id="note1"> <title> <p>1</p> </title> <p>Известный английский архитектор XVIII века, испытавший в своем творчестве сильное влияние античной архитектуры. (Здесь и далее прим. ред.)</p> </section> <section id="note2"> <title> <p>2</p> </title> <p>Американский просветитель, живший в XVIII веке</p> </section> </body>
Ссылка на примечание должна иметь свойство type, равное значению "note". Соответствующая размещенному выше примеру ссылка на первое примечание будет выглядеть таким образом:
в стиле Роберта Адама <a l:href="#note1" type="note">[1]</a>
Двоичные вложения
К документу FB2 могут быть приложены файлы, например картинки или что-нибудь другое. (Библиотека, правда, не примет файлы с иными вложениями, чем картинки).
Вот пример вложения:
<binary id="cover.jpg" content-type="image/jpeg"> AQMAEAMDBgkAAA/tAAAe7gAANHz/2wCEAAgGBgYGBggGBggMCAcIDA4KCAgKDhANDQ4NDRAR DA4NDQ4MEQ8SExQTEg8YGBoaGBgjIiIiIycnJycnJycnJycBCQgICQoJCwkJCw4LDQsOEQ4O ... h9x8OJ/B/c+gfbXM/wDQ/qcPZ9HHjqaPi17zZ4+6deEYNxtP+H1v8Opsec//2Q==</binary>
Свойство id описывает идентификатор (имя) двоичного объекта, а свойство content-type – MIME-тип вложения. Внутри тэга <binary> находится файл, закодированный по методу BASE64.
Чтобы библиотека приняла файл, нужно чтобы в документе не было приложенных объектов, на которые нет ссылки, и чтобы не было ссылок, которые указывают на двоичные объекты, не приложенные к файлу.
Из картинок поддерживаются форматы JPG (тип image/jpeg) и PNG (тип image/png). Поддержка формата GIF отсутствует. Файл обложки обычно принято называть cover.jpg.
Символы Unicode
В текст можно вставлять символы по их коду в таблице Unicode. Для этого нужно написать значок &, потом значок #, потом десятичный код символа, потом точку с запятой.
Например для значка ≠ (не равно) – десятичный код 8800, надо написать так:
≠
Список возможных жанров
Здесь перечислены значения, которые принимает поле <genre> в заголовке FB2-документа.
sf_history Альтернативная история sf_action Боевая Фантастика sf_epic Эпическая Фантастика sf_heroic Героическая фантастика sf_detective Детективная Фантастика sf_cyberpunk Киберпанк sf_space Космическая Фантастика sf_social Социальная фантастика sf_horror Ужасы и Мистика sf_humor Юмористическая фантастика sf_fantasy Фэнтези sf Научная Фантастика child_sf Детская Фантастика det_classic Классический Детектив det_police Полицейский Детектив det_action Боевики det_irony Иронический Детектив det_history Исторический Детектив det_espionage Шпионский Детектив det_crime Криминальный Детектив det_political Политический Детектив det_maniac Маньяки det_hard Крутой Детектив thriller Триллеры detective Детектив sf_detective Детективная Фантастика child_det Детские Остросюжетные love_detective Остросюжетные Любовные Романы prose Проза prose_classic Классическая Проза prose_history Историческая Проза prose_contemporary Современная Проза prose_counter Контркультура prose_rus_classic Русская Классика prose_su_classics Советская Классика humor_prose Юмористическая Проза child_prose Детская Проза love Любовные романы love_contemporary Современные Любовные Романы love_history Исторические Любовные Романы love_detective Остросюжетные Любовные Романы love_short Короткие Любовные Романы love_erotica Эротика adv_western Вестерны adv_history Исторические Приключения adv_indian Приключения: Индейцы adv_maritime Морские Приключения adv_geo Путешествия и География adv_animal Природа и Животные adventure Приключения: Прочее child_adv Детские Приключения children Детское child_tale Сказки child_verse Детские Стихи child_prose Детская Проза child_sf Детская Фантастика child_det Детские Остросюжетные child_adv Детские Приключения child_education Детская Образовательная литература children Детское: Прочее poetry Поэзия dramaturgy Драматургия humor_verse Юмористические Стихи child_verse Детские Стихи antique_ant Античная Литература antique_european Европейская Старинная Литература antique_russian Древнерусская Литература antique_east Древневосточная Литература antique_myths Мифы. Легенды. Эпос antique Старинная Литература: Прочее sci_history История sci_psychology Психология sci_culture Культурология sci_religion Религиоведение sci_philosophy Философия sci_politics Политика sci_business Деловая литература sci_juris Юриспруденция sci_linguistic Языкознание sci_medicine Медицина sci_phys Физика sci_math Математика sci_chem Химия sci_biology Биология sci_tech Технические science Научно-образовательная: Прочее adv_animal Природа и Животные comp_www Интернет comp_programming Программирование comp_hard Компьютерное Железо comp_soft Программы comp_db Базы Данных comp_osnet ОС и Сети computers Компьютеры: Прочее ref_encyc Энциклопедии ref_dict Словари ref_ref Справочники ref_guide Руководства reference Справочная Литература: Прочее nonf_biography Биографии и Мемуары nonf_publicism Публицистика nonf_criticism Критика nonfiction Документальное: Прочее design Искусство, Дизайн adv_animal Природа и Животные religion Религия religion_rel Религия religion_esoterics Эзотерика religion_self Самосовершенствование religion Религия и духовность: Прочее sci_religion Религиоведение humor_anecdote Анекдоты humor_prose Юмористическая Проза humor_verse Юмористические Стихи humor Юмор: Прочее home_cooking Кулинария home_pets Домашние Животные home_crafts Хобби, Ремесла home_entertain Развлечения home_health Здоровье home_garden Сад и Огород home_diy Сделай Сам home_sport Спорт home_sex Эротика, Секс home Дом и Семья: Прочее
Список возможных языков
Ниже приведены коды языков, которые можно прописывать в тэгах <lang> и <src-lang>.
Здесь приведены только основные кодировки, полный список содержится в стандарте ISO 639:
abk ab Абхазский aze az Азербайджанский alb/sqi sq Албанский eng en Английский arm/hye hy Армянский BA Башкирский bel be Белорусский bul bg Болгарский hun hu Венгерский vie vi Вьетнамский dut/nla nl Голландский ell/gre el Греческий современный (1453-) dan da Данийский grc Древнегреческий (до 1453) heb he Иврит esl/spa es Испанский ita it Итальянский kaz kk Казахский kir ky Киргизский chi/zho zh Китайский kor ko Корейский lat la Латинский lav lv Латвийский lit lt Литовский mac/mak mk Македонийский mol mo Молдавский mon mn Монгольский deu/ger de Немецкий mul Несколько языков und Неопределенный nor no Норвежский fas/per fa Персидский pol pl Польский por pt Португальский rus ru Русский san sa Санскрит slk/slo sk Словакский slv sl Словенский tgk tg Таджикский tat tt Татарский tur tr Турецкий uzb uz Узбекский ukr uk Украинский cym/wel cy Уэльский fin fi Финский fra/fre fr Французский che Чеченский ces/cze cs Чешский hr Хорватский sve/swe sv Шведский epo eo Эсперанто est et Эстонский jpn ja Японский