summaryrefslogtreecommitdiff
path: root/docs/xsl-generic/common/insertfile.xsl
diff options
context:
space:
mode:
authorChris Wilson <chris+github@qwirx.com>2009-04-26 20:01:15 +0000
committerChris Wilson <chris+github@qwirx.com>2009-04-26 20:01:15 +0000
commit1afab29eadf8e0d8b724b2894b3c644ea102fb51 (patch)
tree576fa12d5d4e9de77418ea2feb54bbe3f2c06ca0 /docs/xsl-generic/common/insertfile.xsl
parent07bf983525ce56d754a9360dfadfa19aa7aac12c (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.xsl111
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>