1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
|
Index: src/resources/skins/common/xslt/fo/document2fo.xsl
===================================================================
RCS file: /home/cvspublic/xml-forrest/src/resources/skins/common/xslt/fo/document2fo.xsl,v
retrieving revision 1.2
diff -u -r1.2 document2fo.xsl
--- src/resources/skins/common/xslt/fo/document2fo.xsl 16 Nov 2002 22:58:50 -0000 1.2
+++ src/resources/skins/common/xslt/fo/document2fo.xsl 19 Nov 2002 07:30:58 -0000
@@ -2,6 +2,7 @@
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:fo="http://www.w3.org/1999/XSL/Format"
+ xmlns:fox="http://xml.apache.org/fop/extensions"
version="1.0">
<xsl:output method="xml"/>
@@ -80,14 +81,57 @@
</fo:repeatable-page-master-alternatives>
</fo:page-sequence-master>
</fo:layout-master-set>
-
+
+ <fox:bookmarks>
+ <xsl:apply-templates select="document/body/section" mode="bookmarks"/>
+ </fox:bookmarks>
+
<fo:page-sequence master-reference="book">
+ <fo:title><xsl:value-of select="document/header/title"/></fo:title>
<xsl:apply-templates/>
</fo:page-sequence>
</fo:root>
</xsl:template>
-
+
+ <xsl:template match="section" mode="bookmarks">
+ <fox:outline internal-destination="{generate-id()}">
+ <fox:label>
+ <xsl:number format="1.1.1.1.1.1.1" count="section" level="multiple"/>
+ <xsl:text> </xsl:text>
+ <xsl:value-of select="title"/>
+ </fox:label>
+ <xsl:apply-templates mode="bookmarks"/>
+ </fox:outline>
+ </xsl:template>
+
+ <xsl:template match="*" mode="bookmarks">
+ <xsl:apply-templates mode="bookmarks"/>
+ </xsl:template>
+
+ <xsl:template match="text()" mode="bookmarks">
+ <!-- suppress text nodes in bookmarks -->
+ </xsl:template>
+
+ <xsl:template name="info">
+ <fo:block-container font-style="italic" absolute-position="absolute"
+ left="0pt" top="0pt" right="6.25in" bottom="150pt"
+ font-size="10pt">
+ <fo:block text-align="center">
+ <fo:basic-link color="lightgrey"
+ external-destination="http://xml.apache.org/fop/dev">
+ Created by: FOP 1.0dev
+ </fo:basic-link>
+ </fo:block>
+ <fo:block text-align="center">
+ <fo:basic-link color="lightgrey"
+ external-destination="http://xml.apache.org/fop/dev">
+ http://xml.apache.org/fop/dev
+ </fo:basic-link>
+ </fo:block>
+ </fo:block-container>
+ </xsl:template>
+
<xsl:template match="document">
<fo:title><xsl:value-of select="header/title"/></fo:title>
@@ -102,6 +146,7 @@
text-align="start">
Page <fo:page-number/>
</fo:block>
+ <xsl:call-template name="info"/>
</fo:static-content>
<fo:static-content flow-name="even-header">
@@ -110,6 +155,7 @@
font-style="italic">
<xsl:value-of select="header/title"/>
</fo:block>
+ <xsl:call-template name="info"/>
</fo:static-content>
<fo:static-content flow-name="even-footer">
@@ -131,6 +177,7 @@
font-style="italic">
<xsl:value-of select="header/title"/>
</fo:block>
+ <xsl:call-template name="info"/>
</fo:static-content>
<fo:static-content flow-name="odd-footer">
@@ -192,6 +239,11 @@
</fo:block>
</xsl:template>
+ <xsl:template match="anchor">
+ <fo:block id="{@id}"/>
+ <xsl:apply-templates/>
+ </xsl:template>
+
<xsl:template match="section">
<xsl:param name="level">0</xsl:param>
@@ -201,9 +253,15 @@
font-family="serif"
font-size="{$size}pt"
font-weight="bold"
- space-before="12pt">
+ space-before="12pt"
+ id="{generate-id()}">
<xsl:number format="1.1.1.1.1.1.1" count="section" level="multiple"/>
<xsl:text> </xsl:text>
+
+ <xsl:if test="normalize-space(@id)!=''">
+ <fo:block id="{@id}"/>
+ </xsl:if>
+
<xsl:value-of select="title"/>
</fo:block>
<xsl:apply-templates>
@@ -255,6 +313,9 @@
font-size="10pt"
background-color="#f0f0f0"
white-space-collapse="false"
+ linefeed-treatment="preserve"
+ white-space-treatment="preserve"
+ wrap-option="no-wrap"
text-align="start">
<xsl:apply-templates/>
</fo:block>
@@ -456,7 +517,16 @@
</xsl:template>
<xsl:template match="link">
+ <xsl:choose>
+ <xsl:when test="starts-with(@href, '#')">
+ <fo:basic-link color="blue" text-decoration="underline" internal-destination="{substring(@href,2)}">
+ <xsl:apply-templates/>
+ </fo:basic-link>
+ </xsl:when>
+ <xsl:otherwise>
<fo:basic-link color="blue" text-decoration="underline" external-destination="{@href}"><xsl:apply-templates/></fo:basic-link>
+ </xsl:otherwise>
+ </xsl:choose>
</xsl:template>
<xsl:template match="figure">
|