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,v 1.1 2005/10/12 14:58:42 xmldoc Exp $ 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.encoding}"/> 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.encoding}"/> 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> 112