mirror of
https://git.lyx.org/repos/lyx.git
synced 2024-12-24 05:40:59 +00:00
683 lines
24 KiB
XML
683 lines
24 KiB
XML
|
<?xml version="1.0" encoding="ASCII"?><!--This file was created automatically by html2xhtml--><!--from the HTML stylesheets.--><xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:d="http://docbook.org/ns/docbook" xmlns="http://www.w3.org/1999/xhtml" exclude-result-prefixes="d" version="1.0">
|
||
|
|
||
|
<!-- ********************************************************************
|
||
|
|
||
|
This file is part of the XSL DocBook Stylesheet distribution.
|
||
|
See ../README or http://cdn.docbook.org/release/xsl/current/ for
|
||
|
copyright and other information.
|
||
|
|
||
|
******************************************************************** -->
|
||
|
|
||
|
<!-- These variables set the align attribute value for HTML output based on
|
||
|
the writing-mode specified in the gentext file for the document's lang. -->
|
||
|
|
||
|
<xsl:variable name="direction.align.start">
|
||
|
<xsl:choose>
|
||
|
<xsl:when test="starts-with($writing.mode, 'lr')">left</xsl:when>
|
||
|
<xsl:when test="starts-with($writing.mode, 'rl')">right</xsl:when>
|
||
|
<xsl:otherwise>left</xsl:otherwise>
|
||
|
</xsl:choose>
|
||
|
</xsl:variable>
|
||
|
|
||
|
<xsl:variable name="direction.align.end">
|
||
|
<xsl:choose>
|
||
|
<xsl:when test="starts-with($writing.mode, 'lr')">right</xsl:when>
|
||
|
<xsl:when test="starts-with($writing.mode, 'rl')">left</xsl:when>
|
||
|
<xsl:otherwise>right</xsl:otherwise>
|
||
|
</xsl:choose>
|
||
|
</xsl:variable>
|
||
|
|
||
|
<xsl:variable name="direction.mode">
|
||
|
<xsl:choose>
|
||
|
<xsl:when test="starts-with($writing.mode, 'lr')">ltr</xsl:when>
|
||
|
<xsl:when test="starts-with($writing.mode, 'rl')">rtl</xsl:when>
|
||
|
<xsl:otherwise>ltr</xsl:otherwise>
|
||
|
</xsl:choose>
|
||
|
</xsl:variable>
|
||
|
|
||
|
<!-- Support switching to <section> for HTML5 stylesheet -->
|
||
|
<!-- This is an internal variable that does not need to be set by a user -->
|
||
|
<xsl:variable name="div.element">div</xsl:variable>
|
||
|
<!-- Support turning off table border with border="" for HTML5 -->
|
||
|
<xsl:variable name="table.border.off">0</xsl:variable>
|
||
|
|
||
|
<!-- The generate.html.title template is currently used for generating HTML -->
|
||
|
<!-- "title" attributes for some inline elements only, but not for any -->
|
||
|
<!-- block elements. It is called in eleven places in the inline.xsl -->
|
||
|
<!-- file. But it's called by all the inline.* templates (e.g., -->
|
||
|
<!-- inline.boldseq), which in turn are called by other (element) -->
|
||
|
<!-- templates, so it results, currently, in supporting generation of the -->
|
||
|
<!-- HTML "title" attribute for a total of about 92 elements. -->
|
||
|
<!-- You can use mode="html.title.attribute" to get a title for -->
|
||
|
<!-- an element specified by a param, including targets of cross references. -->
|
||
|
<xsl:template name="generate.html.title">
|
||
|
<xsl:apply-templates select="." mode="html.title.attribute"/>
|
||
|
</xsl:template>
|
||
|
|
||
|
<xsl:template match="d:acronym|d:abbrev" mode="html.title.attribute">
|
||
|
<xsl:if test="d:alt">
|
||
|
<xsl:attribute name="title">
|
||
|
<xsl:value-of select="normalize-space(d:alt)"/>
|
||
|
</xsl:attribute>
|
||
|
</xsl:if>
|
||
|
</xsl:template>
|
||
|
|
||
|
<!-- Generate a title attribute for the context node -->
|
||
|
<!-- This may be the target of an xref -->
|
||
|
<xsl:template match="*" mode="html.title.attribute">
|
||
|
<xsl:variable name="is.title">
|
||
|
<xsl:call-template name="gentext.template.exists">
|
||
|
<xsl:with-param name="context" select="'title'"/>
|
||
|
<xsl:with-param name="name" select="local-name(.)"/>
|
||
|
<xsl:with-param name="lang">
|
||
|
<xsl:call-template name="l10n.language"/>
|
||
|
</xsl:with-param>
|
||
|
</xsl:call-template>
|
||
|
</xsl:variable>
|
||
|
|
||
|
<xsl:variable name="is.title-numbered">
|
||
|
<xsl:call-template name="gentext.template.exists">
|
||
|
<xsl:with-param name="context" select="'title-numbered'"/>
|
||
|
<xsl:with-param name="name" select="local-name(.)"/>
|
||
|
<xsl:with-param name="lang">
|
||
|
<xsl:call-template name="l10n.language"/>
|
||
|
</xsl:with-param>
|
||
|
</xsl:call-template>
|
||
|
</xsl:variable>
|
||
|
|
||
|
<xsl:variable name="is.title-unnumbered">
|
||
|
<xsl:call-template name="gentext.template.exists">
|
||
|
<xsl:with-param name="context" select="'title-unnumbered'"/>
|
||
|
<xsl:with-param name="name" select="local-name(.)"/>
|
||
|
<xsl:with-param name="lang">
|
||
|
<xsl:call-template name="l10n.language"/>
|
||
|
</xsl:with-param>
|
||
|
</xsl:call-template>
|
||
|
</xsl:variable>
|
||
|
|
||
|
<xsl:variable name="has.title.markup">
|
||
|
<xsl:apply-templates select="." mode="title.markup">
|
||
|
<xsl:with-param name="verbose" select="0"/>
|
||
|
</xsl:apply-templates>
|
||
|
</xsl:variable>
|
||
|
|
||
|
<xsl:variable name="gentext.title">
|
||
|
<xsl:if test="$has.title.markup != '???TITLE???' and ($is.title != 0 or $is.title-numbered != 0 or $is.title-unnumbered != 0)">
|
||
|
<xsl:apply-templates select="." mode="object.title.markup.textonly"/>
|
||
|
</xsl:if>
|
||
|
</xsl:variable>
|
||
|
|
||
|
<xsl:choose>
|
||
|
<xsl:when test="string-length($gentext.title) != 0">
|
||
|
<xsl:attribute name="title">
|
||
|
<xsl:value-of select="$gentext.title"/>
|
||
|
</xsl:attribute>
|
||
|
</xsl:when>
|
||
|
<!-- Fall back to alt if available -->
|
||
|
<xsl:when test="d:alt">
|
||
|
<xsl:attribute name="title">
|
||
|
<xsl:value-of select="normalize-space(d:alt)"/>
|
||
|
</xsl:attribute>
|
||
|
</xsl:when>
|
||
|
</xsl:choose>
|
||
|
</xsl:template>
|
||
|
|
||
|
<xsl:template match="d:qandaentry" mode="html.title.attribute">
|
||
|
<xsl:apply-templates select="d:question" mode="html.title.attribute"/>
|
||
|
</xsl:template>
|
||
|
|
||
|
<xsl:template match="d:question" mode="html.title.attribute">
|
||
|
<xsl:variable name="label.text">
|
||
|
<xsl:apply-templates select="." mode="qanda.label"/>
|
||
|
</xsl:variable>
|
||
|
|
||
|
<xsl:choose>
|
||
|
<xsl:when test="string-length($label.text) != 0">
|
||
|
<xsl:attribute name="title">
|
||
|
<xsl:value-of select="$label.text"/>
|
||
|
</xsl:attribute>
|
||
|
</xsl:when>
|
||
|
<!-- Fall back to alt if available -->
|
||
|
<xsl:when test="d:alt">
|
||
|
<xsl:attribute name="title">
|
||
|
<xsl:value-of select="normalize-space(d:alt)"/>
|
||
|
</xsl:attribute>
|
||
|
</xsl:when>
|
||
|
</xsl:choose>
|
||
|
</xsl:template>
|
||
|
|
||
|
<xsl:template name="dir">
|
||
|
<xsl:param name="inherit" select="0"/>
|
||
|
|
||
|
<xsl:variable name="dir">
|
||
|
<xsl:choose>
|
||
|
<xsl:when test="@dir">
|
||
|
<xsl:value-of select="@dir"/>
|
||
|
</xsl:when>
|
||
|
<xsl:when test="$inherit != 0">
|
||
|
<xsl:value-of select="ancestor::*/@dir[1]"/>
|
||
|
</xsl:when>
|
||
|
</xsl:choose>
|
||
|
</xsl:variable>
|
||
|
|
||
|
<xsl:if test="$dir != ''">
|
||
|
<xsl:attribute name="dir">
|
||
|
<xsl:value-of select="$dir"/>
|
||
|
</xsl:attribute>
|
||
|
</xsl:if>
|
||
|
</xsl:template>
|
||
|
|
||
|
<xsl:template name="anchor">
|
||
|
<xsl:param name="node" select="."/>
|
||
|
<xsl:param name="conditional" select="1"/>
|
||
|
|
||
|
<xsl:choose>
|
||
|
<xsl:when test="$generate.id.attributes != 0">
|
||
|
<!-- No named anchors output when this param is set -->
|
||
|
</xsl:when>
|
||
|
<xsl:when test="$conditional = 0 or $node/@id or $node/@xml:id">
|
||
|
<a>
|
||
|
<xsl:attribute name="id">
|
||
|
<xsl:call-template name="object.id">
|
||
|
<xsl:with-param name="object" select="$node"/>
|
||
|
</xsl:call-template>
|
||
|
</xsl:attribute>
|
||
|
</a>
|
||
|
</xsl:when>
|
||
|
</xsl:choose>
|
||
|
</xsl:template>
|
||
|
|
||
|
<xsl:template name="id.attribute">
|
||
|
<xsl:param name="node" select="."/>
|
||
|
<xsl:param name="conditional" select="1"/>
|
||
|
<xsl:choose>
|
||
|
<xsl:when test="$generate.id.attributes = 0">
|
||
|
<!-- No id attributes when this param is zero -->
|
||
|
</xsl:when>
|
||
|
<xsl:when test="$conditional = 0 or $node/@id or $node/@xml:id">
|
||
|
<xsl:attribute name="id">
|
||
|
<xsl:call-template name="object.id">
|
||
|
<xsl:with-param name="object" select="$node"/>
|
||
|
</xsl:call-template>
|
||
|
</xsl:attribute>
|
||
|
</xsl:when>
|
||
|
</xsl:choose>
|
||
|
</xsl:template>
|
||
|
|
||
|
<xsl:template name="href.target.uri">
|
||
|
<xsl:param name="context" select="."/>
|
||
|
<xsl:param name="object" select="."/>
|
||
|
<xsl:text>#</xsl:text>
|
||
|
<xsl:call-template name="object.id">
|
||
|
<xsl:with-param name="object" select="$object"/>
|
||
|
</xsl:call-template>
|
||
|
</xsl:template>
|
||
|
|
||
|
<xsl:template name="href.target">
|
||
|
<xsl:param name="context" select="."/>
|
||
|
<xsl:param name="object" select="."/>
|
||
|
<xsl:text>#</xsl:text>
|
||
|
<xsl:call-template name="object.id">
|
||
|
<xsl:with-param name="object" select="$object"/>
|
||
|
</xsl:call-template>
|
||
|
</xsl:template>
|
||
|
|
||
|
<xsl:template name="href.target.with.base.dir">
|
||
|
<xsl:param name="context" select="."/>
|
||
|
<xsl:param name="object" select="."/>
|
||
|
<xsl:if test="$manifest.in.base.dir = 0">
|
||
|
<xsl:value-of select="$chunk.base.dir"/>
|
||
|
</xsl:if>
|
||
|
<xsl:call-template name="href.target">
|
||
|
<xsl:with-param name="context" select="$context"/>
|
||
|
<xsl:with-param name="object" select="$object"/>
|
||
|
</xsl:call-template>
|
||
|
</xsl:template>
|
||
|
|
||
|
<xsl:template name="dingbat">
|
||
|
<xsl:param name="dingbat">bullet</xsl:param>
|
||
|
<xsl:call-template name="dingbat.characters">
|
||
|
<xsl:with-param name="dingbat" select="$dingbat"/>
|
||
|
</xsl:call-template>
|
||
|
</xsl:template>
|
||
|
|
||
|
<xsl:template name="dingbat.characters">
|
||
|
<!-- now that I'm using the real serializer, all that dingbat malarky -->
|
||
|
<!-- isn't necessary anymore... -->
|
||
|
<xsl:param name="dingbat">bullet</xsl:param>
|
||
|
<xsl:choose>
|
||
|
<xsl:when test="$dingbat='bullet'">•</xsl:when>
|
||
|
<xsl:when test="$dingbat='copyright'">©</xsl:when>
|
||
|
<xsl:when test="$dingbat='trademark'">™</xsl:when>
|
||
|
<xsl:when test="$dingbat='trade'">™</xsl:when>
|
||
|
<xsl:when test="$dingbat='registered'">®</xsl:when>
|
||
|
<xsl:when test="$dingbat='service'">(SM)</xsl:when>
|
||
|
<xsl:when test="$dingbat='nbsp'"> </xsl:when>
|
||
|
<xsl:when test="$dingbat='ldquo'">“</xsl:when>
|
||
|
<xsl:when test="$dingbat='rdquo'">”</xsl:when>
|
||
|
<xsl:when test="$dingbat='lsquo'">‘</xsl:when>
|
||
|
<xsl:when test="$dingbat='rsquo'">’</xsl:when>
|
||
|
<xsl:when test="$dingbat='em-dash'">—</xsl:when>
|
||
|
<xsl:when test="$dingbat='mdash'">—</xsl:when>
|
||
|
<xsl:when test="$dingbat='en-dash'">–</xsl:when>
|
||
|
<xsl:when test="$dingbat='ndash'">–</xsl:when>
|
||
|
<xsl:otherwise>
|
||
|
<xsl:text>•</xsl:text>
|
||
|
</xsl:otherwise>
|
||
|
</xsl:choose>
|
||
|
</xsl:template>
|
||
|
|
||
|
<xsl:template name="id.warning">
|
||
|
<xsl:if test="$id.warnings != 0 and not(@id) and not(@xml:id) and parent::*">
|
||
|
<xsl:variable name="title">
|
||
|
<xsl:choose>
|
||
|
<xsl:when test="d:title">
|
||
|
<xsl:value-of select="d:title[1]"/>
|
||
|
</xsl:when>
|
||
|
<xsl:when test="substring(local-name(*[1]), string-length(local-name(*[1])-3) = 'info') and *[1]/d:title">
|
||
|
<xsl:value-of select="*[1]/d:title[1]"/>
|
||
|
</xsl:when>
|
||
|
<xsl:when test="d:refmeta/d:refentrytitle">
|
||
|
<xsl:value-of select="d:refmeta/d:refentrytitle"/>
|
||
|
</xsl:when>
|
||
|
<xsl:when test="d:refnamediv/d:refname">
|
||
|
<xsl:value-of select="d:refnamediv/d:refname[1]"/>
|
||
|
</xsl:when>
|
||
|
</xsl:choose>
|
||
|
</xsl:variable>
|
||
|
|
||
|
<xsl:message>
|
||
|
<xsl:text>ID recommended on </xsl:text>
|
||
|
<xsl:value-of select="local-name(.)"/>
|
||
|
<xsl:if test="$title != ''">
|
||
|
<xsl:text>: </xsl:text>
|
||
|
<xsl:choose>
|
||
|
<xsl:when test="string-length($title) > 40">
|
||
|
<xsl:value-of select="substring($title,1,40)"/>
|
||
|
<xsl:text>...</xsl:text>
|
||
|
</xsl:when>
|
||
|
<xsl:otherwise>
|
||
|
<xsl:value-of select="$title"/>
|
||
|
</xsl:otherwise>
|
||
|
</xsl:choose>
|
||
|
</xsl:if>
|
||
|
</xsl:message>
|
||
|
</xsl:if>
|
||
|
</xsl:template>
|
||
|
|
||
|
<xsl:template name="generate.class.attribute">
|
||
|
<xsl:param name="class" select="local-name(.)"/>
|
||
|
<xsl:apply-templates select="." mode="class.attribute">
|
||
|
<xsl:with-param name="class" select="$class"/>
|
||
|
</xsl:apply-templates>
|
||
|
</xsl:template>
|
||
|
|
||
|
<xsl:template match="*" mode="class.attribute">
|
||
|
<xsl:param name="class" select="local-name(.)"/>
|
||
|
<!-- permit customization of class attributes -->
|
||
|
<!-- Use element name by default -->
|
||
|
<xsl:variable name="class.value">
|
||
|
<xsl:apply-templates select="." mode="class.value">
|
||
|
<xsl:with-param name="class" select="$class"/>
|
||
|
</xsl:apply-templates>
|
||
|
</xsl:variable>
|
||
|
|
||
|
<xsl:if test="string-length(normalize-space($class.value)) != 0">
|
||
|
<xsl:attribute name="class">
|
||
|
<xsl:value-of select="$class.value"/>
|
||
|
</xsl:attribute>
|
||
|
</xsl:if>
|
||
|
</xsl:template>
|
||
|
|
||
|
<xsl:template match="*" mode="class.value">
|
||
|
<xsl:param name="class" select="local-name(.)"/>
|
||
|
<!-- permit customization of class value only -->
|
||
|
<!-- Use element name by default -->
|
||
|
<xsl:value-of select="$class"/>
|
||
|
</xsl:template>
|
||
|
|
||
|
<!-- Apply common attributes such as class, lang, dir -->
|
||
|
<xsl:template name="common.html.attributes">
|
||
|
<xsl:param name="inherit" select="0"/>
|
||
|
<xsl:param name="class" select="local-name(.)"/>
|
||
|
<xsl:apply-templates select="." mode="common.html.attributes">
|
||
|
<xsl:with-param name="class" select="$class"/>
|
||
|
<xsl:with-param name="inherit" select="$inherit"/>
|
||
|
</xsl:apply-templates>
|
||
|
</xsl:template>
|
||
|
|
||
|
<xsl:template match="*" mode="common.html.attributes">
|
||
|
<xsl:param name="class" select="local-name(.)"/>
|
||
|
<xsl:param name="inherit" select="0"/>
|
||
|
<xsl:call-template name="generate.html.lang"/>
|
||
|
<xsl:call-template name="dir">
|
||
|
<xsl:with-param name="inherit" select="$inherit"/>
|
||
|
</xsl:call-template>
|
||
|
<xsl:apply-templates select="." mode="class.attribute">
|
||
|
<xsl:with-param name="class" select="$class"/>
|
||
|
</xsl:apply-templates>
|
||
|
<xsl:call-template name="its.attributes">
|
||
|
<xsl:with-param name="inherit" select="$inherit"/>
|
||
|
</xsl:call-template>
|
||
|
</xsl:template>
|
||
|
|
||
|
<!-- Apply common attributes not including class -->
|
||
|
<xsl:template name="locale.html.attributes">
|
||
|
<xsl:apply-templates select="." mode="locale.html.attributes"/>
|
||
|
</xsl:template>
|
||
|
|
||
|
<xsl:template match="*" mode="locale.html.attributes">
|
||
|
<xsl:call-template name="generate.html.lang"/>
|
||
|
<xsl:call-template name="dir"/>
|
||
|
<xsl:call-template name="its.attributes"/>
|
||
|
</xsl:template>
|
||
|
|
||
|
<!-- Pass through any lang attributes -->
|
||
|
<xsl:template name="generate.html.lang">
|
||
|
<xsl:apply-templates select="." mode="html.lang.attribute"/>
|
||
|
</xsl:template>
|
||
|
|
||
|
<xsl:template match="*" mode="html.lang.attribute">
|
||
|
<!-- match the attribute name to the output type -->
|
||
|
<xsl:choose>
|
||
|
<xsl:when test="@lang and $stylesheet.result.type = 'html'">
|
||
|
<xsl:attribute name="lang">
|
||
|
<xsl:value-of select="@lang"/>
|
||
|
</xsl:attribute>
|
||
|
</xsl:when>
|
||
|
<xsl:when test="@lang and $stylesheet.result.type = 'xhtml'">
|
||
|
<xsl:attribute name="xml:lang">
|
||
|
<xsl:value-of select="@lang"/>
|
||
|
</xsl:attribute>
|
||
|
</xsl:when>
|
||
|
<xsl:when test="@xml:lang and $stylesheet.result.type = 'html'">
|
||
|
<xsl:attribute name="lang">
|
||
|
<xsl:value-of select="@xml:lang"/>
|
||
|
</xsl:attribute>
|
||
|
</xsl:when>
|
||
|
<xsl:when test="@xml:lang and $stylesheet.result.type = 'xhtml'">
|
||
|
<xsl:attribute name="xml:lang">
|
||
|
<xsl:value-of select="@xml:lang"/>
|
||
|
</xsl:attribute>
|
||
|
</xsl:when>
|
||
|
</xsl:choose>
|
||
|
</xsl:template>
|
||
|
|
||
|
<!-- ==================================================================== -->
|
||
|
<!-- Insert link to css or insert literal CSS in head element -->
|
||
|
<xsl:template name="generate.css">
|
||
|
<xsl:choose>
|
||
|
<xsl:when test="$generate.css.header = 0">
|
||
|
<xsl:call-template name="generate.css.links"/>
|
||
|
</xsl:when>
|
||
|
<xsl:otherwise>
|
||
|
<xsl:call-template name="generate.css.headers"/>
|
||
|
</xsl:otherwise>
|
||
|
</xsl:choose>
|
||
|
</xsl:template>
|
||
|
|
||
|
<xsl:template name="generate.css.headers">
|
||
|
<xsl:call-template name="generate.default.css.header"/>
|
||
|
<xsl:call-template name="generate.custom.css.header"/>
|
||
|
</xsl:template>
|
||
|
|
||
|
<xsl:template name="generate.default.css.header">
|
||
|
<xsl:if test="$make.clean.html != 0 and $docbook.css.source != ''">
|
||
|
<!-- Select default file relative to stylesheet -->
|
||
|
<xsl:variable name="css.node" select="document($docbook.css.source)/*[1]"/>
|
||
|
|
||
|
<xsl:call-template name="output.css.header">
|
||
|
<xsl:with-param name="css.node" select="$css.node"/>
|
||
|
</xsl:call-template>
|
||
|
</xsl:if>
|
||
|
</xsl:template>
|
||
|
|
||
|
<xsl:template name="generate.custom.css.header">
|
||
|
<xsl:if test="$custom.css.source != ''">
|
||
|
<!-- Select custom file relative to document -->
|
||
|
<xsl:variable name="css.node" select="document($custom.css.source,.)/*[1]"/>
|
||
|
|
||
|
<xsl:call-template name="output.css.header">
|
||
|
<xsl:with-param name="css.node" select="$css.node"/>
|
||
|
</xsl:call-template>
|
||
|
</xsl:if>
|
||
|
</xsl:template>
|
||
|
|
||
|
<xsl:template name="output.css.header">
|
||
|
<xsl:param name="css.node"/>
|
||
|
|
||
|
<xsl:choose>
|
||
|
<xsl:when test="count($css.node) = 0">
|
||
|
</xsl:when>
|
||
|
<xsl:otherwise>
|
||
|
<style type="text/css">
|
||
|
<xsl:copy-of select="$css.node/text()"/>
|
||
|
</style>
|
||
|
</xsl:otherwise>
|
||
|
</xsl:choose>
|
||
|
</xsl:template>
|
||
|
|
||
|
<!-- ==================================================================== -->
|
||
|
<xsl:template name="generate.css.links">
|
||
|
<xsl:call-template name="generate.default.css.link"/>
|
||
|
<xsl:call-template name="generate.custom.css.link"/>
|
||
|
</xsl:template>
|
||
|
|
||
|
<xsl:template name="generate.default.css.link">
|
||
|
<xsl:if test="$make.clean.html != 0 and $docbook.css.link != 0 and $docbook.css.source != ''">
|
||
|
<xsl:variable name="filename">
|
||
|
<xsl:call-template name="css.output.filename">
|
||
|
<xsl:with-param name="src" select="$docbook.css.source"/>
|
||
|
</xsl:call-template>
|
||
|
</xsl:variable>
|
||
|
|
||
|
<xsl:call-template name="make.css.link">
|
||
|
<xsl:with-param name="css.filename" select="$filename"/>
|
||
|
</xsl:call-template>
|
||
|
</xsl:if>
|
||
|
</xsl:template>
|
||
|
|
||
|
<xsl:template name="generate.custom.css.link">
|
||
|
<xsl:if test="$custom.css.source != ''">
|
||
|
<xsl:variable name="filename">
|
||
|
<xsl:call-template name="css.output.filename">
|
||
|
<xsl:with-param name="src" select="$custom.css.source"/>
|
||
|
</xsl:call-template>
|
||
|
</xsl:variable>
|
||
|
|
||
|
<xsl:call-template name="make.css.link">
|
||
|
<xsl:with-param name="css.filename" select="$filename"/>
|
||
|
</xsl:call-template>
|
||
|
</xsl:if>
|
||
|
</xsl:template>
|
||
|
|
||
|
<!-- a CSS link reference must take into account the relative
|
||
|
path to a CSS file when chunked HTML is output to more than one directory -->
|
||
|
<xsl:template name="make.css.link">
|
||
|
<xsl:param name="css.filename" select="''"/>
|
||
|
|
||
|
<xsl:variable name="href">
|
||
|
<xsl:call-template name="relative.path.link">
|
||
|
<xsl:with-param name="target.pathname" select="$css.filename"/>
|
||
|
</xsl:call-template>
|
||
|
</xsl:variable>
|
||
|
|
||
|
<xsl:if test="string-length($css.filename) != 0">
|
||
|
<link rel="stylesheet" type="text/css" href="{$href}"/>
|
||
|
</xsl:if>
|
||
|
</xsl:template>
|
||
|
|
||
|
<!-- And the same applies to script links -->
|
||
|
<xsl:template name="make.script.link">
|
||
|
<xsl:param name="script.filename" select="''"/>
|
||
|
|
||
|
<xsl:variable name="src">
|
||
|
<xsl:call-template name="relative.path.link">
|
||
|
<xsl:with-param name="target.pathname" select="$script.filename"/>
|
||
|
</xsl:call-template>
|
||
|
</xsl:variable>
|
||
|
|
||
|
<xsl:if test="string-length($script.filename) != 0">
|
||
|
<script>
|
||
|
<xsl:attribute name="src">
|
||
|
<xsl:value-of select="$src"/>
|
||
|
</xsl:attribute>
|
||
|
<xsl:attribute name="type">
|
||
|
<xsl:value-of select="$html.script.type"/>
|
||
|
</xsl:attribute>
|
||
|
<xsl:call-template name="other.script.attributes">
|
||
|
<xsl:with-param name="script.filename" select="$script.filename"/>
|
||
|
</xsl:call-template>
|
||
|
</script>
|
||
|
</xsl:if>
|
||
|
</xsl:template>
|
||
|
|
||
|
<xsl:template name="other.script.attributes">
|
||
|
<xsl:param name="script.filename"/>
|
||
|
<!-- Placeholder template to allow customization to
|
||
|
insert additional script element attributes if needed -->
|
||
|
</xsl:template>
|
||
|
|
||
|
<xsl:template name="relative.path.link">
|
||
|
<xsl:param name="target.pathname"/>
|
||
|
|
||
|
<xsl:variable name="href.to.uri" select="$target.pathname"/>
|
||
|
|
||
|
<xsl:variable name="href.from.uri">
|
||
|
<xsl:call-template name="href.target.uri">
|
||
|
<xsl:with-param name="object" select="."/>
|
||
|
</xsl:call-template>
|
||
|
</xsl:variable>
|
||
|
|
||
|
<xsl:variable name="href.to">
|
||
|
<xsl:call-template name="trim.common.uri.paths">
|
||
|
<xsl:with-param name="uriA" select="$href.to.uri"/>
|
||
|
<xsl:with-param name="uriB" select="$href.from.uri"/>
|
||
|
<xsl:with-param name="return" select="'A'"/>
|
||
|
</xsl:call-template>
|
||
|
</xsl:variable>
|
||
|
|
||
|
<xsl:variable name="href.from">
|
||
|
<xsl:call-template name="trim.common.uri.paths">
|
||
|
<xsl:with-param name="uriA" select="$href.to.uri"/>
|
||
|
<xsl:with-param name="uriB" select="$href.from.uri"/>
|
||
|
<xsl:with-param name="return" select="'B'"/>
|
||
|
</xsl:call-template>
|
||
|
</xsl:variable>
|
||
|
<xsl:variable name="depth">
|
||
|
<xsl:call-template name="count.uri.path.depth">
|
||
|
<xsl:with-param name="filename" select="$href.from"/>
|
||
|
</xsl:call-template>
|
||
|
</xsl:variable>
|
||
|
<xsl:variable name="href">
|
||
|
<xsl:call-template name="copy-string">
|
||
|
<xsl:with-param name="string" select="'../'"/>
|
||
|
<xsl:with-param name="count" select="$depth"/>
|
||
|
</xsl:call-template>
|
||
|
<xsl:value-of select="$href.to"/>
|
||
|
</xsl:variable>
|
||
|
|
||
|
<xsl:value-of select="$href"/>
|
||
|
</xsl:template>
|
||
|
|
||
|
<!-- ==================================================================== -->
|
||
|
|
||
|
<xsl:template name="generate.css.files">
|
||
|
<xsl:call-template name="generate.default.css.file"/>
|
||
|
<xsl:call-template name="generate.custom.css.file"/>
|
||
|
</xsl:template>
|
||
|
|
||
|
<xsl:template name="generate.default.css.file">
|
||
|
<xsl:if test="$make.clean.html != 0 and $generate.css.header = 0 and $docbook.css.source != ''">
|
||
|
<!-- Select default file relative to stylesheet -->
|
||
|
<xsl:variable name="css.node" select="document($docbook.css.source)/*[1]"/>
|
||
|
|
||
|
<xsl:call-template name="generate.css.file">
|
||
|
<xsl:with-param name="src" select="$docbook.css.source"/>
|
||
|
<xsl:with-param name="css.node" select="$css.node"/>
|
||
|
</xsl:call-template>
|
||
|
</xsl:if>
|
||
|
</xsl:template>
|
||
|
|
||
|
<xsl:template name="generate.custom.css.file">
|
||
|
<xsl:if test="$custom.css.source != '' and $generate.css.header = 0">
|
||
|
<!-- Select custom file relative to document -->
|
||
|
<xsl:variable name="css.node" select="document($custom.css.source,.)/*[1]"/>
|
||
|
|
||
|
<xsl:call-template name="generate.css.file">
|
||
|
<xsl:with-param name="src" select="$custom.css.source"/>
|
||
|
<xsl:with-param name="css.node" select="$css.node"/>
|
||
|
</xsl:call-template>
|
||
|
</xsl:if>
|
||
|
</xsl:template>
|
||
|
|
||
|
<xsl:template name="generate.css.file">
|
||
|
<xsl:param name="css.node"/>
|
||
|
<xsl:param name="src" select="''"/>
|
||
|
|
||
|
<xsl:variable name="css.text" select="$css.node/text()"/>
|
||
|
|
||
|
<xsl:choose>
|
||
|
<xsl:when test="count($css.node) = 0">
|
||
|
<xsl:message>
|
||
|
<xsl:text>ERROR: no root element for CSS source file'</xsl:text>
|
||
|
<xsl:value-of select="$src"/>
|
||
|
<xsl:text>'.</xsl:text>
|
||
|
</xsl:message>
|
||
|
</xsl:when>
|
||
|
<xsl:otherwise>
|
||
|
<xsl:variable name="filename">
|
||
|
<xsl:call-template name="css.output.pathname">
|
||
|
<xsl:with-param name="src" select="$src"/>
|
||
|
<xsl:with-param name="content" select="$css.node"/>
|
||
|
</xsl:call-template>
|
||
|
</xsl:variable>
|
||
|
|
||
|
<xsl:call-template name="write.text.chunk">
|
||
|
<xsl:with-param name="filename" select="$filename"/>
|
||
|
<xsl:with-param name="content" select="$css.text"/>
|
||
|
</xsl:call-template>
|
||
|
|
||
|
</xsl:otherwise>
|
||
|
</xsl:choose>
|
||
|
</xsl:template>
|
||
|
|
||
|
<xsl:template name="css.output.filename">
|
||
|
<xsl:param name="content"/>
|
||
|
<xsl:param name="src" select="''"/>
|
||
|
|
||
|
<xsl:variable name="candidate">
|
||
|
<xsl:choose>
|
||
|
<xsl:when test="string-length($src) = 0">
|
||
|
<xsl:message>
|
||
|
<xsl:text>ERROR: missing CSS input filename.</xsl:text>
|
||
|
</xsl:message>
|
||
|
</xsl:when>
|
||
|
<xsl:when test="substring($src,string-length($src)-3) = '.xml'">
|
||
|
<xsl:value-of select="substring($src, 1, string-length($src) - 4)"/>
|
||
|
</xsl:when>
|
||
|
<xsl:otherwise>
|
||
|
<xsl:value-of select="$src"/>
|
||
|
</xsl:otherwise>
|
||
|
</xsl:choose>
|
||
|
</xsl:variable>
|
||
|
<xsl:value-of select="$candidate"/>
|
||
|
</xsl:template>
|
||
|
|
||
|
<xsl:template name="css.output.pathname">
|
||
|
<xsl:param name="content"/>
|
||
|
<xsl:param name="src" select="''"/>
|
||
|
|
||
|
<xsl:variable name="file">
|
||
|
<xsl:call-template name="css.output.filename">
|
||
|
<xsl:with-param name="content" select="$content"/>
|
||
|
<xsl:with-param name="src" select="$src"/>
|
||
|
</xsl:call-template>
|
||
|
</xsl:variable>
|
||
|
|
||
|
<xsl:variable name="path" select="concat($chunk.base.dir, $file)"/>
|
||
|
<xsl:value-of select="$path"/>
|
||
|
|
||
|
</xsl:template>
|
||
|
|
||
|
</xsl:stylesheet>
|