diff options
author | Chris Wilson <chris+github@qwirx.com> | 2009-04-26 20:01:15 +0000 |
---|---|---|
committer | Chris Wilson <chris+github@qwirx.com> | 2009-04-26 20:01:15 +0000 |
commit | 1afab29eadf8e0d8b724b2894b3c644ea102fb51 (patch) | |
tree | 576fa12d5d4e9de77418ea2feb54bbe3f2c06ca0 /docs/xsl-generic/common/insertfile.xsl | |
parent | 07bf983525ce56d754a9360dfadfa19aa7aac12c (diff) |
Add a local copy of the XSL stylesheets needed to build Box Backup docs,
as remote copies are slow and prone to failure and weird behaviour with
different versions of xsltproc (e.g. on Cygwin).
Diffstat (limited to 'docs/xsl-generic/common/insertfile.xsl')
-rw-r--r-- | docs/xsl-generic/common/insertfile.xsl | 111 |
1 files changed, 111 insertions, 0 deletions
diff --git a/docs/xsl-generic/common/insertfile.xsl b/docs/xsl-generic/common/insertfile.xsl new file mode 100644 index 00000000..66bcf410 --- /dev/null +++ b/docs/xsl-generic/common/insertfile.xsl @@ -0,0 +1,111 @@ +<?xml version='1.0'?> +<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" + xmlns:xi="http://www.w3.org/2001/XInclude" + version='1.0'> + +<!-- ******************************************************************** + $Id: insertfile.xsl 5262 2005-10-12 14:58:42Z xmldoc $ + ******************************************************************** + + This file is part of the XSL DocBook Stylesheet distribution. + See ../README or http://docbook.sf.net/release/xsl/current/ for + copyright and other information. + + ******************************************************************** --> + +<xsl:param name="textdata.default.encoding"></xsl:param> + +<!-- * This stylesheet makes a copy of a source tree, replacing all --> +<!-- * instances of the following with corresponding Xinclude instances --> +<!-- * in the result tree. --> +<!-- * --> +<!-- * <textobject><textdata fileref="foo.txt"> --> +<!-- * <imagedata format="linespecific" fileref="foo.txt"> --> +<!-- * <inlinegraphic format="linespecific" fileref="foo.txt"> --> +<!-- * --> +<!-- * Those become: --> +<!-- * --> +<!-- * <xi:include href="foo.txt" parse="text"/> --> +<!-- * --> +<!-- * It also works as expected with entityref in place of fileref, --> +<!-- * and copies over the value of the <textdata>“encoding” atrribute (if --> +<!-- * found). It is basically intended as an alternative to using the --> +<!-- * DocBook XSLT Java insertfile() extension. --> + +<!-- ==================================================================== --> + +<xsl:template name="get.external.filename"> + <xsl:choose> + <xsl:when test="@entityref"> + <xsl:value-of select="unparsed-entity-uri(@entityref)"/> + </xsl:when> + <xsl:otherwise> + <xsl:value-of select="@fileref"/> + </xsl:otherwise> + </xsl:choose> +</xsl:template> + +<!-- ==================================================================== --> + +<xsl:template match="textobject[child::textdata[@entityref|@fileref]]"> + <xsl:apply-templates select="textdata"/> +</xsl:template> + +<xsl:template match="textdata[@entityref|@fileref]"> + <xsl:variable name="filename"> + <xsl:call-template name="get.external.filename"/> + </xsl:variable> + <xsl:variable name="encoding"> + <xsl:choose> + <xsl:when test="@encoding"> + <xsl:value-of select="@encoding"/> + </xsl:when> + <xsl:otherwise> + <xsl:value-of select="$textdata.default.encoding"/> + </xsl:otherwise> + </xsl:choose> + </xsl:variable> + <xi:include href="{$filename}" parse="text" encoding="{$encoding}"/> +</xsl:template> + +<!-- ==================================================================== --> + +<xsl:template + match="inlinemediaobject + [child::imageobject + [child::imagedata + [@format = 'linespecific' and + (@entityref|@fileref)]]]"> + <xsl:apply-templates select="imageobject/imagedata"/> +</xsl:template> + +<xsl:template match="imagedata + [@format = 'linespecific' and + (@entityref|@fileref)]"> + <xsl:variable name="filename"> + <xsl:call-template name="get.external.filename"/> + </xsl:variable> + <xi:include href="{$filename}" parse="text" encoding="{$textdata.default.encoding}"/> +</xsl:template> + +<!-- ==================================================================== --> + +<xsl:template match="inlinegraphic + [@format = 'linespecific' and + (@entityref|@fileref)]"> + <xsl:variable name="filename"> + <xsl:call-template name="get.external.filename"/> + </xsl:variable> + <xi:include href="{$filename}" parse="text" encoding="{$textdata.default.encoding}"/> +</xsl:template> + +<!-- ==================================================================== --> + +<!-- * copy everything else into result tree as-is --> +<xsl:template match="node() | @*"> + <xsl:copy> + <xsl:apply-templates select="@* | node()"/> + </xsl:copy> +</xsl:template> + +</xsl:stylesheet> |