Выбрать главу

Разумеется, это должно как-то описываться. Поэтому в XML есть такое понятие, как «спецификация», DTD (Document Type Definition — описание типа документа) — документ, в котором описана структура XML-подмножества. В настоящее время на смену DTD пришла XML Schema.

Если возникнет необходимость, XML легко преобразовать в любой другой формат. Для этого существует XSLT — eXtensible Stylesheet Language Transformation — расширяемый язык стилей.

Вот, к примеру, реализация адресной книги на базе XML.

<?xml version="1.0" encoding="UTF-8"?>

<AddressBook>

<contact>

<persone>

<name>Василий</name>

<patronymic>Иванович<patronymic>

<surname>Пупкин</surname>

<address>пер. Кривоколенный, 5-15</address>

<phone type="home">555-22-11</phone>

<phone type="mobile">736-11-22</phone>

<e-mail>pupkin@pisem.net</e-mail>

</persone>

</contact>

<contact>

<organization>

<type-org>Кооператив</type-org>

<name-org>Рога и Копыта</name-org>

<address>ул. Малая Арнаутская, 12</address>

<phone type="work">202-33-20</phone>

<phone type="work">202-32-00</phone>

<site>http://www.horn&hoof.ua</site>

<e-mail>mail@horn&hoof.ua</e-mail>

</organization>

</contact>

</AddressBook>

Как видим, сам документ имеет древовидную структуру и состоит из вложенннных элементов.

Первая строка является признаком XML и содержится во всех документах.

Элемент — это данные, ограниченные парой тэгов. <tag> и </tag>.

Кроме данных, элементы могут содержать в себе атрибуты — например, у элемента phone есть атрибут type, который может принимать фиксированные значения «home», «work» и «mobile».

Вместо пары тэгов для обозначения границ элемента может использоваться один тэг вида <tag/>, но тогда у такого элемента не может быть данных и вложенных элементов.

Стандарт XML предписывает, чтобы у «дерева» элементов был корневой элемент, который будет содержать внутри себя все остальные. Корневой элемент должен быть единственным, то есть XML-документ, где два и больше корневых элементов, — это документ, сформированный неправильно.

Как видим, все просто и понятно. Документ легко читается и редактируется, а при желании можно написать XSL, трансформирующий его в HTML или RTF.

Давая свободу, XML одновременно предъявляет к документу гораздо более жесткие требования, чем HTML. Одно из ключевых понятий XML — «валидный» документ. Все элементы документа должны быть правильно закрыты, а вложенность их соответстовать спецификации. Конструкции типа <i><b>Text</i></b>, которые легко «проглатывает» HTML, в XML считаются фатальной ошибкой.

§ 1.4 Формат FictionBook — стандарт де-факто для электронных книг

Итак, формат FictionBook…

Сам формат был разработан Дмитрием Грибовым с несколькими соавторами, при поддержке группы энтузиастов.

Он полностью базируется на XML.

На данный момент это самый прогрессивный и перспективный формат для электронных книг. Единственный его недостаток, как признают сами авторы, бОльшие временные затраты при подготовке начального текста. Впрочем, он легко окупается удобством чтения.

В отличие от всех не-XML форматов, которые ориентированы на хранение или оформление текстовых данных, в FictionBook упор сделан на структурирование документа. То есть с помощью тэгов выделяются области текста: это — глава, это — заголовок, это — эпиграф, а вот это — цитата. А как все «это» будет выглядеть на экране, зависит от программы-ридера. Впрочем, на случай, если потребуется оформить книгу строго определенным образом, предусмотрена возможность присоединения таблицы стилей.

Используя формат FictionBook можно создать четко структурированную книгу (именно книгу, а не просто электронный документ), которую удобно читать в специализированной программе-читалке, а в случае надобности можно легко сконвертировать в любой популярный формат. Как правило, без потери разметки.

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

Все компоненты книги (описание, непосредственно текст, иллюстрации) хранятся в одном файле, который можно упаковать архиватором. Большинство программ-читалок для FB2 умеют напрямую работать с архивами.

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

Еще одно достоинство FictionBook — книги в этом формате отлично поддаются каталогизации. Опираясь на встроенную систему описания книги, можно с легкостью создать как домашнюю, так и сетевую электронную библиотеку любого масштаба.

Учитывая объем электронных книг, накопленный до появления FictionBook, первый вопрос, который возникает при знакомстве с новым форматом — это возможность конвертирования книг из других форматов.

Никаких проблем. Разработанные авторами формата и энтузиастами программные средства позволяют эффективно конвертировать книги из форматов txt, HTML, RTF (doc).

Если же, наоборот, возникнет необходимость преобразовать книгу в формате FictionBook в другой формат, то «штатный» конвертор FB2Any неплохо справляется с преобразованием FB2 не только в классические txt и RTF, но и в специализированные форматы Roсket Book, iSilo, Micro$oft Reader. Еще не успел устояться новомодный формат для аппаратных читалок Wolf, как появились сразу несколько программ для конвертации книг fb2 в этот формат. А стоило читалкам пойти в массы, как для них появились прошивки, напрямую поддерживающие FB2. Читалки же с Linux-начинкой (Irex Reader, PocketBook 301, PocketBook 360) вообще дружат с FB2 от рождения.

Таким образом, формат FictionBook обладает всеми качествами, чтобы стать единым стандартом для e-Book. И, фактически, уже стал им. Использование FB2 в русскоязычных онлайн-библиотеках, подтвердило его функциональность и жизнеспособность.

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

После прочтения этого панегирика у читателя возникает справедливый вопрос:

Если FictionBook так хорош, то почему им не пользуются все?

Потому что развитие и, самое главное, продвижение формата целиком зависит от горстки энтузиастов.

Недосуг стало Михаилу Мацневу заниматься HaaliReader и FB Tools и все фактически замерло.

Впрочем, сейчас намечаются перемены к лучшему. Появляются новые программы для чтения, конверторы, и даже редакторы. Формат FictionBook попал под крыло компании «ЛитРес», правда, до сих пор, нельзя однозначно сказать, хорошо это или плохо.

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

Версия 2.1

Первая версия формата была слишком сыра и малофункциональна. Ей не удалось завоевать сколь-либо заметной популярности, хотя некоторые сетевые библиотеки, в частности, библиотека Мухомора, все же перешли на него. В 2003 г. на смену  версии 1.0 пришла версия 2.0, в которой большинство недочетов было исправлено. А через год появилась актуальная до сих пор версия 2.1.