Zurück |  | Weiter

## 10.5. Schachtelungstiefe von Bookmarks

### Ausgangssituation

Ein Unternehmen hat für seine PDF-Dokumente einen Styleguide, der eine maximale Verschachtelungstiefe von 2 Hierarchieebenen erlaubt.

### Problem

Wie kann diese Vorgabe geprüft werden?

### Lösungsansatz

Die Bookmarks werden als XML-Struktur betrachtet. Aufgrund dieser Struktur wird ein geeigneter XPath-Ausdruck entwickelt.

### Lösung

Aus den Bookmarks eines PDF-Dokumentes wurde mithilfe des Extraktionsprogramms `ExtractBookmarks` folgende XML-Struktur erzeugt:

    <?xml version="1.0" encoding="UTF-8"?>
    <Bookmark>
      <Title Action="GoTo" Page="1 FitH 698" Style="bold" >Bookmark to first page
        <Title Action="URI" URI="http://www.wikipedia.org/" Color="0 0 1" >
          Link to Wikipedia
        </Title>
      </Title>
    </Bookmark>

Der XPath-Ausdruck soll prüfen, dass es keinen `Title`-Knoten gibt, der 2 oder mehr `Title`-Knoten als Vorgänger hat. Dann sieht der Test folgendermaßen aus:

    <!--
      Testing bookmarks, one nested level allowed.
    -->
    <testcase name="hasBookmarks_LimitedNestedDepthTo1">
      <assertThat testDocument="bookmarks/bookmarksWithPdfOutline.pdf">
        <hasBookmarks>
          <matchingXPath expr="count(//Title[count(ancestor::Title) > 1]) = 0" />
        </hasBookmarks>
      </assertThat>
    </testcase>

    <!--
      Important hint:
      The value of the attribute 'expr' is used as a parameter of type String.
      So you have to use double quotes as outer quotes for the attribute.
      Otherwise you get a compile error after the transformation from XML to Java.
    -->

Zurück | Nach oben | Weiter
10.4. Name des alten Vorstandes | Zum Anfang | Kapitel 11. Installation, Konfiguration, Update