Полный тест FB2 2.2: все элементы
Иван Иванович Тестов, Jane Smith
Аннотация
Тестовый документ, содержащий все возможные элементы формата FictionBook 2.2.
Используется для проверки корректности парсинга и генерации XML при round-trip.
Версия теста: 1.0. Охватывает: inline-форматирование, стихи, цитаты, таблицы, изображения, сноски.
В начале было слово, а слово было тест.
И увидел разработчик, что это хорошо.
Глава 1: Инлайн-форматирование
Форматирование — это искусство и наука.
Обычный параграф с жирным, курсивным, зачёркнутым и моноширинным кодом.
Надстрочный и подстрочный: H2O молекула воды, E=mc2 формула Эйнштейна.
Внешняя ссылка: Example.com. Внутренняя сноска: примечание [1]. Другая сноска: [2].
Ссылка с type="regular": Git SCM.
Комбинации форматирования: текст с жирным, затем курсивным, затем зачёркнутым, затем обычным снова.
Специальные символы XML: амперсанд &, меньше <, больше >, кавычка ", апостроф '.
Подзаголовок 1.1 внутри главы
Параграф после подзаголовка. let x = a & b — пример кода со спецсимволами.
Параграф после пустой строки (empty-line). Текст продолжается.
Подзаголовок 1.2
Ещё один параграф с нижним и верхним индексами в одном тексте.
Глава 2: Стихи и цитаты
Эта глава тестирует элементы poem, stanza, v и cite с inline-форматированием внутри.
Ода тестированию (полная форма)
Тестируй всё, что движется.
И то, что не движется — тоже тестируй.
Строфа первая: форматирование
О жирном и курсивном
Я пишу жирными буквами код,
И курсивом комментирую ход,
Строка ошибочная зачёркнута смело,
А monospace — это программное дело.
Строфа вторая: ссылки и индексы
Сноска идёт [1] к примечанию,
H2O и CO2 — химия знания,
E=mc2 — великая формула та,
Вот ссылка на внешний сайт, красота!
Строфа без заголовка — тоже валидна,
Простые стихи без украшений видна,
Финальная строфа теста стихов,
Готов к проверке round-trip без слов.
Цитата из документации
«Хороший тест — это документация кода, написанная автоматически.»
Правильное тестирование помогает найти и
скрытьисправить ошибки. Химически: H2O2 — перекись водорода.Ссылка внутри цитаты: документация.
Глава 3: Таблицы с th и td
Таблица с заголовочными ячейками <th> (Фаза C):
| Элемент FB2 | Описание | Фаза | Статус |
|---|---|---|---|
| genre match | Степень соответствия жанру (0-100) | C | Реализовано |
| date value | Машиночитаемая дата xs:date | C | Реализовано |
| th / td | Ячейки-заголовки таблиц | C | Реализовано |
| src-title-info | Метаданные оригинала переводных книг | A | Реализовано |
| custom-info | Произвольные key-value метаданные | A | Реализовано |
| [[InlineElement]] | Inline-форматирование в стихах и цитатах | B | Реализовано |
Таблица с colspan и rowspan атрибутами:
| Объединённый заголовок (colspan=3) | ||
|---|---|---|
| Колонка A | Колонка B | Колонка C |
| Объединённая ячейка (rowspan=2) | B1 | C1 |
| B2 | C2 | |
| Выравнивание left | center | right |
Минимальная таблица (только td):
| Ячейка 1 | Ячейка 2 |
Глава 4: Изображения
Встроенное изображение с alt и title атрибутами:
Второе изображение (то же, другая ссылка):
Изображение хранится в секции binary как Base64-encoded данные.
Глава 5: Вложенные секции
FB2 поддерживает произвольную вложенность секций (подглав). Эта глава демонстрирует три уровня вложенности.
Подраздел 5.1: Первый уровень вложенности
Контент первого подраздела с жирным и курсивом.
Цитата внутри подраздела: «Глубина вложенности ограничена только воображением».
Подподраздел 5.1.1: Второй уровень
Глубоко вложенный контент. section → section → content.
Параграф с сноской [2] и жирным текстом.
Подподраздел 5.1.2: Ещё один второй уровень
Второй подподраздел на том же уровне.
С пустой строкой.
Подраздел 5.2: Второй подраздел
Эпиграф тоже работает в подразделах.
Второй подраздел с курсивом, кодом и зачёркиванием.
Подзаголовок в подразделе
После подзаголовка внутри подраздела.
Глава 6: Эпиграфы с inline-форматированием
Первый эпиграф с жирным и курсивным текстом.
Второй параграф эпиграфа: H2O и E=mc2.
Второй эпиграф секции: со ссылкой и кодом.
Секция с несколькими эпиграфами (FB2 допускает множество).
Inline-форматирование в эпиграфах хранится как [[InlineElement]] после Фазы B.
Примечания
1
Первая сноска. Ссылка создаётся через <a l:href="#note1" type="note">.
Сноски хранятся в теле с name="notes".
2
Вторая сноска о коммитах и ветках. Полезная ссылка: Git Documentation.
3
Третья сноска — не используется в тексте, но присутствует в notes body.