pdf/toc.xsl (116 lines of code) (raw):
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="2.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:outline="http://wkhtmltopdf.org/outline"
xmlns="http://www.w3.org/1999/xhtml">
<xsl:output doctype-public="-//W3C//DTD XHTML 1.0 Strict//EN"
doctype-system="http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"
indent="yes"/>
<xsl:template match="outline:outline">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
<style>
* {
padding: 0;
margin: 0;
font-size: 14px;
letter-spacing: .5px;
font-family: 'Open Sans', Helvetica, Arial, sans-serif;
}
.book-toc-title {
margin-bottom: 1em;
}
.book-toc-list {
}
.book-toc-list .book-toc-list {
}
.book-toc-item {
list-style-type: none;
}
.book-toc-item .book-toc-item {
list-style-type: none;
list-style-position: outside;
font-size: 14px;
margin: 0.2em 0 0 2em;
padding-top: 0.2em;
}
.book-toc-item.level_1 {padding-top: 1em; margin-bottom: 0.2em}
.book-toc-item.level_1:first-child {display: none;}
.book-toc-item.level_2 {padding-bottom: 0.2em;}
.book-toc-item.level_3 {}
.book-toc-item-inner {
}
.book-toc-item-title {
display: block;
padding-bottom: 5px;
font-size: 16px;
font-weight: bold;
}
.book-toc-item-title .text {
display: block;
border-bottom: 1px dotted #000;
height: 19px;
}
.book-toc-item-title .text-inner {
background-color: #fff;
line-height: 30px;
padding-right: 7px;
}
.book-toc-item .book-toc-item .book-toc-item-title {
font-weight: normal;
}
.book-toc-item-pagenum {
position: relative;
float: right;
top: 5px;
paddig-bottom: 0;
padding-left: 5px;
font-size: 14px;
line-height: 20px;
text-align: right;
background-color: #fff;
}
</style>
</head>
<body>
<h1 class="book-toc-title">Table of Contents</h1>
<ol class="book-toc-list">
<xsl:apply-templates select="outline:item/outline:item"/>
</ol>
</body>
</html>
</xsl:template>
<xsl:template match="outline:item[count(ancestor::outline:item)<=2]">
<li class="book-toc-item level_{count(ancestor::outline:item)}">
<xsl:if test="@title!=''">
<div class="book-toc-item-inner">
<span class="book-toc-item-pagenum">
<xsl:value-of select="@page"/>
</span>
<a class="book-toc-item-title">
<xsl:if test="@link">
<xsl:attribute name="href">
<xsl:value-of select="@link"/>
</xsl:attribute>
</xsl:if>
<xsl:if test="@backLink">
<xsl:attribute name="name">
<xsl:value-of select="@backLink"/>
</xsl:attribute>
</xsl:if>
<span class="text">
<span class="text-inner">
<xsl:value-of select="@title"/>
</span>
</span>
</a>
</div>
</xsl:if>
<ol class="book-toc-list">
<xsl:comment>added to prevent self-closing tags in QtXmlPatterns</xsl:comment>
<xsl:apply-templates select="outline:item"/>
</ol>
</li>
</xsl:template>
</xsl:stylesheet>