Der Kern jeder OeB-Publikation ist das Package File. Es enthält Metadaten, eine Liste der Dateien der Publikation, Informationen über Fallbacks, und Angaben zur Navigationsstruktur.
Beispiel 1. Das Package File einer Open eBook-Publikation
<?xml version="1.0"?> <!DOCTYPE package PUBLIC "+//ISBN 0-9673008-1-9//DTD OEB 1.2 Package//EN" "http://openebook.org/dtds/oeb-1.2/oebpkg12.dtd"> <package unique-identifier="xyz"> <metadata><!-- ... --></metadata> <manifest><!-- ... --></manifest> <spine><!-- ... --></spine> <tours><!-- ... --></tours> <guide><!-- ... --></guide> </package>
Das Beispiel zeigt ein Package File. Das Root-Element jedes Package Files ist das package-Element. Die folgenden Abschnitte gehen auf die möglichen Kindelemente ein.
Das metadata-Element enthält Metainformationen über die Publikation. Es muss in jeder Publikation vorhanden sein.
Beispiel 2. Der metadata-Abschnitt
<package unique-identifier="xyz"> <metadata> <dc-metadata xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:oebpackage="http://openebook.org/namespaces/oeb-package/1.0/"> <dc:Title>Alice in Wonderland</dc:Title> <dc:Language>en</dc:Language> <dc:Identifier id="xyz" scheme="ISBN">123456789X</dc:Identifier> <dc:Creator role="aut">Lewis Carroll</dc:Creator> </dc-metadata> <x-metadata> <meta name="price" content="USD 19.99" /> </x-metadata> </metadata> <!-- ... --> </package>
Das Element dc-metadata ist erforderlich und enthält Metainformationen nach dem Dublin-Core-Standard ([DublinCore]). Die beiden Namespace-Angaben dc und oebpackage sind in genau dieser Form (Präfix und Namespace-URI) fest forgeschriebene Bestandteile der OeB-Spezifikation. Dadurch können auch Parser ohne Namespace-Unterstützung das Package File verarbeiten, indem sie den Namespace-Präfix als Teil des Elementnamens behandeln. Der dc-Namespace wird für Dublin Core-Elemente verwendet. Der oebpackage-Namespace ist für die Verwendung in zukünftigen Versionen der Spezifikation reserviert.
Das dc:Creator-Element kann zusätzlich um ein role-Attribut erweitert werden, dessen mögliche Werte durch den MARC-Standard der Library of Congress der Vereinigten Staaten festgelegt sind ([MARC]).
Ein dc:Identifier-Element muss ein id-Attribut haben, dessen Wert mit dem unique-identifier-Attribut des package-Elements übereinstimmt. Dadurch wird eine Package-Identität festgelegt, die diese Publikation global eindeutig identifizierbar macht. Als mögliche Identifier werden URIs oder — wie im Beispiel — ISBN-Nummern vorgeschlagen.
Die Elemente dc:Identifier, dc:Title und dc:Language müssen angegeben werden.
Neben dem dc-metadata-Element kann ein optionales x-metadata-Element angegeben werden, in dem weitere, nicht standardisierte Metainformationen abgelegt werden können.
Auch das manifest-Element ist zwingend erforderlich. Es enthält eine Liste aller Dateien, die Bestandteil der Publikation sind, ausgenommen das Package File selbst. Für jede Datei wird ein Dateiname (als URI) und ein MIME-Typ angegeben.
Beispiel 3. Der manifest-Abschnitt
<manifest> <item id="toc" href="contents.xml" media-type="text/x-oeb1-document" /> <item id="c1" href="chapter-1.html" media-type="text/x-oeb1-document" /> <!-- ... --> <item id="titlepic" href="title.png" media-type="image/png" /> <item id="titlepic_tiff" href="titlepic.tiff" media-type="image/tiff" fallback="titlepic" /> </manifest>
Dieses Beispiel zeigt die Funktionsweise des Fallback-Mechanismus: Die Datei titlepic.tiff gehört nicht einem der Standard-Dateitypen an. Daher wurde das Element mit der id titlepic als Fallback angegeben, also title.png.
Klassische Bücher haben zwangsweise eine lineare Struktur: Der Einband hält die einzelnen Seiten in einer festen Reihenfolge zusammen. Das spine-Element legt eine solche feste, sequentielle Reihenfolge für eine OeB-Publikation fest. Jedes Kindelement referenziert ein Dokument aus dem Manifest-Abschnitt. Dadurch kann zum Beispiel ein Lesegerät spezielle Tasten zum Vorwärts- und Zurückblättern analog zum klassischen Buch anbieten. Das spine-Element muss vorhanden sein.
Das spine-Element legt eine sequentielle Ordnung der Dokumente fest. Mit dem optionalen tours-Element können abweichende Ordnungen des Inhalts angegeben werden. Ein Kochbuch könnte beispielsweise eine Tour für alle Fischrezepte und eine Tour für alle Pastagerichte anbieten.
Beispiel 5. Der tours-Abschnitt
<tours> <tour id="tour1" title="Fischrezepte"> <site title="Tunfischaufstrich" href="snacks.html#r3" /> <site title="Lachs-Blattspinat-Lasagne" href="hauptgerichte.html#r14" /> <!-- ... --> </tour> <tour id="tour2" title="Pastagerichte"> <site title="Fettucine alla Carbonara" href="hauptgerichte.html#r11" /> <site title="Lachs-Blattspinat-Lasagne" href="hauptgerichte.html#r14" /> <!-- ... --> </tour> </tours>
Schließlich kann das optionale guide-Element auf typische strukturelle Komponenten eines Buches verweisen.
Beispiel 6. Der guide-Abschnitt
<guide> <reference type="toc" title="Inhaltsverzeichnis" href="inhalt.html" /> <reference type="index" title="Index" href="anhang.html#index" /> </guide>
Mögliche Werte für das type-Attribut sind: cover, title-page, toc, index, glossary, acknowledgements, bibliography, colophon, copyright-page, dedication, epigraph, foreword, loi (list of illustrations), lot (list of tables), notes, preface, und benutzerdefinierte Werte, die mit „other.“ beginnen müssen, beispielsweise other.introduction.