Imported Upstream version 1.79.2
[platform/upstream/docbook-xsl-stylesheets.git] / fo / fo.xsl
1 <?xml version='1.0'?>
2 <xsl:stylesheet exclude-result-prefixes="d"
3                 xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
4                 xmlns:d="http://docbook.org/ns/docbook"
5                 xmlns:fo="http://www.w3.org/1999/XSL/Format"
6                 version='1.0'>
7
8 <!-- ********************************************************************
9
10      This file is part of the XSL DocBook Stylesheet distribution.
11      See ../README or http://cdn.docbook.org/release/xsl/current/ for
12      copyright and other information.
13
14      ******************************************************************** -->
15
16 <!-- These variables set the margin-left or -right attribute value for FO output based on
17      the writing-mode specified in the gentext file for the document's lang. -->
18
19 <xsl:param name="direction.align.start">
20   <xsl:choose>
21     <!-- FOP does not support writing-mode="rl-tb" -->
22     <xsl:when test="$fop.extensions != 0">left</xsl:when>
23     <xsl:when test="$fop1.extensions != 0">left</xsl:when>
24     <xsl:when test="starts-with($writing.mode, 'lr')">left</xsl:when>
25     <xsl:when test="starts-with($writing.mode, 'rl')">right</xsl:when>
26     <xsl:when test="starts-with($writing.mode, 'tb')">top</xsl:when>
27     <xsl:otherwise>left</xsl:otherwise>
28   </xsl:choose>
29 </xsl:param>
30
31 <xsl:param name="direction.align.end">
32   <xsl:choose>
33     <xsl:when test="$fop.extensions != 0">right</xsl:when>
34     <xsl:when test="$fop1.extensions != 0">right</xsl:when>
35     <xsl:when test="starts-with($writing.mode, 'lr')">right</xsl:when>
36     <xsl:when test="starts-with($writing.mode, 'rl')">left</xsl:when>
37     <xsl:when test="starts-with($writing.mode, 'tb')">bottom</xsl:when>
38     <xsl:otherwise>right</xsl:otherwise>
39   </xsl:choose>
40 </xsl:param>
41
42 <xsl:param name="direction.mode">
43   <xsl:choose>
44     <xsl:when test="$fop.extensions != 0 and
45                     starts-with($writing.mode, 'rl')">
46       <xsl:message>WARNING: FOP does not support right-to-left writing-mode</xsl:message>
47       <xsl:text>lr-tb</xsl:text>
48     </xsl:when>
49     <xsl:when test="$fop1.extensions != 0 and
50                     starts-with($writing.mode, 'rl')">
51       <xsl:message>
52         <xsl:text>WARNING: FOP 1.0 does not support right-to-left writing-mode; </xsl:text>
53         <xsl:text>FOP 1.1 has limited support for right-to-left writing-mode.</xsl:text>
54       </xsl:message>
55       <xsl:text>rl-tb</xsl:text>
56     </xsl:when>
57     <xsl:when test="starts-with($writing.mode, 'lr')">lr-tb</xsl:when>
58     <xsl:when test="starts-with($writing.mode, 'rl')">rl-tb</xsl:when>
59     <xsl:when test="starts-with($writing.mode, 'tb')">tb-rl</xsl:when>
60     <xsl:otherwise>lr-tb</xsl:otherwise>
61   </xsl:choose>
62 </xsl:param>
63
64
65 <xsl:template name="anchor">
66   <xsl:param name="node" select="."/>
67   <xsl:param name="conditional" select="1"/>
68   <xsl:variable name="id">
69     <xsl:call-template name="object.id">
70       <xsl:with-param name="object" select="$node"/>
71     </xsl:call-template>
72   </xsl:variable>
73   <xsl:if test="$conditional = 0 or $node/@id or $node/@xml:id">
74     <xsl:attribute name="id"><xsl:value-of select="$id"/></xsl:attribute>
75   </xsl:if>
76 </xsl:template>
77
78 <xsl:template name="dingbat">
79   <xsl:param name="dingbat">bullet</xsl:param>
80   <xsl:variable name="symbol">
81     <xsl:choose>
82       <xsl:when test="$dingbat='bullet'">o</xsl:when>
83       <xsl:when test="$dingbat='copyright'">&#x00A9;</xsl:when>
84       <xsl:when test="$dingbat='trademark'">&#x2122;</xsl:when>
85       <xsl:when test="$dingbat='trade'">&#x2122;</xsl:when>
86       <xsl:when test="$dingbat='registered'">&#x00AE;</xsl:when>
87       <xsl:when test="$dingbat='service'">(SM)</xsl:when>
88       <xsl:when test="$dingbat='ldquo'">"</xsl:when>
89       <xsl:when test="$dingbat='rdquo'">"</xsl:when>
90       <xsl:when test="$dingbat='lsquo'">'</xsl:when>
91       <xsl:when test="$dingbat='rsquo'">'</xsl:when>
92       <xsl:when test="$dingbat='em-dash'">&#x2014;</xsl:when>
93       <xsl:when test="$dingbat='en-dash'">-</xsl:when>
94       <xsl:otherwise>o</xsl:otherwise>
95     </xsl:choose>
96   </xsl:variable>
97
98   <xsl:choose>
99     <xsl:when test="$dingbat.fontset = ''">
100       <xsl:copy-of select="$symbol"/>
101     </xsl:when>
102     <xsl:otherwise>
103       <fo:inline font-family="{$dingbat.fontset}">
104         <xsl:copy-of select="$symbol"/>
105       </fo:inline>
106     </xsl:otherwise>
107   </xsl:choose>
108 </xsl:template>
109
110 <xsl:template name="href.target">
111   <xsl:param name="context" select="."/>
112   <xsl:param name="object" select="."/>
113   <xsl:text>#</xsl:text>
114   <xsl:call-template name="object.id">
115     <xsl:with-param name="object" select="$object"/>
116   </xsl:call-template>
117 </xsl:template>
118
119 </xsl:stylesheet>
120