XML-Know How

Die NCX-Navigationsdatei

8820.png
Abb. 3.3

Das Navigational Control file for XML applications ist dem DAISY-Standard entlehnt. Diese XML-Struktur bildet die hierarchische Gliederung der E-Book-Inhalte ab und ermöglicht dem Leser das Navigieren zu den einzelnen Teilen und Kapiteln des E-Books. Wie differenziert diese Navigation ist, hängt von der Strukturierung dieser XML-Datei ab. Die NCX-Datei muss nicht zwingend den vollständigen verschachtelten Aufbau der Publikation abbilden und kann auch weniger (oder mehr) Einträge als das entsprechende HTML-Inhaltsverzeichnis enthalten.

Die Struktur der NCX-Datei beschreibt im Prinzip eine logische Liste von definierten Inhaltsdokumenten bzw. Teilen von Dokumenten. Anhand des folgenden Beispiels soll ihr Aufbau erläutert werden.


<ncx xmlns="http://www.daisy.org/z3986/2005/ncx/" version="2005-1">
  <head>
    <meta name="dtb:uid" content="buchid"/>
    <meta name="dtb:depth" content="2"/>
    <meta name="dtb:totalPageCount" content="0"/>
    <meta name="dtb:maxPageNumber" content="0"/>
  </head>
  <docTitle>
    <text>EPUB 3 und KF 8 verstehen</text>
  </docTitle>
  <navMap>
    <navPoint id="kapitel1" playOrder="1">
      <navLabel><text>Einleitung</text></navLabel>
      <content src="kapitel1.xhtml"/> 
    </navPoint>
    <navPoint id="kapitel2" playOrder="2">
      <navLabel><text>EPUB 3</text></navLabel>
      <content src="kapitel2.xhtml"/>
    </navPoint>
    <navPoint id="kapitel3" playOrder="3">
      <navLabel><text>KF 8</text></navLabel>
      <content src=" kapitel3.xhtml"/> 
    </navPoint>
    <navPoint id="kapitel4" playOrder="4">
      <navLabel><text>Vergleich der Formate</text></navLabel>
      <content src="kapitel4.xhtml"/>
      <navPoint id="kapitel4_1" playOrder="5">
        <navLabel><text>Seite</text></navLabel>
        <content src="kapitel4_1.xhtml"/>
      </navPoint>
    </navPoint>
  </navMap>
</ncx>
Listing 3.6 Aufbau der NCX-Datei

Das Wurzelelement ncx enthält die Namespace- und Versions-Deklaration des NCX-Formats [1]. Das erste Kindelement head beinhaltet einige notwendige Metainformationen auf Publikationsebene [2]. Das dtb:uid-Metaelement verweist auf die ID des eindeutigen Bezeichner der Publikation, entsprechend des unique-identifier der OPF-Datei. Das Metaelement dtb:depth legt die darzustellende Verschachtelungstiefe der Navigationsstruktur fest (mindestens 1). Da die beiden Seiteninformationen dtb:totalPageCount und dtb:maxPageNumber für den NCX-Container pageList relevant sind, der von KF 8 nicht unterstützt wird, wird deren Wert jeweils auf 0 gesetzt. Anschließend an die Metadaten steht der Titel des NCX in docTitle [8], der jedoch nicht ausgegeben wird.

Die navMap enthält die eigentliche Navigationsstruktur [11]. Ein navPoint repräsentiert jeweils einen Inhaltseintrag [12]. Notwendige Attribute des Elements sind playOrder, das die eindeutige Reihenfolge des Eintrags deklariert, und id, das eine eindeutige ID enthält. Der Titel des Eintrags wird mit dem Kindelement navLabel ausgezeichnet [13], das Sprungziel (Datei oder Dokumentteil) wird mit dem src-Attribut des content-Elements referenziert [14].

Die navPoint-Elemente können rekursiv verschachtelt werden, indem vor das schließende Tag ein weiterer navPoint gesetzt wird [27]. Das Listing 3.6 ergibt die folgende Navigationsstruktur:

  • Einleitung
  • EPUB 3
  • KF 8
  • Vergleich der Formate
  • Seite

Der Kindle Previewer stellt das NCX als aufklappbaren Navigationsbaum in einem eigenen, in der Symbolleiste verlinkten Fenster dar.

8882.png
Abb. 3.4 Darstellung des NCX im Kindle Previewer