root/tags/lgt293/xml/lgtpdfa4.xsl

Revision 63, 11.8 KB (checked in by pmoura, 7 years ago)

Added a "page number of total of pages" to the footer.

  • Property svn:eol-style set to native
  • Property svn:keywords set to Author Date Id Revision
Line 
1
2<xsl:stylesheet
3    version="1.0"
4    xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
5    xmlns:fo="http://www.w3.org/1999/XSL/Format">
6
7
8<!--
9%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
10%
11%  Logtalk - Object oriented extension to Prolog
12%  Release 2.9.3
13%
14%  Copyright (c) 1998-2002 Paulo Moura.  All Rights Reserved.
15%
16%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
17-->
18
19
20<xsl:output indent="yes"/>
21
22
23<xsl:template match ="/">
24
25    <fo:root xmlns:fo="http://www.w3.org/1999/XSL/Format">
26
27        <fo:layout-master-set>
28            <fo:simple-page-master
29                    master-name="simple"
30                    page-height="297mm" 
31                    page-width="210mm"
32                    margin-top="15mm" 
33                    margin-bottom="15mm" 
34                    margin-left="25mm" 
35                    margin-right="25mm">
36                <fo:region-body margin-top="15mm" margin-bottom="15mm"/>
37                <fo:region-before extent="15mm"/>
38                <fo:region-after extent="15mm"/>
39            </fo:simple-page-master>
40        </fo:layout-master-set>
41
42        <fo:page-sequence master-name="simple">
43       
44            <fo:static-content flow-name="xsl-region-before">
45                <fo:block>
46                    <fo:leader leader-pattern="rule" leader-length="inherit"/>
47                </fo:block>
48                <fo:block
49                        text-align="end" 
50                        font-size="9pt" 
51                        font-family="sans-serif"
52                        font-weight="bold">
53                    <xsl:value-of select="logtalk/entity/type"/>: <xsl:value-of select="logtalk/entity/name"/>
54                </fo:block>
55            </fo:static-content> 
56
57            <fo:static-content flow-name="xsl-region-after">
58                <fo:block>
59                    <fo:leader leader-pattern="rule" leader-length="inherit"/>
60                </fo:block>
61                <fo:block
62                        text-align="end" 
63                        font-size="9pt" 
64                        font-family="sans-serif"
65                        font-weight="bold">
66                    <fo:page-number/> of <fo:page-number-citation ref-id="end"/>
67                </fo:block>
68            </fo:static-content> 
69   
70            <fo:flow flow-name="xsl-region-body">
71                <fo:block
72                        font-size="18pt" 
73                        font-family="sans-serif" 
74                        font-weight="bold" 
75                        space-after="8pt">
76                    <xsl:value-of select="logtalk/entity/name"/>
77                </fo:block>
78                <xsl:apply-templates select="logtalk/entity"/>
79                <xsl:apply-templates select="logtalk/relations"/>
80                <xsl:apply-templates select="logtalk/predicates"/>
81                <fo:block id="end"/>
82            </fo:flow>
83
84        </fo:page-sequence>
85
86    </fo:root>
87
88</xsl:template>
89
90
91<xsl:template match="logtalk/entity">
92
93    <xsl:if test="comment">
94        <fo:block
95                margin-left="1cm"
96                font-size="10pt"
97                font-family="serif" 
98                font-style="italic" 
99                space-after="8pt">
100            <xsl:value-of select="comment"/>
101        </fo:block>
102    </xsl:if>
103
104    <xsl:if test="authors">
105        <fo:block
106                font-size="10pt"
107                font-family="serif" 
108                keep-with-next="always">
109            authors:
110        </fo:block>
111        <fo:block
112                font-size="9pt"
113                font-family="monospace"
114                margin-left="1cm">
115            <xsl:value-of select="authors"/>
116        </fo:block>
117    </xsl:if>
118
119    <xsl:if test="version">
120        <fo:block
121                font-size="10pt"
122                font-family="serif" 
123                keep-with-next="always">
124            version:
125        </fo:block>
126        <fo:block
127                font-size="9pt"
128                font-family="monospace"
129                margin-left="1cm">
130            <xsl:value-of select="version"/>
131        </fo:block>
132    </xsl:if>
133
134    <xsl:if test="date">
135        <fo:block
136                font-size="10pt"
137                font-family="serif" 
138                keep-with-next="always">
139            date:
140        </fo:block>
141        <fo:block
142                font-size="9pt"
143                font-family="monospace"
144                margin-left="1cm">
145            <xsl:value-of select="date"/>
146        </fo:block>
147    </xsl:if>
148
149    <fo:block
150            font-size="10pt"
151            font-family="serif"
152            space-before="8pt"
153            keep-with-next="always">
154        compilation:
155    </fo:block>
156    <fo:block
157            font-size="9pt"
158            font-family="monospace"
159            margin-left="1cm" 
160            space-after="8pt">
161        <xsl:value-of select="compilation"/>
162    </fo:block>
163
164    <fo:list-block>
165        <xsl:for-each select="info">
166            <fo:list-item>
167                <fo:list-item-label>
168                    <fo:block></fo:block>
169                </fo:list-item-label>
170                <fo:list-item-body>
171                    <fo:block
172                            font-size="10pt"
173                            font-family="serif" 
174                            keep-with-next="always">
175                        <xsl:value-of select="key"/>:
176                    </fo:block>
177                    <fo:block
178                            font-size="9pt"
179                            font-family="monospace"
180                            margin-left="1cm">
181                        <xsl:value-of select="value"/>
182                    </fo:block>
183                </fo:list-item-body>
184            </fo:list-item>
185        </xsl:for-each>
186    </fo:list-block>
187
188</xsl:template>
189
190
191<xsl:template match="logtalk/relations">
192    <xsl:choose>
193        <xsl:when test="*">
194            <xsl:if test="implements">
195                <fo:block
196                        font-size="10pt"
197                        font-family="serif" 
198                        keep-with-next="always">
199                    implements:
200                </fo:block>
201                <xsl:apply-templates select="implements"/>
202            </xsl:if>
203            <xsl:if test="imports">
204                <fo:block
205                        font-size="10pt"
206                        font-family="serif" 
207                        keep-with-next="always">
208                    imports:
209                </fo:block>
210                <xsl:apply-templates select="imports"/>
211            </xsl:if>
212            <xsl:if test="extends">
213                <fo:block
214                        font-size="10pt"
215                        font-family="serif" 
216                        keep-with-next="always">
217                    extends:
218                </fo:block>
219                <xsl:apply-templates select="extends"/>
220            </xsl:if>
221            <xsl:if test="instantiates">
222                <fo:block
223                        font-size="10pt"
224                        font-family="serif" 
225                        keep-with-next="always">
226                    instantiates:
227                </fo:block>
228                <xsl:apply-templates select="instantiates"/>
229            </xsl:if>
230            <xsl:if test="specializes">
231                <fo:block
232                        font-size="10pt"
233                        font-family="serif" 
234                        keep-with-next="always">
235                    specializes:
236                </fo:block>
237                <xsl:apply-templates select="specializes"/>
238            </xsl:if>
239            <xsl:if test="uses">
240                <fo:block
241                        font-size="10pt"
242                        font-family="serif" 
243                        keep-with-next="always">
244                    uses:
245                </fo:block>
246                <xsl:apply-templates select="uses"/>
247            </xsl:if>
248            <xsl:if test="calls">
249                <fo:block
250                        font-size="10pt"
251                        font-family="serif" 
252                        keep-with-next="always">
253                    calls:
254                </fo:block>
255                <xsl:apply-templates select="calls"/>
256            </xsl:if>
257        </xsl:when>
258        <xsl:otherwise> 
259            <fo:block
260                    font-size="10pt"
261                    font-family="serif" 
262                    keep-with-next="always">
263                (no dependencies on other files)
264            </fo:block>
265        </xsl:otherwise>
266    </xsl:choose>
267</xsl:template>
268
269
270<xsl:template match="logtalk/relations/uses">
271    <fo:block
272            font-size="9pt"
273            font-family="monospace"
274            margin-left="1cm">
275        <xsl:value-of select="name"/>
276    </fo:block>
277</xsl:template>
278
279
280<xsl:template match="logtalk/relations/calls">
281    <fo:block
282            font-size="9pt"
283            font-family="monospace"
284            margin-left="1cm">
285        <xsl:value-of select="name"/>
286    </fo:block>
287</xsl:template>
288
289
290<xsl:template match="logtalk/relations/*">
291    <fo:block
292            font-size="9pt"
293            font-family="monospace"
294            margin-left="1cm">
295        <xsl:value-of select="scope"/><xsl:text> </xsl:text><xsl:value-of select="name"/>
296    </fo:block>
297</xsl:template>
298
299
300<xsl:template match="logtalk/predicates">
301
302    <fo:block
303            font-size="14pt" 
304            font-family="sans-serif" 
305            font-weight="bold" 
306            keep-with-next="always"
307            space-before="18pt">
308        Public interface
309    </fo:block>
310    <xsl:choose>
311        <xsl:when test="public/predicate">
312            <xsl:apply-templates select="public/predicate"/>
313        </xsl:when>
314        <xsl:when test="/logtalk/relations/*">     
315            <fo:block
316                    font-size="10pt" 
317                    font-family="serif" 
318                    font-style="italic"
319                    space-before="10pt">
320                (see related entities)
321            </fo:block>
322        </xsl:when>
323        <xsl:otherwise>
324            <fo:block
325                    font-size="10pt" 
326                    font-family="serif" 
327                    font-style="italic"
328                    space-before="10pt">
329                (none)
330            </fo:block>
331        </xsl:otherwise>
332    </xsl:choose>
333
334    <fo:block
335            font-size="14pt" 
336            font-family="sans-serif" 
337            font-weight="bold" 
338            keep-with-next="always"
339            space-before="18pt">
340        Protected interface
341    </fo:block>
342    <xsl:choose>
343        <xsl:when test="protected/predicate">
344            <xsl:apply-templates select="protected/predicate"/>
345        </xsl:when>
346        <xsl:when test="/logtalk/relations/*">     
347            <fo:block
348                    font-size="10pt" 
349                    font-family="serif" 
350                    font-style="italic"
351                    space-before="10pt">
352                (see related entities)
353            </fo:block>
354        </xsl:when>
355        <xsl:otherwise>
356            <fo:block
357                    font-size="10pt" 
358                    font-family="serif" 
359                    font-style="italic"
360                    space-before="10pt">
361                (none)
362            </fo:block>
363        </xsl:otherwise>
364    </xsl:choose>
365
366    <fo:block
367            font-size="14pt" 
368            font-family="sans-serif" 
369            font-weight="bold" 
370            keep-with-next="always"
371            space-before="18pt">
372        Private predicates
373    </fo:block>
374    <xsl:choose>
375        <xsl:when test="private/predicate">
376            <xsl:apply-templates select="private/predicate"/>
377        </xsl:when>
378        <xsl:when test="/logtalk/relations/*">     
379            <fo:block
380                    font-size="10pt" 
381                    font-family="serif" 
382                    font-style="italic"
383                    space-before="10pt">
384                (see related entities)
385            </fo:block>
386        </xsl:when>
387        <xsl:otherwise>
388            <fo:block
389                    font-size="10pt" 
390                    font-family="serif" 
391                    font-style="italic"
392                    space-before="10pt">
393                (none)
394            </fo:block>
395        </xsl:otherwise>
396    </xsl:choose>
397
398</xsl:template>
399
400
401<xsl:template match="*/predicate">
402
403    <fo:block
404            font-size="12pt" 
405            font-family="sans-serif" 
406            font-weight="bold" 
407            keep-with-next="always"
408            space-before="10pt">
409        <xsl:value-of select="name"/>
410    </fo:block>
411
412    <xsl:if test="comment">
413        <fo:block
414                margin-left="1cm"
415                font-size="10pt" 
416                font-family="serif" 
417                font-style="italic"
418                space-before="4pt">
419            <xsl:value-of select="comment"/>
420        </fo:block>
421    </xsl:if>
422
423    <fo:list-block>
424        <fo:list-item>
425            <fo:list-item-label>
426                <fo:block></fo:block>
427            </fo:list-item-label>
428            <fo:list-item-body>
429                <fo:block
430                        space-before="4pt"
431                        font-size="10pt"
432                        font-family="serif" 
433                        keep-with-next="always">
434                    compilation:
435                </fo:block>
436                <fo:block
437                        font-size="9pt"
438                        font-family="monospace"
439                        margin-left="1cm">
440                    <xsl:value-of select="compilation"/>
441                </fo:block>
442            </fo:list-item-body>
443        </fo:list-item>
444        <xsl:if test="template">
445            <fo:list-item>
446                <fo:list-item-label>
447                    <fo:block></fo:block>
448                </fo:list-item-label>
449                <fo:list-item-body>
450                    <fo:block
451                            font-size="10pt"
452                            font-family="serif" 
453                            keep-with-next="always">
454                        template:
455                    </fo:block>
456                    <fo:block
457                            font-size="9pt"
458                            font-family="monospace"
459                            margin-left="1cm">
460                        <xsl:value-of select="template"/>
461                    </fo:block>
462                </fo:list-item-body>
463            </fo:list-item>
464        </xsl:if>
465        <xsl:if test="meta">
466            <fo:list-item>
467                <fo:list-item-label>
468                    <fo:block></fo:block>
469                </fo:list-item-label>
470                <fo:list-item-body>
471                    <fo:block
472                            font-size="10pt"
473                            font-family="serif" 
474                            keep-with-next="always">
475                        metapredicate template:
476                    </fo:block>
477                    <fo:block
478                            font-size="9pt"
479                            font-family="monospace"
480                            margin-left="1cm">
481                        <xsl:value-of select="meta"/>
482                    </fo:block>
483                </fo:list-item-body>
484            </fo:list-item>
485        </xsl:if>
486        <xsl:if test="mode">
487            <fo:list-item>
488                <fo:list-item-label>
489                    <fo:block></fo:block>
490                </fo:list-item-label>
491                <fo:list-item-body>
492                    <fo:block
493                            font-size="10pt"
494                            font-family="serif" 
495                            keep-with-next="always">
496                        mode - number of solutions:
497                    </fo:block>
498                    <xsl:for-each select="mode">
499                        <fo:block
500                                font-size="9pt"
501                                font-family="monospace"
502                                margin-left="1cm">
503                            <xsl:value-of select="template"/> - <xsl:value-of select="solutions"/>
504                        </fo:block>
505                    </xsl:for-each>
506                </fo:list-item-body>
507            </fo:list-item>
508        </xsl:if>
509    </fo:list-block>
510
511    <xsl:if test="info">
512        <fo:list-block>
513            <xsl:for-each select="info">
514                <fo:list-item>
515                    <fo:list-item-label>
516                        <fo:block></fo:block>
517                    </fo:list-item-label>
518                    <fo:list-item-body>
519                        <fo:block
520                                font-size="10pt"
521                                font-family="serif" 
522                                keep-with-next="always">
523                            <xsl:value-of select="key"/>:
524                        </fo:block>
525                        <fo:block
526                                font-size="9pt"
527                                font-family="monospace"
528                                margin-left="1cm">
529                            <xsl:value-of select="value"/>
530                        </fo:block>
531                    </fo:list-item-body>
532                </fo:list-item>
533            </xsl:for-each>
534        </fo:list-block>
535    </xsl:if>
536
537</xsl:template>
538
539
540</xsl:stylesheet>
Note: See TracBrowser for help on using the browser.