XML-Know How

Das HTML-Inhaltsverzeichnis

Neben der Navigationsdatei wird für Kindle-E-Books ein auf HTML basierendes, verlinktes Inhaltsverzeichnis zu Beginn des E-Book-Inhalts benötigt. Auf diese Verzeichnisdatei wird im guide-Element der Paketdatei verwiesen (siehe Kapitel 3.1.4), wodurch es in der Symbolleiste des Kindle Previewers bzw. von einem vergleichbaren Interface-Element der Kindle-Reader verlinkt und in der Regel auch in die lineare Lesereihenfolge des spine aufgenommen wird.

In den Guidelines werden Code-Empfehlungen für die Struktur des Inhaltsverzeichnisses gegeben, die auf der Verwendung von div-Blöcken basieren:


<style>
  div.chapter { margin-left: 1em}
  div.subchapter { margin-left: 2em}
</style>
<div>Section 1</div>
<div class="chapter">Kapitel 1</div>
<div class="chapter">Kapitel 2</div>
<div class="chapter">Kapitel 3</div>
<div class="subchapter">Unterkapitel 1</div>
<div class="subchapter">Unterkapitel 2</div>
<div class="chapter">Kapitel 4</div>
<div class="subchapter">Unterkapitel 1</div>
Listing 3.7 HTML-Inhaltsverzeichnis gemäß Publishing Guides

Während dieses Markup valide ist und korrekt dargestellt wird, sollte zur Trennung von Struktur und Layout die CSS-Deklarationen des style-Elements in eine externe Stylesheet-Datei ausgelagert werden. Anstelle der Verwendung einzelner div-Blöcke kann für eine semantische Strukturierung der Verzeichniseinträge eine geordnete oder ungeordnete Liste eingesetzt werden. Durch eine Verschachtelung der Listen können beliebig tiefe Hierarchieebenen umgesetzt werden. Mit der Verwendung des nav-Containers kann ein Inhaltsverzeichnis erstellt werden, das der Umsetzung in EPUB 3 entspricht.


<nav>
  <ul class="ebene1">
    <li><a href="einleitung.html">Einleitung</a></li>
    <li><a href="kapitel1.xhtml">EPUB 3</a>
      <ul class="ebene2">
        <li><a href="kapitel1_1.xhtml">Aufbau</a></li>
      </ul>
    </li>
    <li><a href="kapitel2.xhtml">KF 8</a></li>
  </ul>
</nav>
Listing 3.8 Ein listenbasiertes KF 8-Inhaltsverzeichnis

Die Anker der Inhaltseinträge können auf HTML-Dateien als Ganzes oder auf beliebige Teilstrukturen (Fragment-Bezeichner über id-oder name-Attribute) innerhalb einer HTML-Datei verweisen.