1<?xml version='1.0'?>
2<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
3                version='1.0'>
4
5<!-- ********************************************************************
6     $Id: pi.xsl,v 1.9 2006/05/07 02:22:41 bobstayton Exp $
7     ********************************************************************
8
9     This file is part of the XSL DocBook Stylesheet distribution.
10     See ../README or http://nwalsh.com/docbook/xsl/ for copyright
11     and other information.
12
13     ******************************************************************** -->
14
15<xsl:template match="processing-instruction()">
16</xsl:template>
17
18<xsl:template match="processing-instruction('dbhtml')">
19  <!-- nop -->
20</xsl:template>
21
22<!-- ==================================================================== -->
23
24<xsl:template name="dbhtml-attribute">
25  <xsl:param name="pis" select="processing-instruction('dbhtml')"/>
26  <xsl:param name="attribute">filename</xsl:param>
27
28  <xsl:call-template name="pi-attribute">
29    <xsl:with-param name="pis" select="$pis"/>
30    <xsl:with-param name="attribute" select="$attribute"/>
31  </xsl:call-template>
32</xsl:template>
33
34<xsl:template name="dbhtml-filename">
35  <xsl:param name="pis" select="./processing-instruction('dbhtml')"/>
36  <xsl:call-template name="dbhtml-attribute">
37    <xsl:with-param name="pis" select="$pis"/>
38    <xsl:with-param name="attribute">filename</xsl:with-param>
39  </xsl:call-template>
40</xsl:template>
41
42<!--
43<xsl:template name="dbhtml-dir">
44  <xsl:param name="pis" select="./processing-instruction('dbhtml')"/>
45  <xsl:call-template name="dbhtml-attribute">
46    <xsl:with-param name="pis" select="$pis"/>
47    <xsl:with-param name="attribute">dir</xsl:with-param>
48  </xsl:call-template>
49</xsl:template>
50-->
51
52<xsl:template name="dbhtml-dir">
53  <xsl:param name="context" select="."/>
54
55  <!-- directories are now inherited from previous levels -->
56
57  <xsl:variable name="ppath">
58    <xsl:if test="$context/parent::*">
59      <xsl:call-template name="dbhtml-dir">
60        <xsl:with-param name="context" select="$context/parent::*"/>
61      </xsl:call-template>
62    </xsl:if>
63  </xsl:variable>
64
65  <xsl:variable name="path">
66    <xsl:call-template name="dbhtml-attribute">
67      <xsl:with-param name="pis" select="$context/processing-instruction('dbhtml')"/>
68      <xsl:with-param name="attribute">dir</xsl:with-param>
69    </xsl:call-template>
70  </xsl:variable>
71
72  <xsl:choose>
73    <xsl:when test="$path = ''">
74      <xsl:if test="$ppath != ''">
75        <xsl:value-of select="$ppath"/>
76      </xsl:if>
77    </xsl:when>
78    <xsl:otherwise>
79      <xsl:if test="$ppath != ''">
80        <xsl:value-of select="$ppath"/>
81        <xsl:if test="substring($ppath, string-length($ppath), 1) != '/'">
82          <xsl:text>/</xsl:text>
83        </xsl:if>
84      </xsl:if>
85      <xsl:value-of select="$path"/>
86      <xsl:text>/</xsl:text>
87    </xsl:otherwise>
88  </xsl:choose>
89</xsl:template>
90
91<!-- ==================================================================== -->
92
93<xsl:template name="process.cmdsynopsis.list">
94  <xsl:param name="cmdsynopses"/><!-- empty node list by default -->
95  <xsl:param name="count" select="1"/>
96
97  <xsl:choose>
98    <xsl:when test="$count>count($cmdsynopses)"></xsl:when>
99    <xsl:otherwise>
100      <xsl:variable name="cmdsyn" select="$cmdsynopses[$count]"/>
101
102       <dt>
103       <a>
104         <xsl:attribute name="href">
105           <xsl:call-template name="object.id">
106             <xsl:with-param name="object" select="$cmdsyn"/>
107           </xsl:call-template>
108         </xsl:attribute>
109
110         <xsl:choose>
111           <xsl:when test="$cmdsyn/@xreflabel">
112             <xsl:call-template name="xref.xreflabel">
113               <xsl:with-param name="target" select="$cmdsyn"/>
114             </xsl:call-template>
115           </xsl:when>
116           <xsl:otherwise>
117             <xsl:apply-templates select="$cmdsyn" mode="xref-to">
118               <xsl:with-param name="target" select="$cmdsyn"/>
119             </xsl:apply-templates>
120           </xsl:otherwise>
121         </xsl:choose>
122       </a>
123       </dt>
124
125        <xsl:call-template name="process.cmdsynopsis.list">
126          <xsl:with-param name="cmdsynopses" select="$cmdsynopses"/>
127          <xsl:with-param name="count" select="$count+1"/>
128        </xsl:call-template>
129      </xsl:otherwise>
130    </xsl:choose>
131</xsl:template>
132
133<xsl:template match="processing-instruction('dbcmdlist')">
134  <xsl:variable name="cmdsynopses" select="..//cmdsynopsis"/>
135
136  <xsl:if test="count($cmdsynopses)&lt;1">
137    <xsl:message><xsl:text>No cmdsynopsis elements matched dbcmdlist PI, perhaps it's nested too deep?</xsl:text>
138    </xsl:message>
139  </xsl:if>
140
141  <dl>
142    <xsl:call-template name="process.cmdsynopsis.list">
143      <xsl:with-param name="cmdsynopses" select="$cmdsynopses"/>
144    </xsl:call-template>
145  </dl>
146</xsl:template>
147
148<!-- ==================================================================== -->
149
150<xsl:template name="process.funcsynopsis.list">
151  <xsl:param name="funcsynopses"/><!-- empty node list by default -->
152  <xsl:param name="count" select="1"/>
153
154  <xsl:choose>
155    <xsl:when test="$count>count($funcsynopses)"></xsl:when>
156    <xsl:otherwise>
157      <xsl:variable name="cmdsyn" select="$funcsynopses[$count]"/>
158
159       <dt>
160       <a>
161         <xsl:attribute name="href">
162           <xsl:call-template name="object.id">
163             <xsl:with-param name="object" select="$cmdsyn"/>
164           </xsl:call-template>
165         </xsl:attribute>
166
167         <xsl:choose>
168           <xsl:when test="$cmdsyn/@xreflabel">
169             <xsl:call-template name="xref.xreflabel">
170               <xsl:with-param name="target" select="$cmdsyn"/>
171             </xsl:call-template>
172           </xsl:when>
173           <xsl:otherwise>
174              <xsl:apply-templates select="$cmdsyn" mode="xref-to">
175                <xsl:with-param name="target" select="$cmdsyn"/>
176              </xsl:apply-templates>
177           </xsl:otherwise>
178         </xsl:choose>
179       </a>
180       </dt>
181
182        <xsl:call-template name="process.funcsynopsis.list">
183          <xsl:with-param name="funcsynopses" select="$funcsynopses"/>
184          <xsl:with-param name="count" select="$count+1"/>
185        </xsl:call-template>
186      </xsl:otherwise>
187    </xsl:choose>
188</xsl:template>
189
190<xsl:template match="processing-instruction('dbfunclist')">
191  <xsl:variable name="funcsynopses" select="..//funcsynopsis"/>
192
193  <xsl:if test="count($funcsynopses)&lt;1">
194    <xsl:message><xsl:text>No funcsynopsis elements matched dbfunclist PI, perhaps it's nested too deep?</xsl:text>
195    </xsl:message>
196  </xsl:if>
197
198  <dl>
199    <xsl:call-template name="process.funcsynopsis.list">
200      <xsl:with-param name="funcsynopses" select="$funcsynopses"/>
201    </xsl:call-template>
202  </dl>
203</xsl:template>
204
205<!-- ==================================================================== -->
206
207<!-- Copy well-formed external HTML content to the output. -->
208<!-- An optional <html> wrapper will be removed before content is copied 
209     to support multiple elements in output without a wrapper.
210     No other processing is done to the content. -->
211<xsl:template match="processing-instruction('dbhtml-include')">
212  <xsl:param name="href">
213    <xsl:call-template name="dbhtml-attribute">
214      <xsl:with-param name="pis" select="."/>
215      <xsl:with-param name="attribute">href</xsl:with-param>
216    </xsl:call-template>
217  </xsl:param>
218
219  <xsl:choose>
220    <xsl:when test="$href != ''">
221      <xsl:variable name="content" select="document($href,/)"/>
222      <xsl:choose>
223        <xsl:when test="$content/*">
224          <xsl:choose>
225            <xsl:when test="$content/*[1][self::html]">
226              <!-- include just the children of html wrapper -->
227              <xsl:copy-of select="$content/*[1]/node()"/>
228            </xsl:when>
229            <xsl:otherwise>
230              <xsl:copy-of select="$content"/>
231            </xsl:otherwise>
232          </xsl:choose>
233        </xsl:when>
234        <xsl:otherwise>
235          <xsl:message>
236            <xsl:text>ERROR: dbhtml-include processing instruction </xsl:text>
237            <xsl:text>href has no content.</xsl:text>
238          </xsl:message>
239        </xsl:otherwise>
240      </xsl:choose>
241    </xsl:when>
242    <xsl:otherwise>
243      <xsl:message>
244        <xsl:text>ERROR: dbhtml-include processing instruction has </xsl:text>
245        <xsl:text>missing or empty href value.</xsl:text>
246      </xsl:message>
247    </xsl:otherwise>
248  </xsl:choose>
249</xsl:template>
250
251</xsl:stylesheet>
252