Digitale Bücher im Format EPUB selbst erstellen: Das Verzeichnis META-INF

Versuch macht kluch ;o)
Olaf Hoffmann

Kurzanleitung

Inhalt

Das Verzeichnis 'META-INF' ist erforderlich für ein Archiv im Format EPUB. Es liegt im Wurzelverzeichnis des Archivs und enthält mindestens eine Datei namens 'container.xml' mit Angaben zu den sonstigen Inhalten des Buches. Weitere optionale Dateien in diesem Verzeichnis sind: 'manifest.xml' (welches Angaben gemäß ODF enthalten kann), 'metadata.xml' (welches Metainformationen enthalten kann), 'signatures.xml' (für digitale Signaturen), 'encryption.xml' (für Schlüssel zur Entschlüsselung verschlüsselter Inhalte), 'rights.xml' (für die Angabe von Rechten und Lizenzen). Diese optionalen Zutaten werden für normale Bücher nicht gebraucht, daher braucht man sich in der Praxis als Autor nicht darum zu kümmern, solange es keinen konkreten Bedarf gibt, irgendetwas davon zu nutzen, etwa weil Informationen über den Inhalt oder über Rechte und Lizenzen ohnehin bereits im OPF-Dokument untergebracht werden können.

Archivinhalt

Die Datei 'container.xml' hat primär die Aufgabe, auf das OPF-Dokument mit den sonstigen Angaben zum Inhalt des Buches zu verweisen. Sofern weitere alternative Repräsentationen des Inhaltes im selben Archiv verfügbar sind, können darin auch die Alternativen angegeben werden. Folgendes zeigt ein Beispiel für den Inhalt eines solchen Dokumentes mit drei Alternativen, dem erforderlichen OPF-Dokument samt zugehörigen Inhaltsdokumenten einerseits, andererseits als Alternative eine Variante im Format FictionBook [FB2] und eine als PS-Dokument, welche den gleichen Inhalt im jeweiligen Format repräsentieren:

<?xml version="1.0"?>
<container version="1.0" xmlns="urn:oasis:names:tc:opendocument:xmlns:container">
  <rootfiles>
    <rootfile full-path="Inhalt/index.opf"
     media-type="application/oebps-package+xml" />
    <rootfile full-path="FB2/Buch.fb2"
     media-type="text/xml" />
    <rootfile full-path="PS/Buch.ps"
     media-type="application/postscript" />
  </rootfiles>
</container>

Die Struktur des Dokumentes ist eigentlich recht einfach. Das Wurzelelement ist container aus dem Namensraum 'urn:oasis:names:tc:opendocument:xmlns:container' und verwendet wird Version 1.0.

container enthält ein Element rootfiles. Da container sonst keinen Inhalt enthalten kann, bleibt unklar, was die konkrete Funktion dieses Elementes ist.

rootfiles enthält mindestens eines, optional mehrere Elemente rootfile.
Ein rootfile steht jeweils für eine alternative Repräsentation des gesamten Buches.
Es wird empfohlen, für jede Alternative ein eigenes Unterverzeichnis im Wurzelverzeichnis anzulegen. Gegebenenfalls gemeinsam genutzte Dateien können natürlich in einem weiteren Verzeichnis untergebracht werden.

rootfile hat die Attribute full-path und media-type.

Mittels full-path wird der Pfad relativ zum Wurzelverzeichnis des Archivs zu jener Datei angegeben, welche die jeweilige Buchalternative repräsentiert, also etwa das OPF-Dokument oder bei Formaten, bei denen das Buch nur aus einem Dokument besteht, eben der Pfad zu diesem Dokument.

media-type gibt den Medien-Typ oder Inhaltstyp der referenzierten Datei an, für ein OPF-Dokument ist dies 'application/oebps-package+xml', für ein XHTML-Dokument entsprechend 'application/xhtml+xml' oder für ein SVG_Dokument entsprechend 'image/svg+xml'.

Exakt ein rootfile muß ein OPF-Dokument referenzieren, optionale andere referenzieren andere Formate als Alternativen. Somit sind andere Sprachversionen eines Buches also in diesem Sinne keine alternative Ansichten, auch sollte man bei den Alternativen pro Format auch nur eine Alternative angeben, weil es bei der Auswahl der Alternative einzig auf den verwendeten Medientyp ankommt.

Es ist nicht angegeben, wie ein Darstellungsprogramm auswählt. Plausibel wäre es zum Beispiel, dem Leser eine Auswahl der Alternativen anzugeben und dabei jene zu markieren, die mit dem Programm direkt darstellbar sind, unter denen dann ausgewählt werden kann. Bei den anderen könnte ein solches Programm dann die Möglichkeit anbieten, diese Alternativen bei Bedarf mit einem anderen Programm darstellen zu lassen.

Inhaltsangaben nach ODF

'manifest.xml' ist eine Datei, welche Angaben gemäß ODF enthalten kann. Dies kann zum Beispiel dazu dienen, eine Alternative im Format ODF im selben Archiv anzubieten. ODF verwendet ebenfalls ZIP als Archivformat und für den Inhalt ebenfalls XML-Formate. Eine solche Datei entspricht von der Funktion her ungefähr der OPF-Datei für EPUB und weist ähnliche Strukturen auf [ODF].

Metainformationen

In der Datei 'metadata.xml' können Metainformationen über das gesamte Archiv notiert werden, während etwa in der OPF-Datei nur Metainformationen über jenes Buch stehen, welches durch diese Datei beschrieben wird. Auch anderen Alternativen können natürlich ihre eigenen Metainformationen separat beinhalten. Was für alle Alternative zusammen notiert werden soll, gehört allerdings in diese Datei.

Der Inhalt ist derzeit nicht festgelegt, sofern vorhanden muß es aber XML mit einer korrekten Namensraumangabe sein. Plausibel wäre es zum Beispiel, den Standard RDF zu verwenden [RDF].

Signaturen

Mit 'signatures.xml' können digitale Signaturen für andere Dokumente im Archiv angegeben werden. Mit einer solchen Signatur kann etwa geprüft werden, ob ein Dokument im Archiv beschädigt ist oder manipuliert wurde.

Bei einer absichtlichen Manipulation besteht natürlich das Problem, daß ein Angreifer auch diese Datei selbst manipulieren kann, daher kann es notwendig sein, die Signatur für diese Datei öffentlich zu hinterlegen, damit eine Prüfung mit einer Signatur außerhalb des Buches und jenseits der Zugriffsmöglichkeiten eines Manipulators erfolgen kann.

Das Grundprinzip der Prüfung besteht also darin, daß zunächst aus der zu signierenden Datei eine digitale Signatur erzeugt wird. Die zu signierende Datei kann so einfach verteilt werden. Jemand, der diese Datei prüfen möchte, erzeugt mit derselben Methode aus der Datei eine Signatur und vergleicht sie mit der veröffentlichten Signatur des Originals. Stimmen beide überein, ist der Inhalt nicht manipuliert oder beschädigt.

Zum Beispiel 'XML Signature' beschreibt allerdings ein Verfahren, mit welchem man die Signatur aus einem Dokument entfernen kann, bevor man dessen Signatur ermittelt. So ist es letztlich auch möglich, für 'signatures.xml' selbst eine Signatur zu erstellen, mit welcher überprüft werden kann, ob das Dokument mit den Signaturen selbst manipuliert worden ist [XMLS].

Das kann einen Manipulator natürlich nicht davon abhalten, das gesamte Archiv auszutauschen und für das manipulierte Archiv eigene Signaturen einzubauen. Letztlich ist es also vermutlich immer notwendig, für die Prüfung mindestens eine externe vertrauenswürdige Signatur-Quelle für die Datei 'signatures.xml' bereitzustellen oder eben gleich eine solche Signatur für das komplette Archiv bereitzustellen, wonach man sich dann diese Datei sparen kann.

Die Struktur des Dokumentes sieht wie folgt aus: Das Wurzelelement heißt signatures aus dem Namensraum 'urn:oasis:names:tc:opendocument:xmlns:container'. Es enthält ein oder mehrere Elemente Signature aus dem Namensraum 'http://www.w3.org/2001/04/xmldsig#', der zu XML Signature gehört.

Entschlüsselung

Falls im Archiv irgendeine Datei verschlüsselt ist, so muß eine Datei 'encryption.xml' vorhanden sein. Diese enthält für jede verschlüsselte Datei Angaben, mit welchem Schlüssel verschlüsselt wurde und eine Beschreibung, welche Datei damit verschlüsselt wurde.

Dabei ist natürlich zu beachten, daß verschlüsselte Dateien nicht mehr zugänglich sind, also die Verschlüsselung den Zugang zur Information verhindert, falls Schlüssel oder Entschlüsselungsprogramme nicht verfügbar sind.
Bei einem gekauften Buch kann dies ein Mangel und damit eine Rückgabegrund im Rahmen der Gewährleistung oder Produkthaftung sein, falls es dem Leser nicht gelingt, die Inhalte zu entschlüsseln.

Die Struktur des Dokumentes sieht wie folgt aus: Das Wurzelelement heißt encryption aus dem Namensraum 'urn:oasis:names:tc:opendocument:xmlns:container'. Es enthält ein oder mehrere Elemente EncryptedData oder EncryptedKey aus dem Namensraum 'http://www.w3.org/2001/04/xmlenc#', der zu XML Encryption Syntax and Processing gehört [XMLE].

Folgende Dateien dürfen nicht verschlüsselt sein:

Rechte und Lizenzen

In der Datei 'rights.xml' können Angaben zu Rechten und Lizenzen notiert werden. Es ist allerdings nicht angegeben, welches Format und welche Syntax dazu zu verwenden ist. Naheliegend sind hier natürlich wieder RDF, Elemente von Dublin Core [DC], Terme von Dublin Core [DCT] und creative commons [CC] etc.

In der Beschreibung der Datei ist auch von DRM (Digitale Rechteverwaltung/Einschränkungsverwaltung) die Rede, was allerdings mehr der Kontrolle als Gewährung von Rechten dient und daher recht umstritten ist. Wenn eine solche Verwaltung jedenfalls den Zugang zum Inhalt verhindert, kann dies ähnlich wie eine Verschlüsselung ein Mangel sein, der im Rahmen der Gewährleistung oder Produkthaftung zu einer Rückgabe eines gekauften Produktes wegen Funktionsuntüchtigkeit führen kann, falls es dem Leser nicht gelingt, sich den Inhalt dauerhaft zugänglich zu machen, was es auch notwendig machen kann, Sicherheitskopien anzufertigen und von den Werken für den eigenen Bedarf Schlüssel und ähnliche Barrieren zu entfernen, um sich den Inhalt mit bevorzugten Programmen zugänglich zu machen oder auch eine Nutzung in Zukunft sicherzustellen, wenn die Rechteverwaltung des Anbieters nicht mehr verfügbar ist.
Von daher ist sicher zu empfehlen, bei Bedarf nur beschreibend Rechte am Werk einzuräumen. Wird nichts angegeben, gilt ohnehin automatisch das Urheberrecht. Unberechtigte dürfen dann etwa das Werk nicht weiter verbreiten.

Literaturangaben