Читать книгу EPUB3 und KF8 verstehen - Andreas Kämmerle - Страница 10
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.