Заглянем внутрь файла EPUB
Файлы EPUB — отличный способ публиковать контент в открытом формате.
Электронные книги — отличный способ читать книги, журналы и другой контент в дороге. Читатели могут наслаждаться электронными книгами, чтобы скоротать время во время длительных перелетов и поездок на поезде. Самый популярный формат файлов электронных книг — это файл EPUB, сокращение от «электронная публикация». Файлы EPUB поддерживаются различными устройствами для чтения электронных книг и сегодня являются стандартом для публикации электронных книг.
Формат файла EPUB — это открытый стандарт, основанный на XHTML для контента и XML для метаданных, содержащихся в zip-архиве. А поскольку все основано на открытых стандартах, мы можем использовать общие инструменты для создания или проверки файлов EPUB. Давайте рассмотрим файл EPUB, чтобы узнать о нем больше. Руководство с советами и рекомендациями по программированию на C, опубликованное ранее в этом году на Opensource.com, доступно в формате PDF или EPUB.
Поскольку файлы EPUB представляют собой содержимое XHTML и метаданные XML в zip-файле, вы можете начать с команды unzip
, чтобы просмотреть EPUB из командной строки:
$ unzip -l osdc_Jim-Hall_C-Programming-Tips.epub
Archive: osdc_Jim-Hall_C-Programming-Tips.epub
Length Date Time Name
--------- ---------- ----- ----
20 06-23-2022 00:20 mimetype
8259 06-23-2022 00:20 OEBPS/styles/stylesheet.css
1659 06-23-2022 00:20 OEBPS/toc.xhtml
4460 06-23-2022 00:20 OEBPS/content.opf
44157 06-23-2022 00:20 OEBPS/sections/section0018.xhtml
1242 06-23-2022 00:20 OEBPS/sections/section0002.xhtml
22429 06-23-2022 00:20 OEBPS/sections/section0008.xhtml
[...]
9628 06-23-2022 00:20 OEBPS/sections/section0016.xhtml
748 06-23-2022 00:20 OEBPS/sections/section0001.xhtml
3370 06-23-2022 00:20 OEBPS/toc.ncx
8308 06-23-2022 00:21 OEBPS/images/image0011.png
6598 06-23-2022 00:21 OEBPS/images/image0009.png
[...]
14492 06-23-2022 00:21 OEBPS/images/image0005.png
239 06-23-2022 00:20 META-INF/container.xml
--------- -------
959201 41 files
Этот EPUB содержит множество файлов, но большая часть из них — контент. Чтобы понять, как создается файл EPUB, проследите за процессом чтения электронных книг:
Читателям электронных книг необходимо убедиться, что файл EPUB действительно является файлом EPUB. Они проверяют файл, проверяя файл
mimetype
в корне архива EPUB. Этот файл содержит всего одну строку, описывающую тип MIME файла EPUB:application/epub+zip
-
Чтобы найти содержимое, программы чтения электронных книг начинают с файла
META-INF/container.xml
. Это краткий XML-документ, в котором указано, где найти контент. Для этого файла EPUB файлcontainer.xml
выглядит следующим образом:<?xml version="1.0" encoding="UTF-8"?> <container version="1.0" xmlns="urn:oasis:names:tc:opendocument:xmlns:container"> <rootfiles> <rootfile full-path="OEBPS/content.opf" media-type="application/oebps-package+xml"/> </rootfiles></container>
Чтобы файл
container.xml
было легче читать, я разделил одну строку на несколько строк и добавил некоторый интервал для отступа каждой строки. XML-файлы на самом деле не заботятся о дополнительных пробелах, таких как новые строки и пробелы, поэтому эти дополнительные пробелы не влияют на XML-файл. В файле
container.xml
указано, что корень EPUB начинается с файлаcontent.opf
в каталоге OEBPS. Расширение OPF связано с тем, что EPUB основан на открытом формате упаковки, но файлcontent.opf
на самом деле является просто еще одним XML-файлом.Файл
content.opf
содержит полный манифест содержимого EPUB, а также упорядоченное оглавление со ссылками для поиска каждой главы или раздела. Файлcontent.opf
для этого EPUB довольно длинный, поэтому в качестве примера я покажу здесь лишь его часть.Данные XML содержатся в блоке
<package>
, который сам содержит блок<metadata>
, данные<manifest>
и<spine>
блок, содержащий оглавление электронной книги:<?xml version="1.0" encoding="UTF-8"?><package unique-identifier="unique-identifier" version="3.0" xmlns="http://www.idpf.org/2007/opf" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:dcterms="http://purl.org/dc/terms/" xmlns:opf="http://www.idpf.org/2007/opf"><metadata><dc:identifier id="unique-identifier">osdc002</dc:identifier><dc:title>Tips and Tricks for C Programming</dc:title><dc:creator>Jim Hall</dc:creator><dc:language>English</dc:language><meta property="dcterms:modified">2022-06-23T12:09:13Z</meta><meta content="LibreOffice/7.3.0.3$Linux_X86_64 LibreOffice_project/0f246aa12d0eee4a0f7adcefbf7c878fc2238db3 (libepubgen/0.1.1)" name="generator"/></metadata><manifest>...<item href="https://opensource.com/sections/section0001.xhtml" id="section0001" media-type="application/xhtml+xml"/><item href="https://opensource.com/images/image0003.png" id="image0003" media-type="image/png"/><item href="https://opensource.com/styles/stylesheet.css" id="stylesheet.css" media-type="text/css"/><item href="https://opensource.com/toc.ncx" id="toc.ncx" media-type="application/x-dtbncx+xml"/>...</manifest><spine toc="toc.ncx"><itemref idref="section0001"/><itemref idref="section0002"/><itemref idref="section0003"/>...</spine></package>
Вы можете сопоставить данные, чтобы увидеть, где найти каждый раздел. Вот как это делают читатели EPUB. Например, первый элемент в оглавлении ссылается на
section0001
, который определен в манифесте и расположен в файлеsections/section0001.xhtml
. Файл не обязательно должен называться так же, как запись idref, но именно так автоматический процесс LibreOffice Writer создал файл. (В метаданных видно, что этот EPUB был создан с помощью LibreOffice версии 7.3.0.3 для Linux, который может экспортировать контент в виде файлов EPUB.)
Формат EPUB
Файлы EPUB — отличный способ публиковать контент в открытом формате. Формат файла EPUB представляет собой метаданные XML с содержимым XHTML внутри zip-контейнера. Хотя большинство технических писателей используют инструменты для создания файлов EPUB, поскольку EPUB основан на открытых стандартах, это означает, что вы можете создавать свои собственные файлы EPUB каким-либо другим способом.