OLD | NEW |
| (Empty) |
1 <?xml version='1.0'?> | |
2 <xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" | |
3 xmlns:xi="http://www.w3.org/2001/XInclude" | |
4 version='1.0'> | |
5 | |
6 <!-- ******************************************************************** | |
7 $Id: insertfile.xsl 5262 2005-10-12 14:58:42Z xmldoc $ | |
8 ******************************************************************** | |
9 | |
10 This file is part of the XSL DocBook Stylesheet distribution. | |
11 See ../README or http://docbook.sf.net/release/xsl/current/ for | |
12 copyright and other information. | |
13 | |
14 ******************************************************************** --> | |
15 | |
16 <xsl:param name="textdata.default.encoding"></xsl:param> | |
17 | |
18 <!-- * This stylesheet makes a copy of a source tree, replacing all --> | |
19 <!-- * instances of the following with corresponding Xinclude instances --> | |
20 <!-- * in the result tree. --> | |
21 <!-- * --> | |
22 <!-- * <textobject><textdata fileref="foo.txt"> --> | |
23 <!-- * <imagedata format="linespecific" fileref="foo.txt"> --> | |
24 <!-- * <inlinegraphic format="linespecific" fileref="foo.txt"> --> | |
25 <!-- * --> | |
26 <!-- * Those become: --> | |
27 <!-- * --> | |
28 <!-- * <xi:include href="foo.txt" parse="text"/> --> | |
29 <!-- * --> | |
30 <!-- * It also works as expected with entityref in place of fileref, --> | |
31 <!-- * and copies over the value of the <textdata>“encoding” atrribute (if --> | |
32 <!-- * found). It is basically intended as an alternative to using the --> | |
33 <!-- * DocBook XSLT Java insertfile() extension. --> | |
34 | |
35 <!-- ==================================================================== --> | |
36 | |
37 <xsl:template name="get.external.filename"> | |
38 <xsl:choose> | |
39 <xsl:when test="@entityref"> | |
40 <xsl:value-of select="unparsed-entity-uri(@entityref)"/> | |
41 </xsl:when> | |
42 <xsl:otherwise> | |
43 <xsl:value-of select="@fileref"/> | |
44 </xsl:otherwise> | |
45 </xsl:choose> | |
46 </xsl:template> | |
47 | |
48 <!-- ==================================================================== --> | |
49 | |
50 <xsl:template match="textobject[child::textdata[@entityref|@fileref]]"> | |
51 <xsl:apply-templates select="textdata"/> | |
52 </xsl:template> | |
53 | |
54 <xsl:template match="textdata[@entityref|@fileref]"> | |
55 <xsl:variable name="filename"> | |
56 <xsl:call-template name="get.external.filename"/> | |
57 </xsl:variable> | |
58 <xsl:variable name="encoding"> | |
59 <xsl:choose> | |
60 <xsl:when test="@encoding"> | |
61 <xsl:value-of select="@encoding"/> | |
62 </xsl:when> | |
63 <xsl:otherwise> | |
64 <xsl:value-of select="$textdata.default.encoding"/> | |
65 </xsl:otherwise> | |
66 </xsl:choose> | |
67 </xsl:variable> | |
68 <xi:include href="{$filename}" parse="text" encoding="{$encoding}"/> | |
69 </xsl:template> | |
70 | |
71 <!-- ==================================================================== --> | |
72 | |
73 <xsl:template | |
74 match="inlinemediaobject | |
75 [child::imageobject | |
76 [child::imagedata | |
77 [@format = 'linespecific' and | |
78 (@entityref|@fileref)]]]"> | |
79 <xsl:apply-templates select="imageobject/imagedata"/> | |
80 </xsl:template> | |
81 | |
82 <xsl:template match="imagedata | |
83 [@format = 'linespecific' and | |
84 (@entityref|@fileref)]"> | |
85 <xsl:variable name="filename"> | |
86 <xsl:call-template name="get.external.filename"/> | |
87 </xsl:variable> | |
88 <xi:include href="{$filename}" parse="text" encoding="{$textdata.default.encod
ing}"/> | |
89 </xsl:template> | |
90 | |
91 <!-- ==================================================================== --> | |
92 | |
93 <xsl:template match="inlinegraphic | |
94 [@format = 'linespecific' and | |
95 (@entityref|@fileref)]"> | |
96 <xsl:variable name="filename"> | |
97 <xsl:call-template name="get.external.filename"/> | |
98 </xsl:variable> | |
99 <xi:include href="{$filename}" parse="text" encoding="{$textdata.default.encod
ing}"/> | |
100 </xsl:template> | |
101 | |
102 <!-- ==================================================================== --> | |
103 | |
104 <!-- * copy everything else into result tree as-is --> | |
105 <xsl:template match="node() | @*"> | |
106 <xsl:copy> | |
107 <xsl:apply-templates select="@* | node()"/> | |
108 </xsl:copy> | |
109 </xsl:template> | |
110 | |
111 </xsl:stylesheet> | |
OLD | NEW |