Описание формата FB2 от Sclex — различия между версиями

Материал из FictionBook
Перейти к: навигация, поиск
(Юникодные символы)
(Символы Unicode: Пример оформил как другие примеры, для единообразия)
 
(не показаны 83 промежуточных версий 4 участников)
Строка 1: Строка 1:
 
{{Toc-Right}}
 
{{Toc-Right}}
=== Общая структура документа ===
+
=== FB2-файл - это файл XML ===
FB2-документ состоит из стандартной строки, формат которой описан в следующей главе данного описания, и раздела <FictionBook>.
+
  
Раздел FictionBook состоит из таких подразделов в указанном ниже порядке:
+
FB2-документ является файлом в формате XML.
  
#'''<description>''' ? который описывает заголовок документа. ''Одно и только одно вхождение.'' (фразы вроде "одно и только одно вхождение" говорят, сколько раз подряд может идти данный тэг в данном месте документа)
+
'''XML''' (англ. Extensible Markup Language ? расширяемый язык разметки; произносится [икс-эм-э?л]) ? рекомендованный Консорциумом Всемирной паутины язык разметки, фактически представляющий из себя свод общих синтаксических правил. XML предназначен для хранения структурированных данных, для обмена информацией между программами, а также для создания на его основе более специализированных языков разметки (например, XHTML), иногда называемых словарями.  
#'''<body>''' ? описывает тело документа. ''Одно или более вхождений''.
+
#'''<binary>''' ? содержит приложенные к файлу двоичные объекты ? картинки и прочее. ''Любое число вхождений''.
+
  
Иными словами, присутствуют как минимум разделы '''<description>''' с '''<body>''', а остальное ? по необходимости.
+
Ниже приведён пример простого кулинарного рецепта, размеченного с помощью 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>
  
<pre><?xml version="1.0" encoding="windows-1251"?>
+
''Обратите внимание, что названия и значения элементов и атрибутов могут состоять не только из букв латинского алфавита, но десятичным разделителем может быть только точка.''
 +
 
 +
Первая строка XML-документа называется '''объявлением XML''' ? это необязательная строка, указывающая версию стандарта XML (обычно это 1.0), также здесь может быть указана кодировка символов и внешние зависимости.
 +
 
 +
Остальная часть этого XML-документа состоит из вложенных ''элементов'', некоторые из которых имеют ''атрибуты'' и ''содержимое''. '''Элемент''' обычно состоит из открывающего и закрывающего тегов (меток), обрамляющих текст и другие элементы. '''Открывающий тег''' состоит из имени элемента в угловых скобках, например ?<code>&lt;step></code>?; '''закрывающий тег''' состоит из того же имени в угловых скобках, но перед именем ещё добавляется косая черта, например ?<code>&lt;/step></code>?. '''Содержимым элемента''' называется всё, что расположено между открывающим и закрывающим тегами, включая текст и другие (вложенные) элементы. Ниже приведён пример 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? перекрываются.
 +
 
 +
&lt;!-- ВНИМАНИЕ! Некорректный XML! -->
 +
&lt;p>Обычный &lt;em>акцентированный &lt;strong>выделенный и акцентированный&lt;/em> выделенный&lt;/strong>&lt;/p>
 +
 
 +
Каждый XML-документ должен содержать в точности один '''корневой элемент''' или ''document element''), таким образом, следующий фрагмент не может считаться корректным XML-документом.
 +
 
 +
&lt;!-- ВНИМАНИЕ! Некорректный XML! -->
 +
&lt;thing>Cущность ?1&lt;/thing>
 +
&lt;thing>Cущность ?2&lt;/thing>
 +
 
 +
Для обозначения элемента без содержания, называемого '''пустым элементом''', допускается применять особую форму записи, состоящую из одного тега, в котором после имени элемента ставится косая черта. Следующие фрагменты полностью равнозначны:
 +
 
 +
  &lt;foo>&lt;/foo>
 +
 
 +
  &lt;foo/>
 +
 
 +
В XML определены два метода записи специальных символов: ссылка на сущность и ссылка по номеру символа. '''Сущностью''' в XML называются именованные данные, обычно текстовые, в частности спецсимволы. '''Ссылка на сущность''' указывается в том месте, где должна быть сущность и состоит из амперсанда (?<code>&amp;</code>?), имени сущности и точки с запятой (?<code>;</code>?). В XML есть несколько предопределённых сущностей, таких как ?lt? (ссылаться на неё можно написав ?<code>&amp;lt;</code>?) для левой угловой скобки и ?amp? (ссылка ? ?<code>&amp;amp;</code>?) для амперсанда, возможно также определять собственные сущности. Помимо записи с помощью сущностей отдельных символов, их можно использовать для записи часто встречающихся текстовых блоков. Ниже приведён пример использования предопределённой сущности для избежания использования знака амперсанда в названии:
 +
 
 +
  &lt;company-name>AT&amp;amp;T&lt;/company-name>
 +
 
 +
Полный список предопределённых сущностей состоит из &amp;amp; (?&amp;?), &amp;lt; (?&lt;?), &amp;gt; (?&gt;?), &amp;apos; (?'?), и &amp;quot; (?"?) ? последние две полезны для записи разделителей внутри значений атрибутов. Определить свои сущности можно в [[DTD]]-документе.
 +
Иногда бывает необходимо определить неразрывный пробел, который в HTML обозначается как &amp;nbsp; в XML его записывают &amp;#160;
 +
 
 +
'''Cсылка по номеру символа''' выглядит как ссылка на сущность, но вместо имени сущности указывается символ <code>#</code> и число (в десятичной или шестнадцатеричной записи), являющееся номером символа в кодовой таблице Юникод. Это обычно символы, которые невозможно закодировать напрямую, например буква арабского алфавита в ASCII-кодированном документе. Амперсанд может быть представлен следующим образом:
 +
 
 +
&lt;company-name>AT&amp;#038;T&lt;/company-name>
 +
 
 +
Существует ещё множество правил, касающихcя составления корректного XML-документа, но целью данного краткого обзора было лишь показать основы, необходимые для понимания структуры XML-документа.
 +
 
 +
 
 +
=== Общая структура документа. Кодировки ===
 +
 
 +
FB2-документ состоит из объявления XML и корневого элемента <FictionBook>. То есть выглядит это так:
 +
 
 +
<pre>
 +
<?xml version="1.0" encoding="windows-1251"?>
 
<FictionBook xmlns="http://www.gribuser.ru/xml/fictionbook/2.0"
 
<FictionBook xmlns="http://www.gribuser.ru/xml/fictionbook/2.0"
 
   xmlns:l="http://www.w3.org/1999/xlink">
 
   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>
 
</pre>
 
</pre>
  
 +
Как видно, в первой строке в значении атрибута encoding надо правильно указать кодировку документа. В приведенном примере это windows-1251, а в другом случае могла бы быть и utf-8. utf-8 также является кодировкой по умолчанию, использующейся в случае отсутствия атрибута encoding или всего XML-объявления.
  
=== Первая строка документа ===
+
Ниже указано, какая кодировка каким языкам соответствует:
 +
<pre>
 +
windows-1251 - английский и кириллица (русский, болгарский и т.д.)
 +
windows-1252 - западно-европейские языки (английский, французский, испанский и т.д.)
 +
windows-1250 - английский и восточно-европейские (польский, чешский и т.д.)
 +
</pre>
  
 
Первая строка FB2-документа имеет следующий стандартный для xml-файлов вид:
 
 
<pre><?xml version="1.0" encoding="windows-1251"?></pre>
 
 
Свойство encoding задает кодировку документа, в нашем случае это windows-1251. А может быть, например, utf-8.
 
  
 
=== Раздел FictionBook ===
 
=== Раздел FictionBook ===
 
  
 
Этот раздел начинается сразу за первой строкой и открывается таким образом:
 
Этот раздел начинается сразу за первой строкой и открывается таким образом:
Строка 52: Строка 107:
 
А закрывается в самом конце FB2-документа.
 
А закрывается в самом конце 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/>'''.
+
В '''xmlns:l''' вместо l может быть написано и другое имя, главное, чтобы потом оно использовалось в ссылках по всему документу. То есть, если объявлено '''xmlns:l="http://www.w3.org/1999/xlink"''', то ссылки надо оформлять как '''[[Элемент a|&lt;a l:href=...&gt;...&lt;/a&gt;]]''', а если объявлено '''xmlns:xlink="http://www.w3.org/1999/xlink"''', то надо так: '''[[Элемент a|&lt;a xlink:href=...&gt;...&lt;/a&gt;]]'''. Аналогично и для ссылок в тэгах '''[[Элемент image|&lt;image/&gt;]]'''.
  
=== Поля раздела description ===
+
Раздел FictionBook состоит из вложенных подразделов в указанном ниже порядке:
  
 +
#'''[[Элемент description|&lt;description&gt;]]''' - который описывает заголовок документа. ''Одно и только одно вхождение.'' (фразы вроде "одно и только одно вхождение" говорят, сколько раз подряд может идти данный тэг в данном месте документа)
 +
#'''[[Элемент body|&lt;body&gt;]]''' - описывает тело документа. ''Одно или более вхождений''.
 +
#'''[[Элемент binary|&lt;binary&gt;]]''' - содержит приложенные к файлу двоичные объекты - картинки и прочее. ''Любое число вхождений''.
 +
 +
Иными словами, присутствуют как минимум разделы '''[[Элемент description|&lt;description&gt;]]''' с '''[[Элемент body|&lt;body&gt;]]''', а остальное - по необходимости.
 +
 +
Пример:
 +
 +
<pre><?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>
 +
</pre>
 +
 +
 +
=== Поля раздела description ===
  
Раздел '''<description>''' состоит из перечисленных ниже частей в указанном порядке:
+
Раздел '''[[Элемент description|&lt;description&gt;]]''' состоит из перечисленных ниже частей в указанном порядке:
  
#'''<title-info>''' ? данные о книге. ''Одно и только одно вхождение''.
+
#'''[[Элемент title-info|&lt;title-info&gt;]]''' - данные о книге. ''Одно и только одно вхождение''.
#'''<src-title-info>''' ? данные об исходнике книги (до перевода). ''От нуля до одного вхождений''.
+
#'''[[Элемент src-title-info|&lt;src-title-info&gt;]]''' - данные об исходнике книги (до перевода). ''От нуля до одного вхождений''.
#'''<document-info>''' ? информация об FB2-документе. ''Одно и только одно вхождение''.
+
#'''[[Элемент document-info|&lt;document-info&gt;]]''' - информация об FB2-документе. ''Одно и только одно вхождение''.
#'''<publish-info>''' ? сведения об издании книги, которая была использована как источник при подготовке документа. ''От нуля до одного вхождений''.
+
#'''[[Элемент publish-info|&lt;publish-info&gt;]]''' - сведения об издании книги, которая была использована как источник при подготовке документа. ''От нуля до одного вхождений''.
#'''<custom-info>''' ? произвольная информация. ''Любое число вхождений''.
+
#'''[[Элемент custom-info|&lt;custom-info&gt;]]''' - произвольная информация. ''Любое число вхождений''.
  
То есть обязательны разделы '''<title-info>''' и '''<document-info>''', а остальные добавляются по необходимости.
+
То есть обязательны разделы '''[[Элемент title-info|&lt;title-info&gt;]]''' и '''[[Элемент document-info|&lt;document-info&gt;]]''', а остальные добавляются по необходимости.
  
 
Рассмотрим пример заполнения его полей (они должны следовать в указанном порядке):
 
Рассмотрим пример заполнения его полей (они должны следовать в указанном порядке):
Строка 77: Строка 161:
 
     <last-name>Сергеев</last-name>
 
     <last-name>Сергеев</last-name>
 
   </author>
 
   </author>
   <book-title>Ум хорошо?</book-title>
+
   <book-title>Ум хорошо:</book-title>
 
   <annotation>
 
   <annotation>
 
     <p>Об организации высших психических функций.</p>
 
     <p>Об организации высших психических функций.</p>
Строка 99: Строка 183:
 
     <p>1.0 - подготовка fb2 by Sclex</p>
 
     <p>1.0 - подготовка fb2 by Sclex</p>
 
     <p>1.1 - вычитка ошибок by Sclex</p>
 
     <p>1.1 - вычитка ошибок by Sclex</p>
   </version>
+
   </history>
 
   </document-info>
 
   </document-info>
 
   <publish-info>
 
   <publish-info>
   <book-name>Борис Федорович Сергеев. Ум хорошо?</book-name>
+
   <book-name>Борис Федорович Сергеев. Ум хорошо:</book-name>
 
   <publisher>Молодая гвардия</publisher>
 
   <publisher>Молодая гвардия</publisher>
 
   <city>М.</city>
 
   <city>М.</city>
Строка 112: Строка 196:
 
Рассмотрим последовательно смысл значений тэгов заголовка. (Некоторые из тэгов отсутствуют в примере, но описаны ниже).
 
Рассмотрим последовательно смысл значений тэгов заголовка. (Некоторые из тэгов отсутствуют в примере, но описаны ниже).
  
Внутри раздела '''<title-info>''':
+
Внутри раздела '''[[Элемент title-info|&lt;title-info&gt;]]''':
  
'''<genre>''' ? указывает жанр книги. Список возможных значений приведен в соответствующем разделе данного описания. ''Любое число вхождений'', то есть книга может относиться к нескольким жанрам одновременно. В нашем примере это sci_medicine и science, то есть книга относится к жанрам "Медицина" и "Научно-образовательная: Прочее".
+
'''[[Элемент genre|&lt;genre&gt;]]''' - указывает жанр книги. Список возможных значений приведен в соответствующем разделе данного описания. ''Одно или более вхождений'', то есть книга может относиться к нескольким жанрам одновременно. В нашем примере это sci_medicine и science, то есть книга относится к жанрам "Медицина" и "Научно-образовательная: Прочее".
  
'''<author>''' ? содержит информацию об авторе книги. Возможны такие вложенные тэги как '''<first-name>''' ? имя, '''<last-name>''' ? фамилия, '''<middle-name>''' ? отчество, '''<nick>''' ? ник, и '''<email>''' ? адрес электронной почты. ''Одно или более вхождений'', так как может быть несколько авторов у одной книги. В нашем примере определены имя Борис и фамилия Сергеев.
+
'''[[Элемент author|&lt;author&gt;]]''' - содержит информацию об авторе книги. Возможны такие вложенные тэги как '''[[Элемент first-name|&lt;first-name&gt;]]''' - имя, '''[[Элемент last-name|&lt;last-name&gt;]]''' - фамилия, '''[[Элемент middle-name|&lt;middle-name&gt;]]''' - отчество, '''[[Элемент nickname|&lt;nickname&gt;]]''' - ник, и '''[[Элемент email|&lt;email&gt;]]''' - адрес электронной почты. ''Одно или более вхождений'', так как может быть несколько авторов у одной книги. В нашем примере определены имя Борис и фамилия Сергеев.
  
'''<book-title>''' ? описывает название книги. ''Одно и только одно вхождение''. В нашем примере книга называется "Ум хорошо?".
+
'''[[Элемент book-title|&lt;book-title&gt;]]''' - описывает название книги. ''Одно и только одно вхождение''. В нашем примере книга называется "Ум хорошо:".
  
'''<annotation>''' ? аннотация книги. ''Возможны в любом количестве и порядке'' следующие вложенные тэги: '''<nowiki><p></nowiki>''', '''<poem>''', '''<nowiki><cite></nowiki>''', '''<subtitle>''', '''<nowiki><table></nowiki>''', '''<empty-line/>''' с соответствующим содержанием. ''От нуля до одного вхождения''.
+
'''[[Элемент annotation|&lt;annotation&gt;]]''' - аннотация книги. ''Возможны в любом количестве и порядке'' следующие вложенные тэги: '''[[Элемент p|&lt;p&gt;]]''', '''[[Элемент poem|&lt;poem&gt;]]''', '''[[Элемент cite|&lt;cite&gt;]]''', '''[[Элемент subtitle|&lt;subtitle&gt;]]''', '''[[Элемент table|&lt;table&gt;]]''', '''[[Элемент empty-line|&lt;empty-line/&gt;]]''' с соответствующим содержанием. ''От нуля до одного вхождения''.
  
'''<keywords>''' ? содержит ключевые слова к данной книге для поисковых систем. Слова должны быть в виде неформатированного текста. ''От нуля до одного вхождения''.
+
'''[[Элемент keywords|&lt;keywords&gt;]]''' - содержит ключевые слова к данной книге для поисковых систем. Слова должны быть в виде неформатированного текста. ''От нуля до одного вхождения''.
  
'''<date>''' ? хранит дату написания книги. В свойстве '''value''' дата описывается в формате ГГГГ-ММ-ДД, а внутри тэга дата задается в текстовом виде. ''От нуля до одного вхождения.'' В нашем примере свойство '''value''' имеет значение 1984-01-01, то есть первое января 1984-го года, а внутри тэга прописано значение 1984.
+
'''[[Элемент date|&lt;date&gt;]]''' - хранит дату написания книги. В свойстве '''value''' дата описывается в формате ГГГГ-ММ-ДД, а внутри тэга дата задается в текстовом виде. ''От нуля до одного вхождения.'' В нашем примере свойство '''value''' имеет значение 1984-01-01, то есть первое января 1984-го года, а внутри тэга прописано значение 1984.
  
'''<coverpage>''' ? обложка книги. Внутри может содержать только тэг '''<image/>'''. ''От нуля до одного вхождения.'' В нашем примере ссылка указывает на картинку cover.jpg, приложенную к документу (значок # говорит, что эта ссылка локальная, то есть адресует в пределах документа).
+
'''[[Элемент coverpage|&lt;coverpage&gt;]]''' - обложка книги. Внутри может содержать только тэг '''[[Элемент image|&lt;image/&gt;]]'''. ''От нуля до одного вхождения.'' В нашем примере ссылка указывает на картинку cover.jpg, приложенную к документу (значок # говорит, что эта ссылка локальная, то есть адресует в пределах документа).
  
'''<lang>''' ? сообщает язык книги в документе, то есть язык после перевода. ''Одно и только одно вхождение.'' В нашем примере это '''ru''', то есть русский язык. Полный список кодов приведен в соответствующем разделе данного описания.
+
'''[[Элемент lang|&lt;lang&gt;]]''' - сообщает язык книги в документе, то есть язык после перевода. ''Одно и только одно вхождение.'' В нашем примере это '''ru''', то есть русский язык. Полный список кодов приведен в соответствующем разделе данного описания.
  
'''<src-lang>''' ? определяет язык, на котором исходно написана книга, то есть язык до перевода. ''От нуля до одного вхождений''. Те же коды, что для тэга '''<lang>'''. В нашем примере это '''ru''', то есть русский язык. Английскому языку соответствует код '''en'''.
+
'''[[Элемент src-lang|&lt;src-lang&gt;]]''' - определяет язык, на котором исходно написана книга, то есть язык до перевода. ''От нуля до одного вхождений''. Те же коды, что для тэга '''[[Элемент lang|&lt;lang&gt;]]'''. В нашем примере это '''ru''', то есть русский язык. Английскому языку соответствует код '''en'''.
  
'''<translator>''' ? информация о переводчике книги. Возможны такие вложенные тэги как '''<first-name>''' ? имя, '''<last-name>''' ? фамилия, '''<middle-name>''' ? отчество, '''<nick>''' ? ник, и '''<email>''' ? адрес электронной почты. ''Любое число вхождений.''
+
'''[[Элемент translator|&lt;translator&gt;]]''' - информация о переводчике книги. Возможны такие вложенные тэги как '''[[Элемент first-name|&lt;first-name&gt;]]''' - имя, '''[[Элемент last-name|&lt;last-name&gt;]]''' - фамилия, '''[[Элемент middle-name|&lt;middle-name&gt;]]''' - отчество, '''[[Элемент nickname|&lt;nickname&gt;]]''' - ник, и '''[[Элемент email|&lt;email&gt;]]''' - адрес электронной почты. ''Любое число вхождений.''
  
'''<sequence>''' ? сведения о том, к каким сериям относится книга. Имеет такие свойства, как '''name''' (текстовая строка) ? название серии, и '''number''' (целое число) ? порядковый номер книги в серии. ''Любое число вхождений''. В нашем примере описана серия "Раскрывая тайны психики", и указан номер книги в серии ? вторая.
+
'''[[Элемент sequence|&lt;sequence&gt;]]''' - сведения о том, к каким сериям относится книга. Имеет такие свойства, как '''name''' (текстовая строка) - название серии, и '''number''' (целое число) - порядковый номер книги в серии. ''Любое число вхождений''. В нашем примере описана серия "Раскрывая тайны психики", и указан номер книги в серии - вторая.
  
Внутри раздела '''<document-info>''':
+
Внутри раздела '''[[Элемент document-info|&lt;document-info&gt;]]''':
  
'''<author>''' ? содержит информацию об авторе документа. Возможны такие вложенные тэги как '''<first-name>''' ? имя, '''<last-name>''' ? фамилия, '''<middle-name>''' ? отчество, '''<nick>''' ? ник, и '''<email>''' ? адрес электронной почты. ''Одно или более вхождений''. В нашем примере определены ник Sclex и адрес электронной почты sclex_at_inbox.ru.
+
'''[[Элемент author|&lt;author&gt;]]''' - содержит информацию об авторе документа. Возможны такие вложенные тэги как '''[[Элемент first-name|&lt;first-name&gt;]]''' - имя, '''[[Элемент last-name|&lt;last-name&gt;]]''' - фамилия, '''[[Элемент middle-name|&lt;middle-name&gt;]]''' - отчество, '''[[Элемент nickname|&lt;nickname&gt;]]''' - ник, и '''[[Элемент email|&lt;email&gt;]]''' - адрес электронной почты. ''Одно или более вхождений''. В нашем примере определены ник Sclex и адрес электронной почты sclex_at_inbox.ru.
  
'''<program-used>''' ? в виде простого перечисляет программы, использованные при создании FB2-документа. ''От нуля до одного вхождений''. В нашем примере это Dn/2, Opera 8.50 и Bred3.
+
'''[[Элемент program-used|&lt;program-used&gt;]]''' - в виде простого перечисляет программы, использованные при создании FB2-документа. ''От нуля до одного вхождений''. В нашем примере это Dn/2, Opera 8.50 и Bred3.
  
'''<date>''' ? хранит дату создания документа. В свойстве '''value''' дата описывается в формате ГГГГ-ММ-ДД, а внутри тэга дата задается в текстовом виде. ''Одно и только одно вхождение''. В нашем примере свойство '''value''' имеет значение 2006-05-21, то есть 21-е мая 2006-го года, и такое же значение прописано внутри тэга.
+
'''[[Элемент date|&lt;date&gt;]]''' - хранит дату создания документа. В свойстве '''value''' дата описывается в формате ГГГГ-ММ-ДД, а внутри тэга дата задается в текстовом виде. ''Одно и только одно вхождение''. В нашем примере свойство '''value''' имеет значение 2006-05-21, то есть 21-е мая 2006-го года, и такое же значение прописано внутри тэга.
  
'''<src-url>''' ? URL страницы, откуда взят текст для подготовки документа. ''Любое число вхождений''.
+
'''[[Элемент src-url|&lt;src-url&gt;]]''' - URL страницы, откуда взят текст для подготовки документа. ''Любое число вхождений''.
  
'''<src-ocr>''' ? автор текста, который был использован при подготовке документа. Но не тот автор, который написал книгу, а тот, который сканировал ее и подготовил электронный текст. ''От нуля до одного вхождений''.
+
'''[[Элемент src-ocr|&lt;src-ocr&gt;]]''' - автор текста, который был использован при подготовке документа. Но не тот автор, который написал книгу, а тот, который сканировал ее и подготовил электронный текст. ''От нуля до одного вхождений''.
  
'''<id>''' ? уникальный идентификатор документа FB2. Каждый отдельный FB2-документ должен иметь собственный ID, отличающийся от ID других документов. Данный идентификатор имеет произвольный вид, то есть его содержание никак не ограничивается. ''Одно и только одно вхождение''.
+
'''[[Элемент id|&lt;id&gt;]]''' - уникальный идентификатор документа FB2. Каждый отдельный FB2-документ должен иметь собственный ID, отличающийся от ID других документов. Это значит, что при изменении книги, которая есть в библиотеке, ID нужно сохранить. Если же создается новая книга, это поле необходимо заполнить уникальной записью. Формально разрешено использовать внутри тэга ID любые символы в любом количестве, но рекомендуется употреблять символы латиницы, цифры, и знаки подчеркивание и минус ("_", "-"). Других требований к идентификатору нет. Как вариант, можно заполнить поле согласно времени создания документа по формату YYYYMMDDhhmmss, например 20060728182041. ''Одно и только одно вхождение''.
  
'''<version>''' ? версия документа в текстовом виде. Описывается дробным числом. ''Одно и только одно вхождение''. В нашем случае ? 1.1.
+
'''[[Элемент version|&lt;version&gt;]]''' - версия документа в текстовом виде. Описывается дробным числом. ''Одно и только одно вхождение''. В нашем случае - 1.1.
  
'''<history>''' ? история создания и изменения документа. Содержит форматированный текст. Возможны в любом количестве и порядке следующие вложенные тэги: '''<nowiki><p></nowiki>''', '''<poem>''', '''<nowiki><cite></nowiki>''', '''<subtitle>''', '''<nowiki><table></nowiki>''', '''<empty-line/>''' с соответствующим содержанием. ''От нуля до одного вхождений''.
+
'''[[Элемент history|&lt;history&gt;]]''' - история создания и изменения документа. Содержит форматированный текст. Возможны в любом количестве и порядке следующие вложенные тэги: '''[[Элемент p|&lt;p&gt;]]''', '''[[Элемент poem|&lt;poem&gt;]]''', '''[[Элемент cite|&lt;cite&gt;]]''', '''[[Элемент subtitle|&lt;subtitle&gt;]]''', '''[[Элемент table|&lt;table&gt;]]''', '''[[Элемент empty-line|&lt;empty-line/&gt;]]''' с соответствующим содержанием. ''От нуля до одного вхождений''.
  
Внутри тэга '''<publish-info>''':
+
Внутри тэга '''[[Элемент publish-info|&lt;publish-info&gt;]]''':
  
'''<book-name>''' ? название оригинальной (бумажной) книги. ''От нуля до одного вхождений''. В примере это "Борис Федорович Сергеев. Ум хорошо?".
+
'''[[Элемент book-name|&lt;book-name&gt;]]''' - название оригинальной (бумажной) книги. ''От нуля до одного вхождений''. В примере это "Борис Федорович Сергеев. Ум хорошо:".
  
'''<publisher>''' ? название издательства. ''От нуля до одного вхождений''. В примере ? Молодая гвардия.
+
'''[[Элемент publisher|&lt;publisher&gt;]]''' - название издательства. ''От нуля до одного вхождений''. В примере - Молодая гвардия.
  
'''<city>''' ? город, в котором издана книга. ''От нуля до одного вхождений''. В нашем случае это М., то есть Москва.
+
'''[[Элемент city|&lt;city&gt;]]''' - город, в котором издана книга. ''От нуля до одного вхождений''. В нашем случае это М., то есть Москва.
  
'''<year>''' ? год издания книги. ''От нуля до одного вхождений''. В нашем случае ? 1984.
+
'''[[Элемент year|&lt;year&gt;]]''' - год издания книги. ''От нуля до одного вхождений''. В нашем случае - 1984.
  
 
=== Тело документа (структура разделов body и section) ===
 
=== Тело документа (структура разделов body и section) ===
  
 
+
Тэг '''[[Элемент body|&lt;body&gt;]]''' предназначен для описания собственно тела документа. Этот тэг может иметь свойство '''name''', которое описывает имя раздела. Например:
Тэг '''<body>''' предназначен для описания собственно тела документа. Этот тэг может иметь свойство '''name''', которое описывает имя раздела. Например:
+
  
 
<pre><body name="notes"></pre>
 
<pre><body name="notes"></pre>
  
Внутри раздела '''<body>''' могут идти в указанном порядке:
+
Внутри раздела '''[[Элемент body|&lt;body&gt;]]''' могут идти в указанном порядке:
  
#Картинка '''<image/>''', которая будет отображаться вверху раздела. ''От нуля до одного вхождений''.
+
#Картинка '''[[Элемент image|&lt;image/&gt;]]''', которая будет отображаться вверху раздела. ''От нуля до одного вхождений''.
#Заголовок '''<title>'''. ''От нуля до одного вхождений''.
+
#Заголовок '''[[Элемент title|&lt;title&gt;]]'''. ''От нуля до одного вхождений''.
#Эпиграф '''<epigraph>'''. ''Любое число вхождений''.
+
#Эпиграф '''[[Элемент epigraph|&lt;epigraph&gt;]]'''. ''Любое число вхождений''.
#Раздел '''<section>'''. ''Любое число вхождений''.
+
#Раздел '''[[Элемент section|&lt;section&gt;]]'''. ''Одно или более вхождений''.
  
Откуда видно, что ни один подраздел не является обязательным.
+
Откуда видно, что обязателен только раздел '''[[Элемент section|&lt;section&gt;]]'''.
  
Для раздела '''<section>''' имя описывается свойством '''id'''. Например так:
+
Для раздела '''[[Элемент section|&lt;section&gt;]]''' имя описывается свойством '''id'''. Например так:
  
 
<pre><section id="note33"></pre>
 
<pre><section id="note33"></pre>
  
Раздел '''<section>''' состоит из следующих частей в указанном порядке:
+
Раздел '''[[Элемент section|&lt;section&gt;]]''' состоит из следующих частей в указанном порядке:
  
#Заголовок '''<title>'''. ''От нуля до одного вхождений''.
+
#Заголовок '''[[Элемент title|&lt;title&gt;]]'''. ''От нуля до одного вхождений''.
#Эпиграф '''<epigraph>'''. ''Любое число вхождений''.
+
#Эпиграф '''[[Элемент epigraph|&lt;epigraph&gt;]]'''. ''Любое число вхождений''.
#Картинка '''<image/>''', которая будет отображаться вверху раздела. ''От нуля до одного вхождений''.
+
#Картинка '''[[Элемент image|&lt;image/&gt;]]''', которая будет отображаться вверху раздела. ''От нуля до одного вхождений''.
#Аннотация '''<annotation>''', описывающая раздел. ''От нуля до одного вхождений''.
+
#Аннотация '''[[Элемент annotation|&lt;annotation&gt;]]''', описывающая раздел. ''От нуля до одного вхождений''.
#Либо подраздел '''<section>''' (''любое число вхождений''), либо форматированный текст с картинками (''любое число вхождений'').
+
#Одно из двух. Либо подраздел '''[[Элемент section|&lt;section&gt;]]''' (''одно или более вхождений''); либо форматированный текст с картинками - тэги '''[[Элемент p|&lt;p&gt;]]''', '''[[Элемент image|&lt;image&gt;]]''', '''[[Элемент poem|&lt;poem&gt;]]''', '''[[Элемент subtitle|&lt;subtitle&gt;]]''', '''[[Элемент cite|&lt;cite&gt;]]''', '''[[Элемент empty-line|&lt;empty-line/&gt;]]''', '''[[Элемент table|&lt;table&gt;]]''' (''одно или более вхождений''), но первый тэг не может быть '''[[Элемент image|&lt;image&gt;]]'''.
  
Следовательно ни один подраздел не является обязательным.
+
Следовательно, обязательно наличие либо вложенного подраздела '''[[Элемент section|&lt;section&gt;]]''', либо форматированного текста с картинками.
  
Разделов '''<body>''' в документе может быть несколько. Это используется, например, для оформления примечаний (footnotes). По умолчанию пользователю показывается первый раздел '''<body>''', а содержание остальных должно быть доступно по гиперссылкам. Имя раздела должно отражать смысл его содержания, но для основного раздела это необязательно.
+
Разделов '''[[Элемент body|&lt;body&gt;]]''' в документе может быть несколько. Это используется, например, для оформления примечаний (footnotes). По умолчанию пользователю показывается первый раздел '''[[Элемент body|&lt;body&gt;]]''', а содержание остальных должно быть доступно по гиперссылкам. Имя раздела должно отражать смысл его содержания, но для основного раздела это необязательно.
  
Разделы '''<section>''' должны иметь вложенную структуру согласно иерархии оглавления. Например, если документ делится на части, которые в свою очередь делятся на главы, то части будут будут описаны в разделе '''<section>''' первого уровня, а главы ? в подразделе второго уровня. Проще понять это на примере:
+
Разделы '''[[Элемент section|&lt;section&gt;]]''' должны иметь вложенную структуру согласно иерархии оглавления. Например, если документ делится на части, которые в свою очередь делятся на главы, то части будут будут описаны в разделе '''[[Элемент section|&lt;section&gt;]]''' первого уровня, а главы - в подразделе второго уровня. Проще понять это на примере:
  
 
<pre><body>
 
<pre><body>
Строка 213: Строка 296:
 
Принято названия глав писать маленькими буквами, начиная с большой.
 
Принято названия глав писать маленькими буквами, начиная с большой.
  
Еще принято кроме того, что указано в заголовке, давать имя автора и название книги в тексте документа до того, как открывается '''<section>''' первого уровня, то есть в '''<title>''', относящемся к '''<body>'''. Это видно из вышеприведенного примера.
+
Еще принято кроме того, что указано в заголовке, давать имя автора и название книги в тексте документа до того, как открывается '''[[Элемент section|&lt;section&gt;]]''' первого уровня, то есть в '''[[Элемент title|&lt;title&gt;]]''', относящемся к '''[[Элемент body|&lt;body&gt;]]'''. Это видно из вышеприведенного примера.
 +
 
  
 
=== Форматированный текст ===
 
=== Форматированный текст ===
  
 +
Форматированный текст представляет собой последовательность фрагментов, ограниченных тэгами '''[[Элемент p|&lt;p&gt;]]''', '''[[Элемент poem|&lt;poem&gt;]]''', '''[[Элемент subtitle|&lt;subtitle&gt;]]''', '''[[Элемент cite|&lt;cite&gt;]]''', '''[[Элемент table|&lt;table&gt;]]'''. Также могут входить пустые строки - '''[[Элемент empty-line|&lt;empty-line/&gt;]]'''.
  
Форматированный текст представляет собой последовательность фрагментов, ограниченных тэгами '''<nowiki><p></nowiki>''', '''<poem>''', '''<subtitle>''', '''<nowiki><cite></nowiki>''', '''<nowiki><table></nowiki>'''. Также могут входить пустые строки ? '''<empty-line/>'''.
+
Тэг '''[[Элемент p|&lt;p&gt;]]''' предназначен для описания одного абзаца текста книги.
 
+
Тэг '''<nowiki><p></nowiki>''' предназначен для описания одного абзаца текста книги.
+
  
 
Например:
 
Например:
Строка 227: Строка 310:
 
<p>Еще один абзац текста.</p></pre>
 
<p>Еще один абзац текста.</p></pre>
  
 +
Тэг '''[[Элемент p|&lt;p&gt;]]''' может быть вложен в тэги '''[[Элемент title|&lt;title&gt;]]''', '''[[Элемент cite|&lt;cite&gt;]]''', '''[[Элемент epigraph|&lt;epigraph&gt;]]''', '''[[Элемент annotation|&lt;annotation&gt;]]''', '''[[Элемент section|&lt;section&gt;]]'''.
  
=== Пустые строки ===
 
  
 +
=== Пустые строки ===
  
Если нужно в форматированном тексте вставить пустую строку, это делается с помощью тэга '''<empty-line/>'''. Один такой тэг ? одна пустая строка. Закрывающий тэг в данном случае не требуется.
+
Если нужно в форматированном тексте вставить пустую строку, это делается с помощью тэга '''[[Элемент empty-line|&lt;empty-line/&gt;]]'''. Один такой тэг - одна пустая строка. Закрывающий тэг в данном случае не требуется.
  
 
Например:
 
Например:
Строка 240: Строка 324:
 
</pre>
 
</pre>
  
=== Жирный и курсивный ===
 
  
 +
=== Жирный и курсивный текст ===
  
Для форматированного текста, то есть внутри тэгов '''<nowiki><p></nowiki>''', '''<poem>''', '''<subtitle>''', '''<nowiki><table></nowiki>''' возможно описать текст как жирный или курсивный. Жирный текст следует выделить тэгом '''<nowiki><strong></nowiki>''', а курсивный ? тэгом '''<emphasis>'''.
+
Для форматированного текста, а именно внутри тэгов '''[[Элемент p|&lt;p&gt;]]''', '''[[Элемент v|&lt;v&gt;]]''', '''[[Элемент subtitle|&lt;subtitle&gt;]]''', '''[[Элемент text-author|&lt;text-author&gt;]]''' возможно описать текст как жирный или курсивный. Жирный текст следует выделить тэгом '''[[Элемент strong|&lt;strong&gt;]]''', а курсивный - тэгом '''[[Элемент emphasis|&lt;emphasis&gt;]]'''.
  
 
Например:
 
Например:
  
 
<pre><p>Вот это слово выведем <strong>жирным</strong>,
 
<pre><p>Вот это слово выведем <strong>жирным</strong>,
а вот это ? <emphasis>курсивным</emphasis>.</p></pre>
+
а вот это - <emphasis>курсивным</emphasis>.</p></pre>
 +
 
 +
 
 +
=== Верхние и нижние индексы ===
 +
 
 +
В форматированном тексте (внутри тэгов '''[[Элемент p|&lt;p&gt;]]''', '''[[Элемент v|&lt;v&gt;]]''', '''[[Элемент subtitle|&lt;subtitle&gt;]]''', '''[[Элемент text-author|&lt;text-author&gt;]]''') можно задать для текста начертание как верхний или нижний индекс. Для нижних индексов (уменьшенные буквы внизу строки) используется выделение тэгом '''[[Элемент sub|&lt;sub&gt;]]''', а для верхних индексов (уменьшенные буквы вверху строки) - выделение тэгом '''[[Элемент sup|&lt;sup&gt;]]'''.
 +
 
 +
Пример:
 +
 
 +
<pre>
 +
<p>2<sup>4</sup>=16</p>
 +
<p>a<sub>1</sub>+a<sub>2</sub>=b</p>
 +
</pre>
 +
 
 +
=== Перечеркнутый текст ===
 +
 
 +
В форматированном тексте (внутри тэгов '''[[Элемент p|&lt;p&gt;]]''', '''[[Элемент v|&lt;v&gt;]]''', '''[[Элемент subtitle|&lt;subtitle&gt;]]''', '''[[Элемент text-author|&lt;text-author&gt;]]''') можно задать для текста отображение перечеркнутым шрифтом. Для этого используется выделение тэгом '''[[Элемент strikethrough|&lt;strikethrough&gt;]]'''.
 +
 
 +
<pre>
 +
<p><strikethrough>Перечеркнутый текст.</strikethrough></p>
 +
</pre>
 +
 
 +
 
 +
=== Программный код ===
 +
 
 +
В форматированном тексте (внутри тэгов '''[[Элемент p|&lt;p&gt;]]''', '''[[Элемент v|&lt;v&gt;]]''', '''[[Элемент subtitle|&lt;subtitle&gt;]]''', '''[[Элемент text-author|&lt;text-author&gt;]]''') можно логически разметить текст, который при просмотре файла должен быть отображен как программный код. Для этого используется выделение тэгом '''[[Элемент code|&lt;code&gt;]]'''. Читалкам рекомендуется текст внутри этого тэга оформлять при выводе моноширинным шрифтом (то есть шрифтом, символы которого имеют одинаковую ширину).
 +
 
 +
<pre>
 +
<p><code>Assign(f,'name.txt');</code></p>
 +
</pre>
  
  
 
=== Заголовки ===
 
=== Заголовки ===
  
 +
Заголовки частей книги описываются тэгом '''[[Элемент title|&lt;title&gt;]]''', который содержит в себе форматированный текст. Тэг '''[[Элемент title|&lt;title&gt;]]''' как заголовок части книги может быть вложенным в тэги '''[[Элемент body|&lt;body&gt;]]''' и '''[[Элемент section|&lt;section&gt;]]''', причем ''более одного заголовка в разделе не допускается, а может его и не быть вовсе''.
  
Заголовки описываются тэгом '''<title>''', который содержит в себе форматированный текст. Тэг '''<title>''' может быть вложенным в тэги '''<body>''' и '''<section>''', причем ''более одного заголовка в разделе не допускается, а может его и не быть вовсе''.
+
В тэг '''[[Элемент title|&lt;title&gt;]]''' могут быть вложены только тэги '''[[Элемент p|&lt;p&gt;]]''' и/или '''[[Элемент empty-line|&lt;empty-line/&gt;]]'''.
  
Пример:
+
Вот пример правильного оформления заголовка с пустой строкой:
  
 
<pre><title>
 
<pre><title>
 +
<p>Глава 1</p>
 +
<empty-line/>
 
  <p>От Александрии до Лондона</p>
 
  <p>От Александрии до Лондона</p>
 
</title></pre>
 
</title></pre>
  
=== Подзаголовки ===
+
Тэг '''[[Элемент title|&lt;title&gt;]]''' может быть вложен в тэги '''[[Элемент body|&lt;body&gt;]]''', '''[[Элемент section|&lt;section&gt;]]''', '''[[Элемент poem|&lt;poem&gt;]]''', '''[[Элемент stanza|&lt;stanza&gt;]]'''.
  
  
Подзаголовки описываются тэгом '''<subtitle>''', который содержит простой (неформатированный) текст. Тэг '''<subtitle>''' может быть вложенным в тэги '''<body>''' и '''<section>'''.
+
=== Подзаголовки ===
 +
 
 +
Подзаголовки описываются тэгом '''[[Элемент subtitle|&lt;subtitle&gt;]]''', который содержит простой (неформатированный) текст. Тэг '''[[Элемент subtitle|&lt;subtitle&gt;]]''' может быть вложенным в тэги '''[[Элемент body|&lt;body&gt;]]''', '''[[Элемент section|&lt;section&gt;]]''', '''[[Элемент cite|&lt;cite&gt;]]''' и '''[[Элемент stanza|&lt;stanza&gt;]]'''.
  
 
Обычно описание подзаголовка выглядит так:
 
Обычно описание подзаголовка выглядит так:
Строка 276: Строка 394:
 
=== Стихи ===
 
=== Стихи ===
  
Чтобы разместить стихотворение в тексте документа, используют тэг '''<poem>'''. Он может нести внутри себя следующие части в указанном порядке:
+
Чтобы разместить стихотворение в тексте документа, используют тэг '''[[Элемент poem|&lt;poem&gt;]]'''. Он может нести внутри себя следующие части в указанном порядке:
  
#Заголовок '''<title>'''. ''От нуля до одного вхождений''.
+
#Заголовок '''[[Элемент title|&lt;title&gt;]]'''. ''От нуля до одного вхождений''.
#Эпиграф '''<epigraph>'''. ''Любое число вхождений''.
+
#Эпиграф '''[[Элемент epigraph|&lt;epigraph&gt;]]'''. ''Любое число вхождений''.
#Строфы '''<stanza>'''. ''Одно или более вхождений''. Строфа '''<stanza>''' ? это группа строк стихотворения, отделенная пустым промежутком от остальных строк. Отдельная строка стихотворения помечается тэгом '''<v>''', который должен быть вложен в '''<stanza>'''.
+
#Строфы '''[[Элемент stanza|&lt;stanza&gt;]]'''. ''Одно или более вхождений''. Строфа '''[[Элемент stanza|&lt;stanza&gt;]]''' - это группа строк стихотворения, отделенная пустым промежутком от остальных строк. Отдельная строка стихотворения помечается тэгом '''[[Элемент v|&lt;v&gt;]]''', который должен быть вложен в '''[[Элемент stanza|&lt;stanza&gt;]]'''. Кроме того в состав '''[[Элемент stanza|&lt;stanza&gt;]]''' могут входить тэги '''[[Элемент title|&lt;title&gt;]]''' (заголовок) и '''[[Элемент subtitle|&lt;subtitle&gt;]]''' (подзаголовок).
#Автор стихотворения '''<text-author>'''. ''Любое число вхождений''.
+
#Автор стихотворения '''[[Элемент text-author|&lt;text-author&gt;]]'''. ''Любое число вхождений''.
#Дата написания '''<date>'''. ''От нуля до одного вхождений''.
+
#Дата написания '''[[Элемент date|&lt;date&gt;]]'''. ''От нуля до одного вхождений''.
 +
 
 +
То есть обязательно присутствует как минимум одна строфа '''[[Элемент stanza|&lt;stanza&gt;]]''', а остальное добавляется при необходимости.
  
 
Например, стихотворение из двух строф:
 
Например, стихотворение из двух строф:
  
 
+
''Наша Таня громко плачет,''<br>
''Наша Таня громко плачет,''
+
 
+
 
''Уронила в речку мячик.''
 
''Уронила в речку мячик.''
  
+
''Тише, Танечка, не плачь,''<br>
''Тише, Танечка, не плачь,''
+
 
+
 
''Не утонет в речке мяч.''
 
''Не утонет в речке мяч.''
 
  
 
Следует разметить таким образом:
 
Следует разметить таким образом:
  
<pre><poem><stanza><v>Наша Таня громко плачет,</v>
+
<pre><poem>
<v>Уронила в речку мячик.</v></stanza>
+
  <stanza>
<stanza><v>Тише, Танечка, не плачь,</v>
+
    <v>Наша Таня громко плачет,</v>
<v>Не утонет в речке мяч.</v></stanza></poem></pre>
+
    <v>Уронила в речку мячик.</v>
 +
  </stanza>
 +
  <stanza>
 +
    <v>Тише, Танечка, не плачь,</v>
 +
    <v>Не утонет в речке мяч.</v>
 +
  </stanza>
 +
</poem></pre>
  
=== Эпиграфы ===
 
  
 +
=== Эпиграфы ===
  
Для оформления эпиграфов предусмотрен тэг '''<epigraph>''', который должен содержать внутри себя форматированный текст (любое число вхождений), а затем автора текста (тоже любое число вхождений).
+
Для оформления эпиграфов предусмотрен тэг '''[[Элемент epigraph|&lt;epigraph&gt;]]''', который должен содержать внутри себя форматированный текст - тэги '''[[Элемент p|&lt;p&gt;]]''', '''[[Элемент poem|&lt;poem&gt;]]''', '''[[Элемент cite|&lt;cite&gt;]]''', '''[[Элемент empty-line|&lt;empty-line/&gt;]]''' (''любое число вхождений''), а затем автора текста '''[[Элемент text-author|&lt;text-author&gt;]]''' (''тоже любое число вхождений'').
  
 
Пример:
 
Пример:
Строка 319: Строка 440:
 
</epigraph></pre>
 
</epigraph></pre>
  
 +
Тэг '''[[Элемент epigraph|&lt;epigraph&gt;]]''' может быть вложен в тэги '''[[Элемент body|&lt;body&gt;]]''', '''[[Элемент section|&lt;section&gt;]]''' и '''[[Элемент poem|&lt;poem&gt;]]'''.
  
=== Цитированный текст ===
 
  
 +
=== Цитированный текст ===
  
Для разметки цитированного текста существует тэг '''<nowiki><cite></nowiki>''', который может содержать форматированный текст (''любое число вхождений''), а затем автора цитаты (''любое число вхождений'').
+
Для разметки цитированного текста существует тэг '''[[Элемент cite|&lt;cite&gt;]]''', который может содержать форматированный текст - вложенные тэги '''[[Элемент p|&lt;p&gt;]]''', '''[[Элемент poem|&lt;poem&gt;]]''', '''[[Элемент empty-line|&lt;empty-line/&gt;]]''', '''[[Элемент subtitle|&lt;subtitle&gt;]]''', '''[[Элемент table|&lt;table&gt;]]''' (''любое число вхождений''), а затем автора цитаты '''[[Элемент text-author|&lt;text-author&gt;]]''' (''любое число вхождений'').
  
 
Пример:
 
Пример:
  
 
<pre><cite>
 
<pre><cite>
   <p>Время ? деньги.<p>
+
   <p>Время - деньги.<p>
 
   <text-author>Бенджамин Франклин</text-author>
 
   <text-author>Бенджамин Франклин</text-author>
 
</cite>
 
</cite>
Строка 336: Строка 458:
 
=== Автор цитаты ===
 
=== Автор цитаты ===
  
 
+
Внутри тэгов '''[[Элемент poem|&lt;poem&gt;]]''', '''[[Элемент cite|&lt;cite&gt;]]''' и '''[[Элемент epigraph|&lt;epigraph&gt;]]''' возможно указать автора соответственно стихотворения, цитаты или эпиграфа. Для этого служит тэг '''[[Элемент text-author|&lt;text-author&gt;]]'''. Внутри cite и epigraph этот тэг должен стоять в самом конце родительского тэга, то есть непосредственно перед его (родительского тэга) закрытием. Внутри же poem тэг '''[[Элемент text-author|&lt;text-author&gt;]]''' може быть либо последний, либо предпоследний перед '''[[Элемент date|&lt;date&gt;]]''', как это описано в главе ?Стихи? данного описания. ''Допускается любое число вхождений тэга '''[[Элемент text-author|&lt;text-author&gt;]]'''''.
Внутри тэгов '''<poem>''', '''<nowiki><cite></nowiki>''' и '''<epigraph>''' возможно указать автора соответственно стихотворения, цитаты или эпиграфа. Для этого служит тэг '''<text-author>'''. Этот тэг должен стоять в самом конце родительского тэга, то есть непосредственно перед его закрытием. ''Допускается любое число вхождений тэга '''<text-author>'''''.
+
  
 
Вот пример:
 
Вот пример:
Строка 346: Строка 467:
 
   <text-author>В. Андреев</text-author>
 
   <text-author>В. Андреев</text-author>
 
</epigraph></pre>
 
</epigraph></pre>
 
  
 
=== Картинки ===
 
=== Картинки ===
  
 
+
Картинки вставляются с помощью тэга '''[[Элемент image|&lt;image/&gt;]]''' (закрывающий тэг не требуется). Он может иметь атрибуты '''type''', '''href''', '''alt''', '''title''', '''id'''. Свойство '''href''' указывает на адрес картинки. Если адрес картинки начинается с символа # (решетка), то картинка находится внутри документа.
Картинки вставляются с помощью тэга '''<image/>''' (закрывающий тэг не требуется). Свойство '''href''' указывает на адрес картинки. Если адрес картинки начинается с символа # (решетка), то картинка находится внутри документа.
+
  
 
Пример:
 
Пример:
  
<pre><image l:href="#cover.jpg"/></pre>
+
<pre><p>Абзац текста до картинки.</p>
 +
<image l:href="#picture.jpg"/>
 +
<p>Абзац текста после картинки.</p>
 +
</pre>
  
В этом примере в текст вставляется картинка cover.jpg, приложенная к документу (на что указывает символ решетки перед именем).
+
В этом примере в текст вставляется картинка picture.jpg, приложенная к документу (на что указывает символ решетки перед именем).
  
 +
Тэг '''[[Элемент image|&lt;image/&gt;]]''' может быть вложен в тэги '''[[Элемент body|&lt;body&gt;]]''', '''[[Элемент section|&lt;section&gt;]]''', и в этом случае он описывает просто картинку. Если же  '''[[Элемент image|&lt;image/&gt;]]''' вложен в '''[[Элемент p|&lt;p&gt;]]''' или '''[[Элемент coverpage|&lt;coverpage&gt;]]''', он обозначает inline-картинку, то есть такую, которая отображается наравне с текстом, внутри его. У Inline-картинок допустимы только атрибуты '''type''', '''href''', '''alt'''.
 +
 +
Файл обложки принято называть cover.jpg или cover.png.
  
 
=== Ссылки ===
 
=== Ссылки ===
  
 +
Ссылки вставляются с помощью тэга '''[[Элемент a|&lt;a&gt;]]''', который может быть вложен в абзацный тэг '''[[Элемент p|&lt;p&gt;]]'''. Свойство '''href''' определяет адрес ссылки. Адреса с символа # (решетка) задают расположение внутри документа.
  
Ссылки вставляются с помощью тэга '''<a>'''. Свойство '''href''' определяет адрес ссылки. Адреса с символа # (решетка) задают расположение внутри документа.
+
Пример:
  
Примеры:
+
<pre><p>Об этом вы можете прочитать <a l:href="#n1">здесь</a>.</p></pre>
  
<pre><a l:href="#n1" type="note">[1]</a></pre>
+
В этом примере текстом ссылки будет ?здесь?, а указывать она будет на элемент с идентификатором '''n1''' внутри документа.
  
В этом примере текстом ссылки будет '''[1]''', а указывать она будет на раздел с идентификатором '''n1''' внутри документа.
+
В '''l:href''' вместо '''l''' может быть и другой идентификатор, подробнее это описано в главе "Раздел FictionBook".
  
В '''l:href''' вместо '''l''' может быть и другой идентификатор, подробнее это описано в разделе "Раздел FictionBook".
+
Также тэг '''[[Элемент a|&lt;a&gt;]]''' может иметь атрибут '''type''', что используется при создании ссылок на примечания и описано в разделе "Примечания" данного описания.
  
  
=== Примечания ===
+
=== Таблицы ===
  
 +
Таблицы оформляются при помощи тэга '''[[Элемент table|&lt;table&gt;]]''', который может быть вложен в '''[[Элемент cite|&lt;cite&gt;]]''', '''[[Элемент section|&lt;section&gt;]]''' и/или '''[[Элемент annotation|&lt;annotation&gt;]]'''.
 +
 +
Этот тэг может иметь свойства '''id''' и '''style'''. '''id''' описывает идентификатор таблицы, который можно использовать в ссылке, а '''style''' определяет, какой стиль отображения сопоставлен данной таблице.
 +
 +
Тэг '''[[Элемент table|&lt;table&gt;]]''' содержит вложенные тэги '''[[Элемент tr|&lt;tr&gt;...&lt;/tr&gt;]]''', каждый '''[[Элемент tr|&lt;tr&gt;]]''' описывает один горизонтальный ряд ячеек таблицы. Этот тэг может иметь атрибут '''align''', которое предписывает программе-просмотрщику использовать определенный тип горизонтального выравнивания для ряда таблицы. Этот атрибут может принимать значения '''"left"''' (по левому краю), '''"right"''' (по правому краю) или '''"center"''' (центрирование). По умолчанию используется значение '''"left"'''.
 +
 +
Тэг '''[[Элемент tr|&lt;tr&gt;]]''', в свою очередь, содержит вложенные тэги '''[[Элемент th|&lt;th&gt;]]''' и '''[[Элемент td|&lt;td&gt;]]''' (''в любом количестве и порядке каждый''). '''[[Элемент th|&lt;th&gt;]]''' описывает ячейку, которая должна быть отображена как заголовок таблицы. '''[[Элемент tr|&lt;tr&gt;]]''' обрамляет простую ячейку таблицы. Эти два тэга могут содержать только текст без всяких тэгов.
 +
 +
Тэги '''[[Элемент th|&lt;th&gt;]]''' и '''[[Элемент td|&lt;td&gt;]]''' могут иметь атрибуты '''id''', '''style''', '''colspan''', '''rowspan''' и '''align'''. Свойство '''id''' задает идентификатор, по которому на ячейку можно сослаться. Атрибут '''style''' назначает стиль оформления для ячейки (нужно при использовании CSS). Свойства '''colspan''' и '''rowspan''' определяют количество колонок и рядов, которые занимает ячейка, что позволяет "растягивать" ее по вертикали или горизонтали. Атрибут '''align''' описывает тип горизонтального выравнивания, аналогично одноименному свойству тэга '''[[Элемент table|&lt;table&gt;]]'''.
 +
 +
В примере показано, как оформить таблицей небольшую табличку умножения:
 +
<pre>
 +
<table>
 +
<tr>
 +
  <th></th>
 +
  <th>2</th>
 +
  <th>3</th>
 +
  <th>4</th>
 +
</tr>
 +
<tr>
 +
  <th>5</th>
 +
  <td>10</td>
 +
  <td>15</td>
 +
  <td>20</td>
 +
</tr>
 +
<tr>
 +
  <th>6</th>
 +
  <td>12</td>
 +
  <td>18</td>
 +
  <td>24</td>
 +
</tr>
 +
<tr>
 +
  <th>7</th>
 +
  <td>14</td>
 +
  <td>21</td>
 +
  <td>28</td>
 +
</tr>
 +
</table></pre>
 +
 +
{| border=1
 +
|bgcolor=#CCFF00|
 +
|bgcolor=#CCFF00|2
 +
|bgcolor=#CCFF00|3
 +
|bgcolor=#CCFF00|4
 +
|-
 +
|bgcolor=#CCFF00|5
 +
|10
 +
|15
 +
|20
 +
|-
 +
|bgcolor=#CCFF00|6
 +
|12
 +
|18
 +
|24
 +
|-
 +
|bgcolor=#CCFF00|7
 +
|14
 +
|21
 +
|28
 +
|}
 +
 +
 +
=== Примечания ===
  
Примечания к тексту книги должны находиться в специальном разделе '''<body>''', поименнованном '''notes''', то есть описан он должен быть как '''<body name="notes">'''. Каждое примечание должно находиться в отдельном разделе '''<section>''' и иметь уникальный '''id''', по которому оно будет доступно в ссылках. Вот типичный пример оформления тела примечаний:
+
Примечания к тексту книги должны находиться в специальном разделе '''[[Элемент body|&lt;body&gt;]]''', поименнованном '''notes''', то есть описан он должен быть как '''[[Элемент body|&lt;body name="notes"&gt;]]''', причем именно так - notes - пятью маленькими буквами и не иначе. Каждое примечание должно находиться в отдельном разделе '''[[Элемент section|&lt;section&gt;]]''' и иметь уникальный '''id''', по которому оно будет доступно в ссылках. Вот типичный пример оформления тела примечаний:
  
 
<pre> <body name="notes">
 
<pre> <body name="notes">
Строка 398: Строка 587:
 
</pre>
 
</pre>
  
Ссылка на примечание должна иметь свойство type, равное значению '''"note"'''. Соответствующая размещенному выше примеру ссылка на первое примечание будет выглядеть таким образом:
+
Ссылка на примечание должна иметь свойство '''type''', равное значению '''"note"'''. Соответствующая размещенному выше примеру ссылка на первое примечание будет выглядеть таким образом:
  
 
<pre>в стиле Роберта Адама <a l:href="#note1" type="note">[1]</a></pre>
 
<pre>в стиле Роберта Адама <a l:href="#note1" type="note">[1]</a></pre>
  
=== Вложения ===
 
  
 +
=== Двоичные вложения ===
  
 
К документу FB2 могут быть приложены файлы, например картинки или что-нибудь другое. (Библиотека, правда, не примет файлы с иными вложениями, чем картинки).
 
К документу FB2 могут быть приложены файлы, например картинки или что-нибудь другое. (Библиотека, правда, не примет файлы с иными вложениями, чем картинки).
  
Вот пример вложения:
+
Для описания двоичных вложений служит элемент '''[[Элемент binary|&lt;binary&gt;]]''', который идет  в документе вслед за последним элементом '''[[Элемент body|&lt;body&gt;]]'''. Вот пример вложения:
  
 
<pre><binary id="cover.jpg" content-type="image/jpeg">
 
<pre><binary id="cover.jpg" content-type="image/jpeg">
Строка 413: Строка 602:
 
DA4NDQ4MEQ8SExQTEg8YGBoaGBgjIiIiIycnJycnJycnJycBCQgICQoJCwkJCw4LDQsOEQ4O
 
DA4NDQ4MEQ8SExQTEg8YGBoaGBgjIiIiIycnJycnJycnJycBCQgICQoJCwkJCw4LDQsOEQ4O
 
...
 
...
h9x8OJ/B/c+gfbXM/wDQ/qcPZ9HHjqaPi17zZ4+6deEYNxtP+H1v8Opsec//2Q==</binary>
+
h9x8OJ/B/c+gfbXM/wDQ/qcPZ9HHjqaPi17zZ4+6deEYNxtP+H1v8Opsec//2Q==
 +
</binary>
 
</pre>
 
</pre>
  
Свойство '''id''' описывает идентификатор (имя) двоичного объекта, а свойство '''content-type''' ? MIME-тип вложения. Внутри тэга '''<binary>''' находится файл, закодированный по методу BASE64.
+
Свойство '''id''' описывает идентификатор (имя) двоичного объекта, а свойство '''content-type''' - MIME-тип вложения. Содержанием элемента '''[[Элемент binary|&lt;binary&gt;]]''' является файл, закодированный по методу BASE64.
  
 
Чтобы библиотека приняла файл, нужно чтобы в документе не было приложенных объектов, на которые нет ссылки, и чтобы не было ссылок, которые указывают на двоичные объекты, не приложенные к файлу.
 
Чтобы библиотека приняла файл, нужно чтобы в документе не было приложенных объектов, на которые нет ссылки, и чтобы не было ссылок, которые указывают на двоичные объекты, не приложенные к файлу.
Строка 423: Строка 613:
  
  
=== Юникодные символы ===
+
=== Символы Unicode ===
 
+
  
 
В текст можно вставлять символы по их коду в таблице Unicode. Для этого нужно написать значок &, потом значок #, потом десятичный код символа, потом точку с запятой.
 
В текст можно вставлять символы по их коду в таблице Unicode. Для этого нужно написать значок &, потом значок #, потом десятичный код символа, потом точку с запятой.
  
Например для значка ? (не равно) ? код 8800, надо написать так:
+
Например для значка ? (не равно) ? десятичный код 8800, надо написать так:
  
''&#8800'';
+
&amp;#8800;
  
 
=== Список возможных жанров ===
 
=== Список возможных жанров ===
  
 
+
[[Жанры FictionBook 2.1|Здесь]] перечислены значения, которые принимает поле '''[[Элемент genre|&lt;genre&gt;]]''' в заголовке FB2-документа.
[[Жанры FictionBook 2.1|Здесь]] перечислены значения, которые принимает поле '''<genre>''' в заголовке FB2-документа.
+
<pre>sf_history              Альтернативная история
<p class=p>Далее перечислены значения, которые принимает поле <b>&lt;genre&gt;</b> в заголовке FB2-документа.</p>
+
<p class=p><pre>sf_history              Альтернативная история
+
 
sf_action              Боевая Фантастика
 
sf_action              Боевая Фантастика
 
sf_epic                Эпическая Фантастика
 
sf_epic                Эпическая Фантастика
Строка 561: Строка 748:
 
home_sport              Спорт
 
home_sport              Спорт
 
home_sex                Эротика, Секс
 
home_sex                Эротика, Секс
home                    Дом и Семья: Прочее</pre></p>
+
home                    Дом и Семья: Прочее</pre>
 +
 
  
 
== Список возможных языков ==
 
== Список возможных языков ==
<p class=p>Ниже приведены коды языков, которые можно прописывать в тэгах <b>&lt;lang&gt;</b> и <b>&lt;src-lang&gt;</b>. Например, волапюк это vo.</p>
+
 
<p class=p>Основные кодировки (самые частые):</p>
+
Ниже приведены коды языков, которые можно прописывать в тэгах '''[[Элемент lang|&lt;lang&gt;]]''' и '''[[Элемент src-lang|&lt;src-lang&gt;]]'''.
 +
 
 +
Здесь приведены только основные кодировки, полный список содержится в стандарте [[:ru:ISO 639|ISO 639]]:
 
<pre>
 
<pre>
 +
abk      ab    Абхазский
 +
aze      az    Азербайджанский
 +
alb/sqi  sq    Албанский
 
eng      en    Английский
 
eng      en    Английский
 +
arm/hye  hy    Армянский
 +
BA            Башкирский
 
bel      be    Белорусский
 
bel      be    Белорусский
 
bul      bg    Болгарский
 
bul      bg    Болгарский
 
hun      hu    Венгерский
 
hun      hu    Венгерский
 +
vie      vi    Вьетнамский
 
dut/nla  nl    Голландский
 
dut/nla  nl    Голландский
 
ell/gre  el    Греческий современный (1453-)
 
ell/gre  el    Греческий современный (1453-)
Строка 576: Строка 772:
 
grc            Древнегреческий (до 1453)
 
grc            Древнегреческий (до 1453)
 
heb      he    Иврит
 
heb      he    Иврит
 +
esl/spa  es    Испанский
 
ita      it    Итальянский
 
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    Немецкий
 
deu/ger  de    Немецкий
 +
mul            Несколько языков
 +
und            Неопределенный
 +
nor      no    Норвежский
 +
fas/per  fa    Персидский
 
pol      pl    Польский
 
pol      pl    Польский
 
por      pt    Португальский
 
por      pt    Португальский
 
rus      ru    Русский
 
rus      ru    Русский
 +
san      sa    Санскрит
 
slk/slo  sk    Словакский
 
slk/slo  sk    Словакский
 
slv      sl    Словенский
 
slv      sl    Словенский
 +
tgk      tg    Таджикский
 +
tat      tt    Татарский
 
tur      tr    Турецкий
 
tur      tr    Турецкий
 +
uzb      uz    Узбекский
 
ukr      uk    Украинский
 
ukr      uk    Украинский
 +
cym/wel  cy    Уэльский
 
fin      fi    Финский
 
fin      fi    Финский
 
fra/fre  fr    Французский
 
fra/fre  fr    Французский
 +
che            Чеченский
 
ces/cze  cs    Чешский
 
ces/cze  cs    Чешский
 +
        hr    Хорватский
 +
sve/swe  sv    Шведский
 +
epo      eo    Эсперанто
 +
est      et    Эстонский
 
jpn      ja    Японский
 
jpn      ja    Японский
 
</pre>
 
</pre>
<p class=p>Остальные кодировки:</p>
 
<pre>abk      ab    Abkhazian
 
ace            Achinese
 
ach            Acoli
 
ada            Adangme
 
aar      aa    Afar
 
afh            Afrihili
 
afr      af    Afrikaans
 
afa            Afro-Asiatic (Other)
 
aka            Akan
 
akk            Akkadian
 
alb/sqi  sq    Albanian
 
ale            Aleut
 
alg            Algonquian languages
 
tut            Altaic (Other)
 
amh      am    Amharic
 
apa            Apache languages
 
ara      ar    Arabic
 
arc            Aramaic
 
arp            Arapaho
 
arn            Araucanian
 
arw            Arawak
 
arm/hye  hy    Armenian
 
art            Artificial (Other)
 
asm      as    Assamese
 
ath            Athapascan languages
 
map            Austronesian (Other)
 
ava            Avaric
 
ave            Avestan
 
awa            Awadhi
 
aym      ay    Aymara
 
aze      az    Azerbaijani
 
nah            Aztec
 
ban            Balinese
 
bat            Baltic (Other)
 
bal            Baluchi
 
bam            Bambara
 
bai            Bamileke languages
 
bad            Banda
 
bnt            Bantu (Other)
 
bas            Basa
 
bak      ba    Bashkir
 
baq/eus  eu    Basque
 
bej            Beja
 
bem            Bemba
 
ben      bn    Bengali
 
ber            Berber (Other)
 
bho            Bhojpuri
 
bih      bh    Bihari
 
bik            Bikol
 
bin            Bini
 
bis      bi    Bislama
 
bra            Braj
 
bre      be    Breton
 
bug            Buginese
 
bua            Buriat
 
bur/mya  my    Burmese
 
cad              Caddo
 
car            Carib
 
cat      ca    Catalan
 
cau            Caucasian (Other)
 
ceb            Cebuano
 
cel            Celtic (Other)
 
cai            Central American Indian (Other)
 
chg            Chagatai
 
cha            Chamorro
 
che            Chechen
 
chr            Cherokee
 
chy            Cheyenne
 
chb            Chibcha
 
chi/zho  zh    Chinese
 
chn            Chinook jargon
 
cho            Choctaw
 
chu            Church Slavic
 
chv            Chuvash
 
cop            Coptic
 
cor            Cornish
 
cos        co    Corsican
 
cre              Cree
 
crp            Creoles and Pidgins (Other)
 
cpe            Creoles and Pidgins, English-based (Other)
 
cpf            Creoles and Pidgins, French-based (Other)
 
cpp            Creoles and Pidgins, Portuguese-based (Other)
 
cus            Cushitic (Other)
 
        hr    Croatian
 
dak            Dakota
 
del            Delaware
 
din            Dinka
 
div            Divehi
 
doi            Dogri
 
dra            Dravidian (Other)
 
dua            Duala
 
dum            Dutch, Middle (ca. 1050-1350)
 
dyu            Dyula
 
dzo      dz    Dzongkha
 
efi            Efik
 
eka            Ekajuk
 
elx            Elamite
 
enm            English, Middle (ca. 1100-1500)
 
ang            English, Old (ca. 450-1100)
 
esk            Eskimo (Other)
 
epo      eo    Esperanto
 
est      et    Estonian
 
ewe            Ewe
 
ewo            Ewondo
 
fan            Fang
 
fat            Fanti
 
fao      fo    Faroese
 
fij      fj    Fijian
 
fiu            Finno-Ugrian (Other)
 
fon            Fon
 
frm            French, Middle (ca. 1400-1600)
 
fro            French, Old (842- ca. 1400)
 
fry      fy    Frisian
 
ful            Fulah
 
gaa            Ga
 
gae/gdh  Gaelic (Scots)
 
glg      gl    Gallegan
 
lug            Ganda
 
gay            Gayo
 
gez            Geez
 
geo/kat  ka    Georgian
 
gmh            German, Middle High (ca. 1050-1500)
 
goh            German, Old High (ca. 750-1050)
 
gem            Germanic (Other)
 
gil            Gilbertese
 
gon            Gondi
 
got            Gothic
 
grb            Grebo
 
kal      kl    Greenlandic
 
grn      gn    Guarani
 
guj      gu    Gujarati
 
hai            Haida
 
hau      ha    Hausa
 
haw            Hawaiian
 
her            Herero
 
hil            Hiligaynon
 
him            Himachali
 
hin      hi    Hindi
 
hmo            Hiri Motu
 
hup            Hupa
 
iba            Iban
 
ice/isl  is    Icelandic
 
ibo            Igbo
 
ijo            Ijo
 
ilo            Iloko
 
inc            Indic (Other)
 
ine            Indo-European (Other)
 
ind      id    Indonesian
 
ina      ia    Interlingua (International Auxiliary language Association)
 
ine      -    Interlingue
 
iku      iu    Inuktitut
 
ipk      ik    Inupiak
 
ira            Iranian (Other)
 
gai/iri  ga    Irish
 
sga            Irish, Old (to 900)
 
mga            Irish, Middle (900 ? 1200)
 
iro            Iroquoian languages
 
jav/jaw  jv/jw Javanese
 
jrb            Judeo-Arabic
 
jpr            Judeo-Persian
 
kab            Kabyle
 
kac            Kachin
 
kam            Kamba
 
kan      kn    Kannada
 
kau            Kanuri
 
kaa            Kara-Kalpak
 
kar            Karen
 
kas      ks    Kashmiri
 
kaw            Kawi
 
kaz      kk    Kazakh
 
kha            Khasi
 
khm      km    Khmer
 
khi            Khoisan (Other)
 
kho            Khotanese
 
kik            Kikuyu
 
kin      rw    Kinyarwanda
 
kir      ky    Kirghiz
 
kom            Komi
 
kon            Kongo
 
kok            Konkani
 
kor      ko    Korean
 
kpe            Kpelle
 
kro            Kru
 
kua            Kuanyama
 
kum            Kumyk
 
kur      ku    Kurdish
 
kru            Kurukh
 
kus            Kusaie
 
kut            Kutenai
 
lad            Ladino
 
lah            Lahnda
 
lam            Lamba
 
oci      oc    Langue d'Oc (post 1500)
 
lao      lo    Lao
 
lat      la    Latin
 
lav      lv    Latvian
 
ltz            Letzeburgesch
 
lez            Lezghian
 
lin      ln    Lingala
 
lit      lt    Lithuanian
 
loz            Lozi
 
lub            Luba-Katanga
 
lui            Luiseno
 
lun            Lunda
 
luo            Luo (Kenya and Tanzania)
 
mac/mak  mk    Macedonian
 
mad            Madurese
 
mag            Magahi
 
mai            Maithili
 
mak            Makasar
 
mlg      mg    Malagasy
 
may/msa  ms    Malay
 
mal            Malayalam
 
mlt      ml    Maltese
 
man            Mandingo
 
mni            Manipuri
 
mno            Manobo languages
 
max            Manx
 
mao/mri  mi    Maori
 
mar      mr    Marathi
 
chm            Mari
 
mah            Marshall
 
mwr            Marwari
 
mas            Masai
 
myn            Mayan languages
 
men            Mende
 
mic            Micmac
 
min            Minangkabau
 
mis            Miscellaneous (Other)
 
moh            Mohawk
 
mol      mo    Moldavian
 
mkh            Mon-Kmer (Other)
 
lol            Mongo
 
mon      mn    Mongolian
 
mos            Mossi
 
mul            Multiple languages
 
mun            Munda languages
 
nau      na    Nauru
 
nav            Navajo
 
nde            Ndebele, North
 
nbl            Ndebele, South
 
ndo            Ndongo
 
nep      ne    Nepali
 
new            Newari
 
nic            Niger-Kordofanian (Other)
 
ssa            Nilo-Saharan (Other)
 
niu            Niuean
 
non            Norse, Old
 
nai            North American Indian (Other)
 
nor      no    Norwegian
 
nno            Norwegian (Nynorsk)
 
nub            Nubian languages
 
nym            Nyamwezi
 
nya            Nyanja
 
nyn            Nyankole
 
nyo            Nyoro
 
nzi            Nzima
 
oji            Ojibwa
 
ori      or    Oriya
 
orm      om    Oromo
 
osa            Osage
 
oss            Ossetic
 
oto            Otomian languages
 
pal            Pahlavi
 
pau            Palauan
 
pli            Pali
 
pam            Pampanga
 
pag            Pangasinan
 
pan      pa    Panjabi
 
pap            Papiamento
 
paa            Papuan-Australian (Other)
 
fas/per  fa    Persian
 
peo            Persian, Old (ca 600 ? 400 B.C.)
 
phn            Phoenician
 
pon            Ponape
 
pra            Prakrit languages
 
pro            Provencal, Old (to 1500)
 
pus      ps    Pushto
 
que      qu    Quechua
 
roh      rm    Rhaeto-Romance
 
raj            Rajasthani
 
rar            Rarotongan
 
roa            Romance (Other)
 
ron/rum  ro    Romanian
 
rom            Romany
 
run      rn    Rundi
 
sal            Salishan languages
 
sam            Samaritan Aramaic
 
smi            Sami languages
 
smo      sm    Samoan
 
sad            Sandawe
 
sag      sg    Sango
 
san      sa    Sanskrit
 
srd            Sardinian
 
sco            Scots
 
sel            Selkup
 
sem            Semitic (Other)
 
        sr    Serbian
 
scr      sh    Serbo-Croatian
 
srr            Serer
 
shn            Shan
 
sna      sn    Shona
 
sid            Sidamo
 
bla            Siksika
 
snd      sd    Sindhi
 
sin      si    Singhalese
 
sit      -    Sino-Tibetan (Other)
 
sio            Siouan languages
 
sla            Slavic (Other)
 
ssw      ss    Siswant
 
sog            Sogdian
 
som      so    Somali
 
son            Songhai
 
wen            Sorbian languages
 
nso            Sotho, Northern
 
sot      st    Sotho, Southern
 
sai            South American Indian (Other)
 
esl/spa  es    Spanish
 
suk            Sukuma
 
sux            Sumerian
 
sun      su    Sudanese
 
sus            Susu
 
swa      sw    Swahili
 
ssw            Swazi
 
sve/swe  sv    Swedish
 
syr            Syriac
 
tgl      tl    Tagalog
 
tah            Tahitian
 
tgk      tg    Tajik
 
tmh            Tamashek
 
tam      ta    Tamil
 
tat      tt    Tatar
 
tel      te    Telugu
 
ter            Tereno
 
tha      th    Thai
 
bod/tib  bo    Tibetan
 
tig            Tigre
 
tir      ti    Tigrinya
 
tem            Timne
 
tiv            Tivi
 
tli            Tlingit
 
tog      to    Tonga (Nyasa)
 
ton            Tonga (Tonga Islands)
 
tru            Truk
 
tsi            Tsimshian
 
tso      ts    Tsonga
 
tsn      tn    Tswana
 
tum            Tumbuka
 
ota            Turkish, Ottoman (1500 ? 1928)
 
tuk      tk    Turkmen
 
tyv            Tuvinian
 
twi      tw    Twi
 
uga            Ugaritic
 
uig      ug    Uighur
 
umb            Umbundu
 
und            Undetermined
 
urd      ur    Urdu
 
uzb      uz    Uzbek
 
vai            Vai
 
ven            Venda
 
vie      vi    Vietnamese
 
vol      vo    Volap&uuml;k
 
vot            Votic
 
wak            Wakashan languages
 
wal            Walamo
 
war            Waray
 
was            Washo
 
cym/wel  cy    Welsh
 
wol      wo    Wolof
 
xho      xh    Xhosa
 
sah            Yakut
 
yao            Yao
 
yap            Yap
 
yid      yi    Yiddish
 
yor      yo    Yoruba
 
zap            Zapotec
 
zen            Zenaga
 
zha      za    Zhuang
 
zul        zu    Zulu
 
zun            Zuni
 
AA &quot;Afar&quot;
 
AB &quot;Abkhazian&quot;
 
AF &quot;Afrikaans&quot;
 
AM &quot;Amharic&quot;
 
AR &quot;Arabic&quot;
 
AS &quot;Assamese&quot;
 
AY &quot;Aymara&quot;
 
AZ &quot;Azerbaijani&quot;
 
BA &quot;Bashkir&quot;
 
BE &quot;Byelorussian&quot;
 
BG &quot;Bulgarian&quot;
 
BH &quot;Bihari&quot;
 
BI &quot;Bislama&quot;
 
BN &quot;Bengali&quot; &quot;Bangla&quot;
 
BO &quot;Tibetan&quot;
 
BR &quot;Breton&quot;
 
CA &quot;Catalan&quot;
 
CO &quot;Corsican&quot;
 
CS &quot;Czech&quot;
 
CY &quot;Welsh&quot;
 
DA &quot;Danish&quot;
 
DE &quot;German&quot;
 
DZ &quot;Bhutani&quot;
 
EL &quot;Greek&quot;
 
EN &quot;English&quot; &quot;American&quot;
 
EO &quot;Esperanto&quot;
 
ES &quot;Spanish&quot;
 
ET &quot;Estonian&quot;
 
EU &quot;Basque&quot;
 
FA &quot;Persian&quot;
 
FI &quot;Finnish&quot;
 
FJ &quot;Fiji&quot;
 
FO &quot;Faeroese&quot;
 
FR &quot;French&quot;
 
FY &quot;Frisian&quot;
 
GA &quot;Irish&quot;
 
GD &quot;Gaelic&quot; &quot;Scots Gaelic&quot;
 
GL &quot;Galician&quot;
 
GN &quot;Guarani&quot;
 
GU &quot;Gujarati&quot;
 
HA &quot;Hausa&quot;
 
HI &quot;Hindi&quot;
 
HR &quot;Croatian&quot;
 
HU &quot;Hungarian&quot;
 
HY &quot;Armenian&quot;
 
IA &quot;Interlingua&quot;
 
IE &quot;Interlingue&quot;
 
IK &quot;Inupiak&quot;
 
IN &quot;Indonesian&quot;
 
IS &quot;Icelandic&quot;
 
IT &quot;Italian&quot;
 
IW &quot;Hebrew&quot;
 
JA &quot;Japanese&quot;
 
JI &quot;Yiddish&quot;
 
JW &quot;Javanese&quot;
 
KA &quot;Georgian&quot;
 
KK &quot;Kazakh&quot;
 
KL &quot;Greenlandic&quot;
 
KM &quot;Cambodian&quot;
 
KN &quot;Kannada&quot;
 
KO &quot;Korean&quot;
 
KS &quot;Kashmiri&quot;
 
KU &quot;Kurdish&quot;
 
KY &quot;Kirghiz&quot;
 
LA &quot;Latin&quot;
 
LN &quot;Lingala&quot;
 
LO &quot;Laothian&quot;
 
LT &quot;Lithuanian&quot;
 
LV &quot;Latvian&quot; &quot;Lettish&quot;
 
MG &quot;Malagasy&quot;
 
MI &quot;Maori&quot;
 
MK &quot;Macedonian&quot;
 
ML &quot;Malayalam&quot;
 
MN &quot;Mongolian&quot;
 
MO &quot;Moldavian&quot;
 
MR &quot;Marathi&quot;
 
MS &quot;Malay&quot;
 
MT &quot;Maltese&quot;
 
MY &quot;Burmese&quot;
 
NA &quot;Nauru&quot;
 
NE &quot;Nepali&quot;
 
NL &quot;Dutch&quot;
 
NO &quot;Norwegian&quot;
 
OC &quot;Occitan&quot;
 
OM &quot;Oromo&quot; &quot;Afan&quot;
 
OR &quot;Oriya&quot;
 
PA &quot;Punjabi&quot;
 
PL &quot;Polish&quot;
 
PS &quot;Pashto&quot; &quot;Pushto&quot;
 
PT &quot;Portuguese&quot;
 
QU &quot;Quechua&quot;
 
RM &quot;Rhaeto-Romance&quot;
 
RN &quot;Kirundi&quot;
 
RO &quot;Romanian&quot;
 
RU &quot;Russian&quot;
 
RW &quot;Kinyarwanda&quot;
 
SA &quot;Sanskrit&quot;
 
SD &quot;Sindhi&quot;
 
SG &quot;Sangro&quot;
 
SH &quot;Serbo-Croatian&quot;
 
SI &quot;Singhalese&quot;
 
SK &quot;Slovak&quot;
 
SL &quot;Slovenian&quot;
 
SM &quot;Samoan&quot;
 
SN &quot;Shona&quot;
 
SO &quot;Somali&quot;
 
SQ &quot;Albanian&quot;
 
SR &quot;Serbian&quot;
 
SS &quot;Siswati&quot;
 
ST &quot;Sesotho&quot;
 
SU &quot;Sudanese&quot;
 
SV &quot;Swedish&quot;
 
SW &quot;Swahili&quot;
 
TA &quot;Tamil&quot;
 
TE &quot;Tegulu&quot;
 
TG &quot;Tajik&quot;
 
TH &quot;Thai&quot;
 
TI &quot;Tigrinya&quot;
 
TK &quot;Turkmen&quot;
 
TL &quot;Tagalog&quot;
 
TN &quot;Setswana&quot;
 
TO &quot;Tonga&quot;
 
TR &quot;Turkish&quot;
 
TS &quot;Tsonga&quot;
 
TT &quot;Tatar&quot;
 
TW &quot;Twi&quot;
 
UK &quot;Ukrainian&quot;
 
UR &quot;Urdu&quot;
 
UZ &quot;Uzbek&quot;
 
VI &quot;Vietnamese&quot;
 
VO &quot;Volapuk&quot;
 
WO &quot;Wolof&quot;
 
XH &quot;Xhosa&quot;
 
YO &quot;Yoruba&quot;
 
ZH &quot;Chinese&quot;
 
ZU &quot;Zulu&quot;</pre>
 
  
 
[[Категория:FB документы]]
 
[[Категория:FB документы]]

Текущая версия на 17:38, 27 января 2008

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? (ссылаться на неё можно написав ?&lt;?) для левой угловой скобки и ?amp? (ссылка ? ?&amp;?) для амперсанда, возможно также определять собственные сущности. Помимо записи с помощью сущностей отдельных символов, их можно использовать для записи часто встречающихся текстовых блоков. Ниже приведён пример использования предопределённой сущности для избежания использования знака амперсанда в названии:

 <company-name>AT&amp;T</company-name>

Полный список предопределённых сущностей состоит из &amp; (?&?), &lt; (?<?), &gt; (?>?), &apos; (?'?), и &quot; (?"?) ? последние две полезны для записи разделителей внутри значений атрибутов. Определить свои сущности можно в DTD-документе. Иногда бывает необходимо определить неразрывный пробел, который в HTML обозначается как &nbsp; в XML его записывают &#160;

Cсылка по номеру символа выглядит как ссылка на сущность, но вместо имени сущности указывается символ # и число (в десятичной или шестнадцатеричной записи), являющееся номером символа в кодовой таблице Юникод. Это обычно символы, которые невозможно закодировать напрямую, например буква арабского алфавита в ASCII-кодированном документе. Амперсанд может быть представлен следующим образом:

<company-name>AT&#038;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>

Как видно, в первой строке в значении атрибута encoding надо правильно указать кодировку документа. В приведенном примере это windows-1251, а в другом случае могла бы быть и utf-8. utf-8 также является кодировкой по умолчанию, использующейся в случае отсутствия атрибута encoding или всего XML-объявления.

Ниже указано, какая кодировка каким языкам соответствует:

windows-1251 - английский и кириллица (русский, болгарский и т.д.)
windows-1252 - западно-европейские языки (английский, французский, испанский и т.д.)
windows-1250 - английский и восточно-европейские (польский, чешский и т.д.)


Раздел 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 состоит из вложенных подразделов в указанном ниже порядке:

  1. <description> - который описывает заголовок документа. Одно и только одно вхождение. (фразы вроде "одно и только одно вхождение" говорят, сколько раз подряд может идти данный тэг в данном месте документа)
  2. <body> - описывает тело документа. Одно или более вхождений.
  3. <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>


Поля раздела description

Раздел <description> состоит из перечисленных ниже частей в указанном порядке:

  1. <title-info> - данные о книге. Одно и только одно вхождение.
  2. <src-title-info> - данные об исходнике книги (до перевода). От нуля до одного вхождений.
  3. <document-info> - информация об FB2-документе. Одно и только одно вхождение.
  4. <publish-info> - сведения об издании книги, которая была использована как источник при подготовке документа. От нуля до одного вхождений.
  5. <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> - отчество, <nickname> - ник, и <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> - отчество, <nickname> - ник, и <email> - адрес электронной почты. Любое число вхождений.

<sequence> - сведения о том, к каким сериям относится книга. Имеет такие свойства, как name (текстовая строка) - название серии, и number (целое число) - порядковый номер книги в серии. Любое число вхождений. В нашем примере описана серия "Раскрывая тайны психики", и указан номер книги в серии - вторая.

Внутри раздела <document-info>:

<author> - содержит информацию об авторе документа. Возможны такие вложенные тэги как <first-name> - имя, <last-name> - фамилия, <middle-name> - отчество, <nickname> - ник, и <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 других документов. Это значит, что при изменении книги, которая есть в библиотеке, ID нужно сохранить. Если же создается новая книга, это поле необходимо заполнить уникальной записью. Формально разрешено использовать внутри тэга ID любые символы в любом количестве, но рекомендуется употреблять символы латиницы, цифры, и знаки подчеркивание и минус ("_", "-"). Других требований к идентификатору нет. Как вариант, можно заполнить поле согласно времени создания документа по формату YYYYMMDDhhmmss, например 20060728182041. Одно и только одно вхождение.

<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> могут идти в указанном порядке:

  1. Картинка <image/>, которая будет отображаться вверху раздела. От нуля до одного вхождений.
  2. Заголовок <title>. От нуля до одного вхождений.
  3. Эпиграф <epigraph>. Любое число вхождений.
  4. Раздел <section>. Одно или более вхождений.

Откуда видно, что обязателен только раздел <section>.

Для раздела <section> имя описывается свойством id. Например так:

<section id="note33">

Раздел <section> состоит из следующих частей в указанном порядке:

  1. Заголовок <title>. От нуля до одного вхождений.
  2. Эпиграф <epigraph>. Любое число вхождений.
  3. Картинка <image/>, которая будет отображаться вверху раздела. От нуля до одного вхождений.
  4. Аннотация <annotation>, описывающая раздел. От нуля до одного вхождений.
  5. Одно из двух. Либо подраздел <section> (одно или более вхождений); либо форматированный текст с картинками - тэги <p>, <image>, <poem>, <subtitle>, <cite>, <empty-line/>, <table> (одно или более вхождений), но первый тэг не может быть <image>.

Следовательно, обязательно наличие либо вложенного подраздела <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>

Тэг <p> может быть вложен в тэги <title>, <cite>, <epigraph>, <annotation>, <section>.


Пустые строки

Если нужно в форматированном тексте вставить пустую строку, это делается с помощью тэга <empty-line/>. Один такой тэг - одна пустая строка. Закрывающий тэг в данном случае не требуется.

Например:

<p>Абзац до пустой строки.</p>
<empty-line/>
<p>А вот это уже абзац после пустой строки.</p>


Жирный и курсивный текст

Для форматированного текста, а именно внутри тэгов <p>, <v>, <subtitle>, <text-author> возможно описать текст как жирный или курсивный. Жирный текст следует выделить тэгом <strong>, а курсивный - тэгом <emphasis>.

Например:

<p>Вот это слово выведем <strong>жирным</strong>,
а вот это - <emphasis>курсивным</emphasis>.</p>


Верхние и нижние индексы

В форматированном тексте (внутри тэгов <p>, <v>, <subtitle>, <text-author>) можно задать для текста начертание как верхний или нижний индекс. Для нижних индексов (уменьшенные буквы внизу строки) используется выделение тэгом <sub>, а для верхних индексов (уменьшенные буквы вверху строки) - выделение тэгом <sup>.

Пример:

<p>2<sup>4</sup>=16</p>
<p>a<sub>1</sub>+a<sub>2</sub>=b</p>

Перечеркнутый текст

В форматированном тексте (внутри тэгов <p>, <v>, <subtitle>, <text-author>) можно задать для текста отображение перечеркнутым шрифтом. Для этого используется выделение тэгом <strikethrough>.

<p><strikethrough>Перечеркнутый текст.</strikethrough></p>


Программный код

В форматированном тексте (внутри тэгов <p>, <v>, <subtitle>, <text-author>) можно логически разметить текст, который при просмотре файла должен быть отображен как программный код. Для этого используется выделение тэгом <code>. Читалкам рекомендуется текст внутри этого тэга оформлять при выводе моноширинным шрифтом (то есть шрифтом, символы которого имеют одинаковую ширину).

<p><code>Assign(f,'name.txt');</code></p>


Заголовки

Заголовки частей книги описываются тэгом <title>, который содержит в себе форматированный текст. Тэг <title> как заголовок части книги может быть вложенным в тэги <body> и <section>, причем более одного заголовка в разделе не допускается, а может его и не быть вовсе.

В тэг <title> могут быть вложены только тэги <p> и/или <empty-line/>.

Вот пример правильного оформления заголовка с пустой строкой:

<title>
 <p>Глава 1</p>
 <empty-line/>
 <p>От Александрии до Лондона</p>
</title>

Тэг <title> может быть вложен в тэги <body>, <section>, <poem>, <stanza>.


Подзаголовки

Подзаголовки описываются тэгом <subtitle>, который содержит простой (неформатированный) текст. Тэг <subtitle> может быть вложенным в тэги <body>, <section>, <cite> и <stanza>.

Обычно описание подзаголовка выглядит так:

<subtitle>* * *<subtitle>

Подзгаловком, в отличие от нормального заголовка, оформляется элемент оглавления, незначимый для структуры документа. Обычно это те самые три звездочки или x x x.


Стихи

Чтобы разместить стихотворение в тексте документа, используют тэг <poem>. Он может нести внутри себя следующие части в указанном порядке:

  1. Заголовок <title>. От нуля до одного вхождений.
  2. Эпиграф <epigraph>. Любое число вхождений.
  3. Строфы <stanza>. Одно или более вхождений. Строфа <stanza> - это группа строк стихотворения, отделенная пустым промежутком от остальных строк. Отдельная строка стихотворения помечается тэгом <v>, который должен быть вложен в <stanza>. Кроме того в состав <stanza> могут входить тэги <title> (заголовок) и <subtitle> (подзаголовок).
  4. Автор стихотворения <text-author>. Любое число вхождений.
  5. Дата написания <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> (любое число вхождений), а затем автора цитаты <text-author> (любое число вхождений).

Пример:

<cite>
  <p>Время - деньги.<p>
  <text-author>Бенджамин Франклин</text-author>
</cite>


Автор цитаты

Внутри тэгов <poem>, <cite> и <epigraph> возможно указать автора соответственно стихотворения, цитаты или эпиграфа. Для этого служит тэг <text-author>. Внутри cite и epigraph этот тэг должен стоять в самом конце родительского тэга, то есть непосредственно перед его (родительского тэга) закрытием. Внутри же poem тэг <text-author> може быть либо последний, либо предпоследний перед <date>, как это описано в главе ?Стихи? данного описания. Допускается любое число вхождений тэга <text-author>.

Вот пример:

<epigraph>
  <p>Кажется, знаешь о себе все, так нет.
  Находятся люди, которые знают о тебе больше.</p>
  <text-author>В. Андреев</text-author>
</epigraph>

Картинки

Картинки вставляются с помощью тэга <image/> (закрывающий тэг не требуется). Он может иметь атрибуты type, href, alt, title, id. Свойство href указывает на адрес картинки. Если адрес картинки начинается с символа # (решетка), то картинка находится внутри документа.

Пример:

<p>Абзац текста до картинки.</p>
<image l:href="#picture.jpg"/>
<p>Абзац текста после картинки.</p>

В этом примере в текст вставляется картинка picture.jpg, приложенная к документу (на что указывает символ решетки перед именем).

Тэг <image/> может быть вложен в тэги <body>, <section>, и в этом случае он описывает просто картинку. Если же <image/> вложен в <p> или <coverpage>, он обозначает inline-картинку, то есть такую, которая отображается наравне с текстом, внутри его. У Inline-картинок допустимы только атрибуты type, href, alt.

Файл обложки принято называть cover.jpg или cover.png.

Ссылки

Ссылки вставляются с помощью тэга <a>, который может быть вложен в абзацный тэг <p>. Свойство href определяет адрес ссылки. Адреса с символа # (решетка) задают расположение внутри документа.

Пример:

<p>Об этом вы можете прочитать <a l:href="#n1">здесь</a>.</p>

В этом примере текстом ссылки будет ?здесь?, а указывать она будет на элемент с идентификатором n1 внутри документа.

В l:href вместо l может быть и другой идентификатор, подробнее это описано в главе "Раздел FictionBook".

Также тэг <a> может иметь атрибут type, что используется при создании ссылок на примечания и описано в разделе "Примечания" данного описания.


Таблицы

Таблицы оформляются при помощи тэга <table>, который может быть вложен в <cite>, <section> и/или <annotation>.

Этот тэг может иметь свойства id и style. id описывает идентификатор таблицы, который можно использовать в ссылке, а style определяет, какой стиль отображения сопоставлен данной таблице.

Тэг <table> содержит вложенные тэги <tr>...</tr>, каждый <tr> описывает один горизонтальный ряд ячеек таблицы. Этот тэг может иметь атрибут align, которое предписывает программе-просмотрщику использовать определенный тип горизонтального выравнивания для ряда таблицы. Этот атрибут может принимать значения "left" (по левому краю), "right" (по правому краю) или "center" (центрирование). По умолчанию используется значение "left".

Тэг <tr>, в свою очередь, содержит вложенные тэги <th> и <td> (в любом количестве и порядке каждый). <th> описывает ячейку, которая должна быть отображена как заголовок таблицы. <tr> обрамляет простую ячейку таблицы. Эти два тэга могут содержать только текст без всяких тэгов.

Тэги <th> и <td> могут иметь атрибуты id, style, colspan, rowspan и align. Свойство id задает идентификатор, по которому на ячейку можно сослаться. Атрибут style назначает стиль оформления для ячейки (нужно при использовании CSS). Свойства colspan и rowspan определяют количество колонок и рядов, которые занимает ячейка, что позволяет "растягивать" ее по вертикали или горизонтали. Атрибут align описывает тип горизонтального выравнивания, аналогично одноименному свойству тэга <table>.

В примере показано, как оформить таблицей небольшую табличку умножения:

<table>
 <tr>
  <th></th>
  <th>2</th>
  <th>3</th>
  <th>4</th>
 </tr>
 <tr>
  <th>5</th>
  <td>10</td>
  <td>15</td>
  <td>20</td>
 </tr>
 <tr>
  <th>6</th>
  <td>12</td>
  <td>18</td>
  <td>24</td>
 </tr>
 <tr>
  <th>7</th>
  <td>14</td>
  <td>21</td>
  <td>28</td>
 </tr>
</table>
2 3 4
5 10 15 20
6 12 18 24
7 14 21 28


Примечания

Примечания к тексту книги должны находиться в специальном разделе <body>, поименнованном notes, то есть описан он должен быть как <body name="notes">, причем именно так - 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>, который идет в документе вслед за последним элементом <body>. Вот пример вложения:

<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, надо написать так:

&#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    Японский