На базе XML уже создано большое количество подмножеств для решения конкретных задач. Например, есть реализация HTML средствами XML — XHTML, язык для записи математических формул и выражений (MathML), язык для химических формул, для медицинской электронной документации. Новый формат файлов пакета M$ Office 2007 представляет собой не что иное, как пачку XML-документов, которые сохраняются в одном архиве.
Кроме того, поскольку любые данные в XML — это обычный текст, то и работать с ними можно как с текстом: готовить XML-документы в notepad, а в случае потери какой-либо части данных с остальными можно будет по-прежнему работать.
В отличие от HTML, набор средств разметки (тэгов) в XML не фиксирован, и может быть произвольным.
Разумеется, это должно как-то описываться. Поэтому в XML есть такое понятие, как «спецификация», DTD (Document Type Definition — описание типа документа) — документ, в котором описана структура XML-подмножества. В настоящее время на смену DTD пришла XML Schema.
Если возникнет необходимость, XML легко преобразовать в любой другой формат. Для этого существует XSLT — eXtensible Stylesheet Language Transformation — расширяемый язык стилей.
Вот, к примеру, реализация адресной книги на базе XML.
<?xml version="1.0" encoding="UTF-8"?>
Как правило, это картинки.
§ 2.2 Пример книги в формате FictionBook
Cпецификация (schema) FictionBook находится на сайте Дмитрия Грибова, а также входит в комплект FB Tools. Поэтому размещать ее в электронной версии книги смысла нет.
Но пример книги в формате FictionBook привести необходимо:
<?xml version="1.0" encoding="windows-1251"?>
и .
В тексте могут быть картинки.
Вторая вложенная секция
Это цитата.
Снова текст.
Третья секция
Стихи:
Парус
Снова обычный текст.
Примечания
1
Текст сноски.
RVh0U29mdHdhcmUAQWRvYmUgSW1hZ2VSZWFkeXHJZTwAAAAGUExURQEBAf///+tZAq0AAAAY
SURBVHjaYmBAAEZGRjDGzsKvDgYAAgwABR4AH2mwMFgAAAAASUVORK5CYII=
§ 2.3 Элементы описания книги.
Базовые структурные элементы
В самом начале любого файла книги идет признак формата XML
< ?xml version="1.0" encoding="windows-1251"?>
Здесь указана сигнатура принадлежности к формату XML, его версия и кодировка файла. Для русскоязычных FictionBook это обычно windows-1251 или utf-8.
За ним в обязательном порядке следует:
Корневой элемент.
Cинтаксис: < FictionBook>content< /FictionBook>.
Фактически, всегда используется в виде:
< FictionBook xmlns=" http://www.gribuser.ru/xml/fictionbook/2.0 " xmlns:l=" http://www.w3.org/1999/xlink ">
content
< /FictionBook>.
Используется в элементах: корневой элемент
Вложенные элементы: stylesheet, description, body, binary
Количество вхождений: одно
Атрибуты: xmlns
Версия формата: 2.0
Пример: см. пример книги FictionBook, § 2.2
Список стилей, позволяющих конкретно определить, как будет выглядеть книга на экране устройства для чтения. До последнего времени читалками не поддерживался и практически не использовался. Лишь в конце 2007 года появился CoolReader 3.09 с экспериментальной поддержкой stylesheet.
Cинтаксис: < stylesheet>content< /stylesheet>.
Используется в элементах: FictionBook
Вложенные элементы: нет
Количество вхождений: одно или отсутствует.
Атрибуты: type
Версия формата: 2.0
Пример:
.body{font-family : Verdana, Geneva, Arial, Helvetica, sans-serif;}
.p{margin:0.5em 0 0 0.3em; padding:0.2em; text-align:justify;}
Заголовок (описание) книги.
Cинтаксис: < description>content< /description>.
Используется в элементах: FictionBook
Вложенные элементы: title-info, src-title-info, document-info, publish-info, custom-info, output
Количество вхождений: одно
Атрибуты: нет
Версия формата: 2.0
Пример:
элемент author
Серия, в которую входит книга. Допускается неограниченное число вложенных серий.
Cинтаксис: < sequence/> или < sequence>< sequence/>< /sequence>
Используется в элементах: title-info, src-title-info
Вложенные элементы: sequence
Количество вхождений: произвольное
Атрибуты: name (обязательный), number
Версия формата: 2.0
Пример:
Программное обеспечение, использовавшееся при создании книги.
Cинтаксис: < program-used>текст< /program-used>
Используется в элементах: document-info
Вложенные элементы: нет
Количество вхождений: одно или отсутствует
Атрибуты: нет
Версия формата: 2.0
Пример:
Ссылка на сайт, если исходный текст книги был скачан из Интернета.
Cинтаксис: < src-url>текст< /src-url>
Используется в элементах: document-info
Вложенные элементы: нет
Количество вхождений: произвольное
Атрибуты: нет
Версия формата: 2.0
Пример:
Информация о людях, которые сканировали (набирали) и вычитывали книгу.
Cинтаксис: < src-ocr>текст< /src-ocr>
Используется в элементах: document-info
Вложенные элементы: нет
Количество вхождений: одно или отсутствует
Атрибуты: нет
Версия формата: 2.0
Пример:
Уникальный идентификационный номер книги.
Cинтаксис: < id>текст< /id>
Используется в элементах: document-info
Вложенные элементы: нет
Количество вхождений: одно
Атрибуты: нет
Версия формата: 2.0
Пример:
Номер версии файла.
Cинтаксис: < version>число< /version>
Используется в элементах: document-info
Вложенные элементы: нет
Количество вхождений: одно
Атрибуты: нет
Версия формата: 2.0
Пример:
История изменений, вносившихся в файл.
Cинтаксис: < history>Content< /history>
Используется в элементах: document-info
Вложенные элементы: p, poem, cite, subtitle, table, empty-line
Количество вхождений: одно или отсутствует
Атрибуты: id
Версия формата: 2.0
Пример:
v 1.0 — вычитка, конвертация в FB2 (Юзич)
v 1.1 — дополнительное форматирование (Faiber)
v 1.2 — дополнительная вычитка (Юзич)
v 1.3 — дополнительная вычитка (Юзич)
v 1.4 — окончательная (надеюсь!) вычитка (Юзич)
Название бумажного оригинала.
Cинтаксис: < book-name>текст< /book-name>
Используется в элементах: publish-info
Вложенные элементы: нет
Количество вхождений: одно или отсутствует
Атрибуты: нет
Версия формата: 2.0
Пример: см. элемента publish-info
Название издательства, выпустившего бумажный оригинал.
Используется в элементах: publish-info
Cинтаксис: < publisher>текст< /publisher>
Вложенные элементы: нет
Количество вхождений: одно или отсутствует
Атрибуты: нет
Версия формата: 2.0
Пример: см. элемента publish-info
Город, в котором был издан бумажный оригинал.
Cинтаксис:< city>текст< /city>
Используется в элементах: publish-info
Вложенные элементы: нет
Количество вхождений: одно или отсутствует
Атрибуты: нет
Версия формата: 2.0
Пример: см. элемента publish-info
Год выхода бумажного оригинала
Cинтаксис: < year>текст< /year>
Используется в элементах: publish-info
Вложенные элементы: нет
Количество вхождений: одно или отсутствует
Атрибуты: нет
Версия формата: 2.0
Пример: см. элемента publish-info
ISBN-код бумажного оригинала.
Cинтаксис: < isbn>текст< /isbn>
Используется в элементах: publish-info
Вложенные элементы: нет
Количество вхождений: одно или отсутствует
Атрибуты: нет
Версия формата: 2.0
Пример: см. элемента publish-info
§ 2.6 Элементы описания книги (description). Элементы третьего уровня (информация об авторе)
Имя автора книги или документа, а также переводчика.
Cинтаксис: < first-name>текст< /first-name>
Используется в элементах: author, translator
Вложенные элементы: нет
Количество вхождений: одно или отсутствует
Атрибуты: нет
Версия формата: 2.0
Пример: см. элемента author, § 2.5
Отчество автора книги или документа, а также переводчика.
Cинтаксис: < middle-name>текст< /middle-name>
Используется в элементах: author, translator
Вложенные элементы: нет
Количество вхождений: одно или отсутствует
Атрибуты: нет
Версия формата: 2.0
Пример: см. элемента author, § 2.5
Фамилия автора книги или документа, а также переводчика.
Cинтаксис: < last-name>текст< /last-name>
Используется в элементах: author, translator
Вложенные элементы: нет
Количество вхождений: одно или отсутствует
Атрибуты: нет
Версия формата: 2.0
Пример: см. элемента author, § 2.5
Ник (сетевой псевдоним) автора книги или документа, а также переводчика.
Cинтаксис: < nickname>текст< /nickname>
Используется в элементах: author, translator
Вложенные элементы: нет
Количество вхождений: одно или отсутствует
Атрибуты: нет
Версия формата: 2.0
Пример: см. элемента author, § 2.5
Адрес персонального сайта автора книги или документа, а также переводчика.
Cинтаксис: < home-page>текст< /home-page>
Используется в элементах: author, translator
Вложенные элементы: нет
Количество вхождений: одно или отсутствует
Атрибуты: нет
Версия формата: 2.0
Пример: см. элемента author, § 2.5
Адрес электронной почты автора книги или документа, а также переводчика.
Cинтаксис: < email>текст< /email>
Используется в элементах: author, translator
Вложенные элементы: нет
Количество вхождений: одно или отсутствует
Атрибуты: нет
Версия формата: 2.0
Пример: см. элемента author, § 2.5
§ 2.7 Элементы тела книги (body).
Картинка.
Cинтаксис: < image/>
Используется в элементах: body, section, p
Вложенные элементы: нет
Количество вхождений: одно или отсутствует
Атрибуты: alt, title, id, href (обязательный).
Версия формата: 2.0
Пример:
Заголовок книги, раздела или стихотворения. С версии 2.1 — еще и картинки.
Cинтаксис: < title>content< /title>
Используется в элементах: body, section, stanza, poem, image(2.1)
Вложенные элементы: p, empty-line
Количество вхождений: одно или отсутствует
Атрибуты: нет
Версия формата: 2.0
Пример:
Эпиграф.
Cинтаксис: < epigraph>content< /epigraph>
Используется в элементах: body, section
Вложенные элементы: p, poem, cite, empty-line, text-author
Количество вхождений: произвольное
Атрибуты: id
Версия формата: 2.0
Пример:
Черт побери! Как и все другие, наказанные нами, вы управляетесь законом, который богачи придумали для собственной безопасности. Эти трусливые собачьи души не имеют смелости каким-либо иным способом защитить то, что они мошеннически нахапали. Проклятья и кровь на имуществе этих продувных бестий. Между нами единственное различие: они обирают бедняков под покровительством закона, не так ли? А мы грабим богатых, рассчитывая только на свою храбрость.
Раздел.
Cинтаксис: < section>content< /section>
Используется в элементах: body, section
Вложенные элементы: title, epigraph, image, annotation, section, p, poem, subtitle, cite, empty-line, table
Количество вхождений: одно и более
Атрибуты: id
Версия формата: 2.0
Пример:
Заголовок секции
Текст.
§ 2.8 Элементы раздела книги (section).
Элементы первого уровня.
Цитата. Отрывок текста из другого произведения.
В FictionBook с поспощью тэга citeтакже выделяются письма, записки, надписи, списки и еще много чего.
Cинтаксис: < cite>content< /cite>
Используется в элементах: section, epigraph, annotation, history
Вложенные элементы: p, poem, empty-line, subtitle, table, text-author
Количество вхождений: произвольное
Атрибуты: id
Версия формата: 2.0
Пример:
«Что происходит в Зеленом Доме? По не подтвержденным, но и не опровергнутым сведениям несколько дней назад внушительная группа боевых ведьм совершила стремительный вояж за пределы Тайного Города. Куда именно? Как ни странно, это осталось загадкой: наши белокурые красавицы изменили традиционной словоохотливости и держат рот на замке. Остальные Великие Дома не проявляют беспокойства…»
Стихи, песни, баллады и т.д.
Cинтаксис: < poem>content< /poem>
Используется в элементах: section, epigraph, cite, annotation, history
Вложенные элементы: title, epigraph, stanza, text-author, date
Количество вхождений: произвольное
Атрибуты: id
Версия формата: 2.0
Пример:
В тяжелой мантии торжественных обрядов…
Обычный абзац текста.
Cинтаксис: < p>content< /p>
Используется в элементах: annotation, history, section, epigraph, cite
Вложенные элементы: a, code, emphasis, strikethrough, strong, style, sub, sup, image
Количество вхождений: произвольное
Атрибуты: id, style
Версия формата: 2.0
Пример:
Cамый обычный текст.
Подзаголовок.
Cинтаксис: < subtitle>content< /subtitle>
Используется в элементах: section, stanza, annotation, history
Вложенные элементы: strong, emphasis, style, a, strikethrough, sub, sup, code, image
Количество вхождений: произвольное
Атрибуты: id, style
Версия формата: 2.0
Пример:
Пустая строка. Может использоваться как «немой» заголовок.
Cинтаксис: < empty-line/>
Используется в элементах: section, epigraph, cite, title, annotation, history
Вложенные элементы: нет
Количество вхождений: произвольное
Атрибуты: нет
Версия формата: 2.0
Пример:
После этого абзаца должна идти пустая строка.
Таблицы.
На момент написания книги поддерживается только читалками CoolReader и AlReader.
Cинтаксис: < table>content< /table>
Используется в элементах: section, epigraph, annotation, history
Вложенные элементы: tr
Количество вхождений: произвольное
Атрибуты: id, style
Версия формата: 2.1
Пример:
2-я ячейка 3-го и 4-го столбцов
Как видим, допускается размещение текста как непосредственно в самих элементах ячеек таблицы ( td, th), так и предварительно заключеннного в элемент p.
Впрочем, это, вероятнее всего, огрех валидатора FBE. Ради эксперимента, я поместил в элемент tdэлемент cite. И валидатор это спокойно переварил.
§ 2.9 Элементы раздела книги (section).
Элементы второго уровня.
Строфа стихотворения.
Cинтаксис: stanza>content< /stanza>
Используется в элементах: poem
Вложенные элементы: title, subtitle, v
Количество вхождений: одно и более
Атрибуты: нет
Версия формата: 2.0
Пример: см. элемента poem
Автор эпиграфа, цитаты или стихов.
Cинтаксис: < text-author>content< /text-author>
Используется в элементах: cite, epigraph, poem
Вложенные элементы: strong, emphasis, style, a, strikethrough, sub, sup, code, image
Количество вхождений: произвольное
Атрибуты: id, style
Версия формата: 2.0
Пример: см. элемента poem
Cтрока в строфе стихотворения.
Cинтаксис: < v>content< /v>
Используется в элементах: stanza
Вложенные элементы: a, code, emphasis, strikethrough, strong, style, sub, sup, image
Количество вхождений: одно и более
Атрибуты: нет
Версия формата: 2.0
Пример: см. элемента poem
§ 2.10 Элементы таблиц
Строка таблицы.
Cинтаксис: < tr>content< /tr>
Используется в элементах: table
Вложенные элементы: th, td
Количество вхождений: одно и более
Атрибуты: aligh
Версия формата: 2.1
Пример: см. элемента table
Заголовок столбца таблицы.
Cинтаксис: < th>content< /th>
Используется в элементах: tr
Вложенные элементы: a, code, emphasis, strikethrough, strong, style, sub, sup, image
Количество вхождений: одно или отсутствует
Атрибуты: id, style, colspan, rowspan, aligh
Версия формата: 2.1
Пример: см. элемента table
Ячейка столбца таблицы.
Cинтаксис: < td>content< /td>
Используется в элементах: tr
Вложенные элементы: a, code, emphasis, strikethrough, strong, style, sub, sup, image
Количество вхождений: одно и более
Атрибуты: id, style, colspan, rowspan, aligh
Версия формата: 2.1
Пример: см. элемента table
§ 2.11 Элементы абзаца (стилевые элементы)
Ссылка или сноска.
Cинтаксис: < a>content< /a>
Используется в элементах: code, emphasis, p, strikethrough, strong, style, subtitle, sub, sup, th, td, v
Вложенные элементы: code, emphasis, strikethrough, strong, style, sub, sup, image
Количество вхождений: произвольное
Атрибуты: href (обязательный), type
Версия формата: 2.0
Пример:
см.
Преформатированный текст. В читалках должен отображаться моноширинным шрифтом.
Может использоваться, чтобы выделить исходники программ и примеры.
На момент написания книги поддерживается только читалкой CoolReader. Причем, поддерживается неправильно— как элемент аналогичный сite, хотя это такое же стилевое выделение, как strong или emphasis.
Cинтаксис: < code>content< /code>
Используется в элементах: code, emphasis, p, strikethrough, strong, style, subtitle, sub, sup, th, td, v
Вложенные элементы: a, code, emphasis, strikethrough, strong, style, sub, sup, image
Количество вхождений: произвольное
Атрибуты: нет
Версия формата: 2.1
Пример:
Преформатированный текст
Наклонный шрифт (курсив).
Cинтаксис: < emphasis>content< /emphasis>
Используется в элементах: code, emphasis, p, strikethrough, strong, style, subtitle, sub, sup,