На базе 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"?>

 

 

   reference

    и .

   

В тексте могут быть картинки.

   

   

  

  

   

    

Вторая вложенная секция

   

   

    

Это цитата.

     Автор цитаты.

   

   

Снова текст.

  

 

 

  

   

Третья секция

  

  

Стихи:

  

   

    

Парус

   

   

     А у дельфина взрезано брюхо винтом.

     Выстрела в спину не ожидает никто.

     На батарее нету снарядов уже.

     Надо быстрее на вираже.

   

   

     Но парус! Порвали парус!

     Каюсь! Каюсь! Каюсь!

   

    Владимир Высоцкий

  

  

Снова обычный текст.

 

 

 

 

  

Примечания

 

 

  

   

1

  

  

Текст сноски.

 

 

 iVBORw0KGgoAAAANSUhEUgAAAAkAAAAICAMAAAAcEyWHAAAABGdBTUEAAK/INwWK6QAAABl0

RVh0U29mdHdhcmUAQWRvYmUgSW1hZ2VSZWFkeXHJZTwAAAAGUExURQEBAf///+tZAq0AAAAY

SURBVHjaYmBAAEZGRjDGzsKvDgYAAgwABR4AH2mwMFgAAAAASUVORK5CYII=

§ 2.3 Элементы описания книги.

Базовые структурные элементы

В самом начале любого файла книги идет признак формата XML

< ?xml version="1.0" encoding="windows-1251"?>

Здесь указана сигнатура принадлежности к формату XML, его версия и кодировка файла. Для русскоязычных FictionBook это обычно windows-1251 или utf-8.

За ним в обязательном порядке следует:

Элемент FictionBook

Корневой элемент.

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

Элемент stylesheet

Список стилей, позволяющих конкретно определить, как будет выглядеть книга на экране устройства для чтения. До последнего времени читалками не поддерживался и практически не использовался. Лишь в конце 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;}

 

Элемент description

Заголовок (описание) книги.

Cинтаксис: < description>content< /description>.

Используется в элементах: FictionBook

Вложенные элементы: title-info, src-title-info, document-info, publish-info, custom-info, output

Количество вхождений: одно

Атрибуты: нет

Версия формата: 2.0

Пример:

 

   nonfiction

   элемент author

Элемент sequence

Серия, в которую входит книга. Допускается неограниченное число вложенных серий.

Cинтаксис: < sequence/> или < sequence>< sequence/>< /sequence>

Используется в элементах: title-info, src-title-info

Вложенные элементы: sequence

Количество вхождений: произвольное

Атрибуты: name (обязательный), number

Версия формата: 2.0

Пример:

   

  

Элемент program-used

Программное обеспечение, использовавшееся при создании книги.

Cинтаксис: < program-used>текст< /program-used>

Используется в элементах: document-info

Вложенные элементы: нет

Количество вхождений: одно или отсутствует

Атрибуты: нет

Версия формата: 2.0

Пример:

   FB Tools, EmEditor, hands.drv & brain.sys

Элемент src-url

Ссылка на сайт, если исходный текст книги был скачан из Интернета.

Cинтаксис: < src-url>текст< /src-url>

Используется в элементах: document-info

Вложенные элементы: нет

Количество вхождений: произвольное

Атрибуты: нет

Версия формата: 2.0

Пример:

http://www.natahaus.ru

Элемент src-ocr

Информация о людях, которые сканировали (набирали) и вычитывали книгу.

Cинтаксис: < src-ocr>текст< /src-ocr>

Используется в элементах: document-info

Вложенные элементы: нет

Количество вхождений: одно или отсутствует

Атрибуты: нет

Версия формата: 2.0

Пример:

OCR Zmiy; SpellCheck Юзич

Элемент id

Уникальный идентификационный номер книги.

Cинтаксис: < id>текст< /id>

Используется в элементах: document-info

Вложенные элементы: нет

Количество вхождений: одно

Атрибуты: нет

Версия формата: 2.0

Пример:

B3627A48-7F9C-400E-8CD7-0159B75F1A14

Элемент version

Номер версии файла.

Cинтаксис: < version>число< /version>

Используется в элементах: document-info

Вложенные элементы: нет

Количество вхождений: одно

Атрибуты: нет

Версия формата: 2.0

Пример:

1.0

Элемент history

История изменений,  вносившихся в файл.

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 — окончательная (надеюсь!) вычитка  (Юзич)

  

Элемент book-name

Название бумажного оригинала.

Cинтаксис: < book-name>текст< /book-name>

Используется в элементах: publish-info

Вложенные элементы: нет

Количество вхождений: одно или отсутствует

Атрибуты: нет

Версия формата: 2.0

Пример: см. элемента publish-info

Элемент publisher

Название издательства, выпустившего бумажный оригинал.

Используется в элементах: publish-info

Cинтаксис: < publisher>текст< /publisher>

Вложенные элементы: нет

Количество вхождений: одно или отсутствует

Атрибуты: нет

Версия формата: 2.0

Пример: см. элемента publish-info

Элемент city

Город, в котором был издан бумажный оригинал.

Cинтаксис:< city>текст< /city>

Используется в элементах: publish-info

Вложенные элементы: нет

Количество вхождений: одно или отсутствует

Атрибуты: нет

Версия формата: 2.0

Пример: см. элемента publish-info

Элемент year

Год выхода бумажного оригинала

Cинтаксис: < year>текст< /year>

Используется в элементах: publish-info

Вложенные элементы: нет

Количество вхождений: одно или отсутствует

Атрибуты: нет

Версия формата: 2.0

Пример: см. элемента publish-info

Элемент isbn

ISBN-код бумажного оригинала.

Cинтаксис: < isbn>текст< /isbn>

Используется в элементах: publish-info

Вложенные элементы: нет

Количество вхождений: одно или отсутствует

Атрибуты: нет

Версия формата: 2.0

Пример: см. элемента publish-info

§ 2.6 Элементы описания книги (description). Элементы третьего уровня (информация об авторе)

Элемент first-name

Имя автора книги или документа, а также переводчика.

Cинтаксис: < first-name>текст< /first-name>

Используется в элементах: author, translator

Вложенные элементы: нет

Количество вхождений: одно или отсутствует

Атрибуты: нет

Версия формата: 2.0

Пример: см. элемента author, § 2.5

Элемент middle-name

Отчество автора книги или документа, а также переводчика.

Cинтаксис: < middle-name>текст< /middle-name>

Используется в элементах: author, translator

Вложенные элементы: нет

Количество вхождений: одно или отсутствует

Атрибуты: нет

Версия формата: 2.0

Пример: см. элемента author, § 2.5

Элемент last-name

Фамилия автора книги или документа, а также переводчика.

Cинтаксис: < last-name>текст< /last-name>

Используется в элементах: author, translator

Вложенные элементы: нет

Количество вхождений: одно или отсутствует

Атрибуты: нет

Версия формата: 2.0

Пример: см. элемента author, § 2.5

Элемент nickname

Ник (сетевой псевдоним) автора книги или документа, а также переводчика.

Cинтаксис: < nickname>текст< /nickname>

Используется в элементах: author, translator

Вложенные элементы: нет

Количество вхождений: одно или отсутствует

Атрибуты: нет

Версия формата: 2.0

Пример: см. элемента author, § 2.5

Элемент home-page

Адрес персонального сайта автора книги или документа, а также переводчика.

Cинтаксис: < home-page>текст< /home-page>

Используется в элементах: author, translator

Вложенные элементы: нет

Количество вхождений: одно или отсутствует

Атрибуты: нет

Версия формата: 2.0

Пример: см. элемента author, § 2.5

Элемент email

Адрес электронной почты автора книги или документа, а также переводчика.

Cинтаксис: < email>текст< /email>

Используется в элементах: author, translator

Вложенные элементы: нет

Количество вхождений: одно или отсутствует

Атрибуты:  нет

Версия формата: 2.0

Пример: см. элемента author, § 2.5

§ 2.7 Элементы тела книги (body).

Элемент image

Картинка.

Cинтаксис: < image/>

Используется в элементах: body, section, p

Вложенные элементы: нет

Количество вхождений: одно или отсутствует

Атрибуты: alt, title, id, href (обязательный).

Версия формата: 2.0

Пример:

Элемент title

Заголовок книги, раздела или стихотворения. С версии 2.1 — еще и картинки.

Cинтаксис: < title>content< /title>

Используется в элементах: body, section, stanza, poem, image(2.1)

Вложенные элементы: p, empty-line

Количество вхождений: одно или отсутствует

Атрибуты: нет

Версия формата: 2.0

Пример:

Элемент epigraph

Эпиграф.

Cинтаксис: < epigraph>content< /epigraph>

Используется в элементах: body, section

Вложенные элементы: ppoem, cite, empty-line, text-author

Количество вхождений: произвольное

Атрибуты: id

Версия формата: 2.0

Пример:

  

Черт побери! Как и все другие, наказанные нами, вы управляетесь законом, который богачи придумали для собственной безопасности. Эти трусливые собачьи души не имеют смелости каким-либо иным способом защитить то, что они мошеннически нахапали. Проклятья и кровь на имуществе этих продувных бестий. Между нами единственное различие: они обирают бедняков под покровительством закона, не так ли? А мы грабим богатых, рассчитывая только на свою храбрость.

   Чарльз Беллами, пират

Элемент section

Раздел.

Cинтаксис: < section>content< /section>

Используется в элементах: body, section

Вложенные элементыtitle, epigraph, image, annotation, section, p, poem, subtitle, cite, empty-line, table

Количество вхождений: одно и более

Атрибуты: id

Версия формата: 2.0

Пример:

 

 

  

Заголовок секции

 

  

Текст.

 

§ 2.8 Элементы раздела книги (section).

Элементы первого уровня.

Элемент cite

Цитата. Отрывок текста из другого произведения.

В FictionBook с поспощью тэга citeтакже выделяются письма, записки, надписи, списки и еще много чего.

Cинтаксис: < cite>content< /cite>

Используется в элементахsection, epigraph, annotation, history

Вложенные элементы: p, poem, empty-line, subtitle, table, text-author

Количество вхождений: произвольное

Атрибуты: id

Версия формата: 2.0

Пример:

   

«Что происходит в Зеленом Доме? По не подтвержденным, но и не опровергнутым сведениям несколько дней назад внушительная группа боевых ведьм совершила стремительный вояж за пределы Тайного Города. Куда именно? Как ни странно, это осталось загадкой: наши белокурые красавицы изменили традиционной словоохотливости и держат рот на замке. Остальные Великие Дома не проявляют беспокойства…»

    («Тиградком»)

  

Элемент poem

Стихи, песни, баллады и т.д.

Cинтаксис: < poem>content< /poem>

Используется в элементахsection, epigraph, cite, annotation, history

Вложенные элементы: title, epigraph, stanza, text-author, date

Количество вхождений: произвольное

Атрибуты: id

Версия формата: 2.0

Пример:

   

    

     

В тяжелой мантии торжественных обрядов…

    

     В тяжелой мантии торжественных обрядов,

     Неумолимая, меня не встреть.

     На площади, под тысячами взглядов,

     Хочу я умереть.

   

   

     Чтобы лился на волосы и в губы

     Полуденный огонь.

     Чтоб были флаги, чтоб гремели трубы

     И гарцевал мой конь…

   

    Марина Цветаева,

    Феодосия, 1913

  

Элемент p

Обычный абзац текста.

Cинтаксис: < p>content< /p>

Используется в элементахannotation, history, section, epigraph, cite

Вложенные элементы: a, code, emphasis, strikethrough, strong, style, sub, sup, image

Количество вхождений: произвольное

Атрибуты: id, style

Версия формата: 2.0

Пример:

Cамый обычный текст.

Элемент subtitle

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

Cинтаксис: < subtitle>content< /subtitle>

Используется в элементахsection, stanza, annotation, history

Вложенные элементы: strong, emphasis, style, a, strikethrough, sub, sup, code, image

Количество вхождений: произвольное

Атрибуты: id, style

Версия формата: 2.0

Пример:

* * *

Элемент empty-line

Пустая строка. Может использоваться как «немой» заголовок.

Cинтаксис: < empty-line/>

Используется в элементахsection, epigraph, cite, title, annotation, history

Вложенные элементы: нет

Количество вхождений: произвольное

Атрибуты: нет

Версия формата: 2.0

Пример:

После этого абзаца должна идти пустая строка.

Элемент table

Таблицы.

На момент написания книги поддерживается только читалками CoolReader и AlReader.

Cинтаксис: < table>content< /table>

Используется в элементахsection, epigraph, annotation, history

Вложенные элементы: tr

Количество вхождений: произвольное

Атрибуты: id, style

Версия формата: 2.1

Пример:

   

    

      Заголовок 1-го столбца

      Заголовок 2-го столбца

      Объединенный заголовок 3-го и 4-го столбцов

      Заголовок 5-го столбца

    

    

      1-я ячейка 1-го столбца

      1-я и 2-я ячейки 2-го столбца

      1-я ячейка 3-го столбца

      1-я ячейка 4-го столбца

      1-я ячейка 5-го столбца

    

    

      2-я ячейка 1-го столбца

     

2-я ячейка 3-го и 4-го столбцов

      2-я ячейка 5-го столбца

    

   

Как видим, допускается размещение текста как непосредственно в самих элементах ячеек таблицы ( td, th), так и предварительно заключеннного в элемент p.

Впрочем, это, вероятнее всего, огрех валидатора FBE. Ради эксперимента, я поместил в элемент tdэлемент cite. И валидатор это спокойно переварил.

§ 2.9 Элементы раздела книги (section).

Элементы второго уровня.

Элемент stanza

Строфа стихотворения.

Cинтаксис: stanza>content< /stanza>

Используется в элементахpoem

Вложенные элементы: title, subtitle, v

Количество вхождений: одно и более

Атрибуты: нет

Версия формата: 2.0

Пример: см. элемента poem

Элемент text-author

Автор эпиграфа, цитаты или стихов.

Cинтаксис: < text-author>content< /text-author>

Используется в элементахcite, epigraph, poem

Вложенные элементы: strong, emphasis, style, a, strikethrough, sub, sup, code, image

Количество вхождений: произвольное

Атрибуты: id, style

Версия формата: 2.0

Пример: см. элемента poem

Элемент v

Cтрока в строфе стихотворения.

Cинтаксис: < v>content< /v>

Используется в элементахstanza

Вложенные элементыa, code, emphasis, strikethroughstrongstyle,   sub, supimage

Количество вхождений: одно и более

Атрибуты: нет

Версия формата: 2.0

Пример: см. элемента poem

§ 2.10 Элементы таблиц

Элемент tr

Строка таблицы.

Cинтаксис: < tr>content< /tr>

Используется в элементахtable

Вложенные элементыth, td

Количество вхождений: одно и более

Атрибуты: aligh

Версия формата: 2.1

Пример: см. элемента table

Элемент th

Заголовок столбца таблицы.

Cинтаксис: < th>content< /th>

Используется в элементахtr

Вложенные элементы:    a, code, emphasis, strikethrough, strong, style, sub, supimage

Количество вхождений: одно или отсутствует

Атрибуты: id, style, colspan, rowspan, aligh

Версия формата: 2.1

Пример: см. элемента table

Элемент td

Ячейка столбца таблицы.

Cинтаксис: < td>content< /td>

Используется в элементахtr

Вложенные элементы:    a, code, emphasis, strikethrough, strong, stylesub, supimage

Количество вхождений: одно и более

Атрибуты: id, style, colspan, rowspan, aligh

Версия формата: 2.1

Пример: см. элемента table

§ 2.11 Элементы абзаца (стилевые элементы)

Элемент a

Ссылка или сноска.

Cинтаксис: < a>content< /a>

Используется в элементахcode, emphasis, p, strikethrough, strong, stylesubtitle, sub, supth, tdv

Вложенные элементы:      code, emphasis, strikethroughstrong, style, sub, sup, image

Количество вхождений: произвольное

Атрибуты: href (обязательный), type

Версия формата: 2.0

Пример:

см.

Элемент code

Преформатированный текст. В читалках должен отображаться моноширинным шрифтом.

Может использоваться, чтобы выделить исходники программ и примеры.

На момент написания книги поддерживается только читалкой CoolReader. Причем, поддерживается неправильно— как элемент аналогичный сite, хотя это такое же стилевое выделение, как strong или emphasis.

Cинтаксис: < code>content< /code>

Используется в элементах:   code, emphasis, p, strikethrough, strong, stylesubtitle, sub, supth, tdv

Вложенные элементы:      a, code, emphasis, strikethrough, strong, stylesub, supimage

Количество вхождений: произвольное

Атрибуты: нет

Версия формата: 2.1

Пример:

Преформатированный текст

Элемент emphasis

Наклонный шрифт (курсив).

Cинтаксис: < emphasis>content< /emphasis>

Используется в элементах:   code, emphasis, p, strikethrough, strong, stylesubtitle, sub, sup