source: stylesheets/lfs-xsl/docbook-xsl-1.78.1/common/stripns.xsl@ 15c7d39

10.0 10.0-rc1 10.1 10.1-rc1 11.0 11.0-rc1 11.0-rc2 11.0-rc3 11.1 11.1-rc1 11.2 11.2-rc1 11.3 11.3-rc1 12.0 12.0-rc1 12.1 12.1-rc1 7.5 7.6 7.7 7.8 7.9 8.0 8.1 8.2 8.3 8.4 9.0 9.1 arm bdubbs/gcc13 ml-11.0 multilib renodr/libudev-from-systemd s6-init trunk xry111/arm64 xry111/arm64-12.0 xry111/clfs-ng xry111/lfs-next xry111/loongarch xry111/loongarch-12.0 xry111/loongarch-12.1 xry111/mips64el xry111/pip3 xry111/rust-wip-20221008 xry111/update-glibc
Last change on this file since 15c7d39 was 15c7d39, checked in by Matthew Burgess <matthew@…>, 11 years ago

Update stylesheets to docbook-xsl-1.78.1.

git-svn-id: http://svn.linuxfromscratch.org/LFS/trunk/BOOK@10355 4aa44e1e-78dd-0310-a6d2-fbcd4c07a689

  • Property mode set to 100644
File size: 13.0 KB
Line 
1<?xml version='1.0'?>
2<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
3 xmlns:ng="http://docbook.org/docbook-ng"
4 xmlns:db="http://docbook.org/ns/docbook"
5 xmlns:saxon="http://icl.com/saxon"
6 xmlns:NodeInfo="http://org.apache.xalan.lib.NodeInfo"
7 xmlns:exsl="http://exslt.org/common"
8 xmlns:xlink="http://www.w3.org/1999/xlink"
9 exclude-result-prefixes="db ng exsl saxon NodeInfo xlink"
10 version='1.0'>
11
12<!-- ********************************************************************
13 $Id: stripns.xsl 9016 2011-06-07 12:09:34Z nwalsh $
14 ********************************************************************
15
16 This file is part of the XSL DocBook Stylesheet distribution.
17 See ../README or http://docbook.sf.net/release/xsl/current/ for
18 copyright and other information.
19
20 ******************************************************************** -->
21
22<!-- put an xml:base attribute on the root element -->
23<xsl:template match="/*" mode="stripNS">
24 <xsl:choose>
25 <xsl:when test="self::ng:* or self::db:*">
26 <xsl:element name="{local-name(.)}">
27 <xsl:copy-of select="@*[not(name(.) = 'xml:id')
28 and not(name(.) = 'version')]"/>
29 <xsl:if test="@xml:id">
30 <xsl:attribute name="id">
31 <xsl:value-of select="@xml:id"/>
32 </xsl:attribute>
33 </xsl:if>
34
35 <xsl:call-template name="add-xml-base"/>
36
37 <xsl:apply-templates mode="stripNS"/>
38 </xsl:element>
39 </xsl:when>
40 <xsl:otherwise>
41 <xsl:copy>
42 <xsl:copy-of select="@*[not(name(.) = 'xml:id')
43 and not(name(.) = 'version')]"/>
44 <xsl:if test="@xml:id">
45 <xsl:attribute name="id">
46 <xsl:value-of select="@xml:id"/>
47 </xsl:attribute>
48 </xsl:if>
49
50 <xsl:call-template name="add-xml-base"/>
51
52 <xsl:apply-templates mode="stripNS"/>
53 </xsl:copy>
54 </xsl:otherwise>
55 </xsl:choose>
56</xsl:template>
57
58<xsl:template match="*" mode="stripNS">
59 <xsl:choose>
60 <xsl:when test="self::ng:* or self::db:*">
61 <xsl:element name="{local-name(.)}">
62 <xsl:copy-of select="@*[not(name(.) = 'xml:id')
63 and not(name(.) = 'version')]"/>
64 <xsl:if test="@xml:id">
65 <xsl:attribute name="id">
66 <xsl:value-of select="@xml:id"/>
67 </xsl:attribute>
68 </xsl:if>
69 <xsl:apply-templates mode="stripNS"/>
70 </xsl:element>
71 </xsl:when>
72 <xsl:otherwise>
73 <xsl:copy>
74 <xsl:copy-of select="@*[not(name(.) = 'xml:id')
75 and not(name(.) = 'version')]"/>
76 <xsl:if test="@xml:id">
77 <xsl:attribute name="id">
78 <xsl:value-of select="@xml:id"/>
79 </xsl:attribute>
80 </xsl:if>
81 <xsl:apply-templates mode="stripNS"/>
82 </xsl:copy>
83 </xsl:otherwise>
84 </xsl:choose>
85</xsl:template>
86
87<xsl:template match="db:info" mode="stripNS">
88 <xsl:variable name="info">
89 <xsl:choose>
90 <xsl:when test="parent::db:article
91 |parent::db:appendix
92 |parent::db:bibliography
93 |parent::db:book
94 |parent::db:chapter
95 |parent::db:glossary
96 |parent::db:index
97 |parent::db:part
98 |parent::db:preface
99 |parent::db:refentry
100 |parent::db:reference
101 |parent::db:refsect1
102 |parent::db:refsect2
103 |parent::db:refsect3
104 |parent::db:refsection
105 |parent::db:refsynopsisdiv
106 |parent::db:sect1
107 |parent::db:sect2
108 |parent::db:sect3
109 |parent::db:sect4
110 |parent::db:sect5
111 |parent::db:section
112 |parent::db:setindex
113 |parent::db:set
114 |parent::db:slides
115 |parent::db:sidebar">
116 <xsl:value-of select="local-name(parent::*)"/>
117 <xsl:text>info</xsl:text>
118 </xsl:when>
119 <xsl:when test="parent::db:audioobject
120 |parent::db:imageobject
121 |parent::db:inlinemediaobject
122 |parent::db:mediaobject
123 |parent::db:mediaobjectco
124 |parent::db:textobject
125 |parent::db:videoobject">
126 <xsl:text>objectinfo</xsl:text>
127 </xsl:when>
128 <xsl:otherwise>blockinfo</xsl:otherwise>
129 </xsl:choose>
130 </xsl:variable>
131
132 <xsl:element name="{$info}">
133 <xsl:copy-of select="@*[not(name(.) = 'xml:id')
134 and not(name(.) = 'version')]"/>
135 <xsl:if test="@xml:id">
136 <xsl:attribute name="id">
137 <xsl:value-of select="@xml:id"/>
138 </xsl:attribute>
139 </xsl:if>
140 <xsl:apply-templates mode="stripNS"/>
141 </xsl:element>
142
143 <xsl:if test="(not(../db:title) and not(../ng:title))
144 and ($info = 'prefaceinfo'
145 or $info = 'chapterinfo'
146 or $info = 'sectioninfo'
147 or $info = 'sect1info'
148 or $info = 'sect2info'
149 or $info = 'sect3info'
150 or $info = 'sect4info'
151 or $info = 'sect5info'
152 or $info = 'refsectioninfo'
153 or $info = 'refsect1info'
154 or $info = 'refsect2info'
155 or $info = 'refsect3info'
156 or $info = 'blockinfo'
157 or $info = 'appendixinfo')">
158 <xsl:apply-templates select="db:title|ng:title" mode="stripNS"/>
159 </xsl:if>
160
161</xsl:template>
162
163<xsl:template match="ng:tag|db:tag" mode="stripNS">
164 <xsl:choose>
165 <xsl:when test="@xlink:href">
166 <ulink url="{@xlink:href}">
167 <sgmltag>
168 <xsl:copy-of select="@*[not(name(.) = 'xml:id')
169 and not(name(.) = 'version')
170 and not(local-name(.) = 'href')]"/>
171 <xsl:if test="@xml:id">
172 <xsl:attribute name="id">
173 <xsl:value-of select="@xml:id"/>
174 </xsl:attribute>
175 </xsl:if>
176 <xsl:apply-templates mode="stripNS"/>
177 </sgmltag>
178 </ulink>
179 </xsl:when>
180 <xsl:otherwise>
181 <sgmltag>
182 <xsl:copy-of select="@*[not(name(.) = 'xml:id')
183 and not(name(.) = 'version')]"/>
184 <xsl:if test="@xml:id">
185 <xsl:attribute name="id">
186 <xsl:value-of select="@xml:id"/>
187 </xsl:attribute>
188 </xsl:if>
189 <xsl:apply-templates mode="stripNS"/>
190 </sgmltag>
191 </xsl:otherwise>
192 </xsl:choose>
193</xsl:template>
194
195<xsl:template match="db:link[@xlink:href]" mode="stripNS">
196 <ulink url="{@xlink:href}">
197 <xsl:if test="@role">
198 <xsl:attribute name="role">
199 <xsl:value-of select="@role"/>
200 </xsl:attribute>
201 </xsl:if>
202 <xsl:apply-templates mode="stripNS"/>
203 </ulink>
204</xsl:template>
205
206<xsl:template match="db:citetitle[@xlink:href]" mode="stripNS">
207 <ulink url="{@xlink:href}">
208 <citetitle>
209 <xsl:copy-of select="@*[not(name(.) = 'xml:id')
210 and not(name(.) = 'version')
211 and not(local-name(.) = 'href')]"/>
212 <xsl:if test="@xml:id">
213 <xsl:attribute name="id">
214 <xsl:value-of select="@xml:id"/>
215 </xsl:attribute>
216 </xsl:if>
217 <xsl:apply-templates mode="stripNS"/>
218 </citetitle>
219 </ulink>
220</xsl:template>
221
222<xsl:template match="db:citetitle[@linkend]" mode="stripNS">
223 <citetitle>
224 <xsl:copy-of select="@*[not(name(.) = 'xml:id')
225 and not(name(.) = 'version')
226 and not(name(.) = 'linkend')
227 and not(local-name(.) = 'href')]"/>
228 <xsl:if test="@xml:id">
229 <xsl:attribute name="id">
230 <xsl:value-of select="@xml:id"/>
231 </xsl:attribute>
232 </xsl:if>
233 <xsl:apply-templates mode="stripNS"/>
234 </citetitle>
235</xsl:template>
236
237<xsl:template match="db:alt" mode="stripNS"/>
238
239<xsl:template match="ng:textdata|db:textdata
240 |ng:imagedata|db:imagedata
241 |ng:videodata|db:videodata
242 |ng:audiodata|db:audiodata" mode="stripNS">
243 <xsl:element name="{local-name(.)}">
244 <xsl:copy-of select="@*[not(name(.) = 'xml:id')
245 and not(name(.) = 'version')
246 and not(name(.) = 'entityref')]"/>
247 <xsl:if test="@xml:id">
248 <xsl:attribute name="id">
249 <xsl:value-of select="@xml:id"/>
250 </xsl:attribute>
251 </xsl:if>
252
253 <xsl:choose>
254 <xsl:when test="@entityref">
255 <xsl:attribute name="fileref">
256 <xsl:value-of select="unparsed-entity-uri(@entityref)"/>
257 </xsl:attribute>
258 </xsl:when>
259 </xsl:choose>
260
261 <xsl:apply-templates mode="stripNS"/>
262 </xsl:element>
263</xsl:template>
264
265<xsl:template name="add-xml-base">
266 <xsl:if test="not(@xml:base)">
267 <xsl:variable name="base">
268 <xsl:choose>
269 <xsl:when test="function-available('saxon:systemId')">
270 <xsl:value-of select="saxon:systemId()"/>
271 </xsl:when>
272 <xsl:when test="function-available('NodeInfo:systemId')">
273 <xsl:value-of select="NodeInfo:systemId()"/>
274 </xsl:when>
275 <xsl:otherwise>
276 <xsl:message>
277 <xsl:text>WARNING: cannot add @xml:base to node </xsl:text>
278 <xsl:text>set root element. </xsl:text>
279 <xsl:text>Relative paths may not work.</xsl:text>
280 </xsl:message>
281 </xsl:otherwise>
282 </xsl:choose>
283 </xsl:variable>
284 <!-- debug
285 <xsl:message>base is <xsl:value-of select="$base"/></xsl:message>
286 -->
287 <xsl:if test="$base != ''">
288 <xsl:attribute name="xml:base">
289 <xsl:call-template name="systemIdToBaseURI">
290 <xsl:with-param name="systemId">
291 <!-- file: seems to confuse some processors. -->
292 <xsl:choose>
293 <!-- however, windows paths must use file:///c:/path -->
294 <xsl:when test="starts-with($base, 'file:///') and
295 substring($base, 10, 1) = ':'">
296 <xsl:value-of select="$base"/>
297 </xsl:when>
298 <xsl:when test="starts-with($base, 'file:/')
299 and substring($base, 8, 1) = ':'">
300 <xsl:value-of select="concat('file:///',
301 substring-after($base,'file:/'))"/>
302 </xsl:when>
303 <xsl:when test="starts-with($base, 'file:///')">
304 <xsl:value-of select="substring-after($base,'file://')"/>
305 </xsl:when>
306 <xsl:when test="starts-with($base, 'file://')">
307 <xsl:value-of select="substring-after($base,'file:/')"/>
308 </xsl:when>
309 <xsl:when test="starts-with($base, 'file:/')">
310 <xsl:value-of select="substring-after($base,'file:')"/>
311 </xsl:when>
312 <xsl:otherwise>
313 <xsl:value-of select="$base"/>
314 </xsl:otherwise>
315 </xsl:choose>
316 </xsl:with-param>
317 </xsl:call-template>
318 </xsl:attribute>
319 </xsl:if>
320 </xsl:if>
321</xsl:template>
322
323<xsl:template name="systemIdToBaseURI">
324 <xsl:param name="systemId" select="''"/>
325 <xsl:if test="contains($systemId,'/')">
326 <xsl:value-of select="substring-before($systemId,'/')"/>
327 <xsl:text>/</xsl:text>
328 <xsl:call-template name="systemIdToBaseURI">
329 <xsl:with-param name="systemId"
330 select="substring-after($systemId,'/')"/>
331 </xsl:call-template>
332 </xsl:if>
333</xsl:template>
334
335<xsl:template match="comment()|processing-instruction()|text()" mode="stripNS">
336 <xsl:copy/>
337</xsl:template>
338
339<xsl:template match="/" priority="-1">
340 <!-- need a local version of this variable because this module imported many places-->
341 <xsl:variable name="local.exsl.node.set.available">
342 <xsl:choose>
343 <xsl:when exsl:foo="" xmlns:exsl="http://exslt.org/common"
344 test="function-available('exsl:node-set') or
345 contains(system-property('xsl:vendor'),
346 'Apache Software Foundation')">1</xsl:when>
347 <xsl:otherwise>0</xsl:otherwise>
348 </xsl:choose>
349 </xsl:variable>
350 <xsl:choose>
351 <xsl:when test="$local.exsl.node.set.available != 0
352 and (*/self::ng:* or */self::db:*)">
353 <xsl:message>
354 <xsl:text>Stripping namespace from DocBook 5 document. </xsl:text>
355 <xsl:text>It is suggested to use namespaced version of the stylesheets </xsl:text>
356 <xsl:text>available in distribution file 'docbook-xsl-ns' </xsl:text>
357 <xsl:text>at //http://sourceforge.net/projects/docbook/files/</xsl:text>
358 <xsl:text> which does not require namespace stripping step.</xsl:text>
359 </xsl:message>
360 <xsl:variable name="nons">
361 <xsl:apply-templates mode="stripNS"/>
362 </xsl:variable>
363 <xsl:message>Processing stripped document.</xsl:message>
364 <xsl:apply-templates select="exsl:node-set($nons)"/>
365 </xsl:when>
366 <xsl:otherwise>
367 <xsl:copy-of select="node()"/>
368 </xsl:otherwise>
369 </xsl:choose>
370</xsl:template>
371
372</xsl:stylesheet>
Note: See TracBrowser for help on using the repository browser.