Скачать книгу

werden muss (siehe Kapitel 2.3).

      1<manifest>

      2 <item id="toc" properties="nav" href="toc.xhtml" media-type="application/xhtml+xml"/>

      3 <item id="cover" href="abbildungen/cover.jpg" media-type="image/jpeg" properties="cover-image"/>

      4 <item id="kapitel1" href="kapitel1.xhtml" media-type="application/xhtml+xml"/>

      5 <item id="kapitel2" href="kapitel2.xhtml" media-type="application/xhtml+xml"/>

      6 <item id="font" href="fonts/DroidSerif-Regular.otf" media-type="application/vnd.ms-opentype"/>

      7 <item id="pdf" href="pdf/broschuere.pdf" media-type="application/pdf" fallback="broschuere"/>

      8 <item id="broschuere" href="broschuere.xhtml" media-type="application/xhtml+xml"/>

      9</manifest>

      Listing 2.6 Das manifest-Element mit den item-Kindelementen

      Das obere Code-Listing beinhaltet eine Fallback-Struktur für ein eingebundenes PDF [8]. Kann dieses nicht angezeigt werden, wird stattdessen eine XHTML-Datei, die idealerweise denselben Inhalt anbietet, angezeigt. Ausgeschlossen von dieser Fallbackregelung über das manifest-Element sind lediglich Schriftdateien – hier findet das Fallback-Handling über die CSS-Datei statt.

      Das Manifest eines EPUBs muss mindestens aus einem Eintrag, der den Verweis auf das Navigationsdokument enthält, bestehen.

      2.1.3 Das spine-Element

      Ein weiterer grundlegender Bestandteil des OPF-Standards ist eine Struktur, welche die standardmäßige Abfolge der einzelnen Inhaltsdokumente innerhalb des EPUBs festlegt. Diese Sortierung wird von dem Containerelement spine übernommen. Kommt ein Lesegerät am Ende einer Datei an, wird anhand der Angaben innerhalb dieses Container festgelegt, welche Datei als nächstes angezeigt wird.

      Die Einträge der XHTML-Inhaltsdokumente im Spine erfolgen mit dem Element itemref. Die Reihenfolge dieser Elemente definiert die Sequenz in der Publikation in Form einer geordneten Liste. Jedes itemref-Element muss mit dem idref-Attribut auf einen item-Eintrag im Manifest verweisen. Somit sind die Elemente in spine grundsätzlich eine Teilmenge der im manifest-Element definierten EPUB-Dokumente.

      Mit dem Attribut linear kann darüber hinaus zwischen Dokumenten, die für die Leseabfolge benötigt werden und zusätzlichen Inhalten außerhalb dieser Abfolge unterschieden werden. Dokumente, die Bestandteil des Haupttextes sind, besitzen den Standardwert yes, ergänzende Inhalte erhalten den Wert no. Aufgrund des Standardwerts kann das Attribut bei primären Dokumenten weggelassen werden.

      Für das itemref-Element sind in der Spezifikation Eigenschaften definiert, die im optionalen property-Attribut angegeben werden können. Die Eigenschaftswerte page-spread-left und page-spread-right ermöglichen die Festlegung des Seitenbeginns eines Inhaltsdokuments. Stellt ein EPUB-Reader die Inhalte in einer Doppelseiten-Ansicht dar, kann auf diese Weise die Seitenanordnung gesteuert werden.

      Darüber hinaus existiert zur Seitensteuerung für das spine-Element das optionale Attribut page-progression-direction, mit welchem die globale Seitenlaufrichtung festgelegt werden kann. Mögliche Werte sind ltr (links nach rechts), rtl (rechts nach links) und default (Standardeinstellung des Geräts).

      Der spine-Container muss mindestens einen Eintrag für das Navigationsdokument beinhalten. Das nachstehende Beispiel bezieht sich auf das manifest entsprechend Code-Listing 2.6.

      1<spine>

      2 <itemref id="toc" linear="no"/>

      3 <itemref idref="kapitel1" properties="page-spread-right"/>

      4 <itemref idref="kapitel2"/>

      5</spine>

      Listing 2.7 Ein einfacher spine-Container

      2.1.4 Das bindings-Element

      Der bindings-Container ermöglicht die Steuerung von komplexen Fallback-Mechanismen für Systeme, die JavaScript unterstützen. Die Struktur steuert den Umgang mit Inhalten, die von dem HTML 5-Element object[3] referenziert werden, jedoch nicht zu den Kernmedientypen des EPUB-Standards gehören. Mit diesem Element können externe Inhalte in ein Dokument eingebunden werden. Eine ausführliche Beschreibung des Elements findet sich im Kapitel „HTML 5-Inhaltsdokumente“. Das folgende Beispiel zeigt die Einbindung eines Flash-Videoplayers, der ein MPEG-codiertes Video aufruft.

      1<object data="videoplayer.swf" type="application/x-shockwave-flash">

      2 <param name="flashvars" value="image=vorschau.jpg&file=video.mp4"/>

      3</object>

      Listing 2.8 Das object-Element

      Die recht komplexe Struktur des bindings-Elements wird hier nur der Vollständigkeit halber beschrieben, ihr Einsatz in EPUB beschränkt sich auf Ausnahmefälle.

      Unterstützt ein Lesegerät eine über object eingebettete Struktur oder ein Dateiformat nicht, wird zunächst der bindings-Container auf den nicht unterstützten MIME-Type geprüft und bei Erfolg das in diesem Element referenzierte XHTML-Dokument aufgerufen. Erst wenn keine Entsprechung in den Bindings existiert bzw. auch das geskriptete Inhaltsdokument nicht wiedergegeben werden kann, werden die elementeigenen Alternativen verwendet.

      1<manifest>

      2 <item id="diashow" href="diashow.xml" media-type="application/slideshow"/>

      3 <item id="kapitel_jsplayer" href="kapitel_jsplayer.xhtml" media-type="application/xhtml+xml" properties="scripted"/>

      4 […]

      5</manifest>

      6[…]

      7<bindings>

      8 <mediaType handler="kapitel_jsplayer" media-type="application/x-shockwave-flash"/>

      9</bindings>

      Listing 2.9 Fallback-Handling durch die bindings-Komponente

      Anhand des Listings 2.7 soll ein solches Szenario aufgezeigt werden. Per object-Element (siehe Kapitel 2.2.1) ist eine Flash-Datei zur Darstellung des Videoplayers (MIME-Type application/x-shockwave-flash) in ein HTML-Dokument eines EPUBs eingebunden. Kann das Lesegerät dieses Dateiformat nicht darstellen, unterstützt jedoch Skripting-Inhalte, wird das mediaType-Element mit identischem MIME-Type in media-type gefunden [8] und stattdessen die Inhaltsdatei, auf die über die ID im handler-Attribut verwiesen wird, aufgerufen. Dieses XHTML-Dokument, welches im Manifest referenziert sein und das Attribut properties="scripted" besitzen muss [3], enthält eine vergleichbare Umsetzung eines Videoplayers auf Basis von JavaScript.

      Auf diese Weise können skriptbasierte Alternativen für externe Inhalte implementiert und, über die eigenen Möglichkeiten von object hinaus, komplexe Fallback-Lösungen vorgesehen werden. Die Fallback-Struktur des bindings-Containers hat grundsätzlich Priorität gegenüber Element-spezifischen Mechanismen wie den Kindelementen des object-Elements. Lesegeräte, die JavaScript unterstützen, müssen das bindings-Element auswerten.

      Da je Medientyp lediglich ein handler-Dokument definiert werden kann, stößt diese Fallback-Lösung bereits bei der Verwendung zweier Dateien mit selbem MIME-Type an seine Grenzen.

      Конец ознакомительного фрагмента.

      Текст предоставлен ООО «ЛитРес».

      Прочитайте эту книгу целиком, купив полную

Скачать книгу