Ein Unternehmen hat für seine PDF-Dokumente einen Styleguide, der eine maximale Verschachtelungstiefe von 2 Hierarchieebenen erlaubt.
Die Bookmarks werden als XML-Struktur betrachtet. Aufgrund dieser Struktur wird ein geeigneter XPath-Ausdruck entwickelt.
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. -->