mirror of https://github.com/tLDP/LDP
281 lines
9.4 KiB
XML
281 lines
9.4 KiB
XML
<?xml version='1.0'?>
|
|
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
|
|
xmlns:verb5="http://nwalsh.com/com.nwalsh.saxon.Verbatim"
|
|
xmlns:verb6="http://nwalsh.com/com.nwalsh.saxon6.Verbatim"
|
|
exclude-result-prefixes="verb5 verb6"
|
|
version='1.0'>
|
|
|
|
<!-- ********************************************************************
|
|
$Id$
|
|
********************************************************************
|
|
|
|
This file is part of the XSL DocBook Stylesheet distribution.
|
|
See ../README or http://nwalsh.com/docbook/xsl/ for copyright
|
|
and other information.
|
|
|
|
******************************************************************** -->
|
|
|
|
<xsl:template match="programlisting|screen|synopsis">
|
|
<xsl:param name="suppress-numbers" select="'0'"/>
|
|
<xsl:variable name="vendor" select="system-property('xsl:vendor')"/>
|
|
<xsl:variable name="id"><xsl:call-template name="object.id"/></xsl:variable>
|
|
|
|
<!-- Obey the <?dbhtml linenumbering.everyNth="x"?> PI -->
|
|
<xsl:variable name="default.linenumbering.everyNth"
|
|
select="$linenumbering.everyNth"/>
|
|
|
|
<xsl:variable name="pi.linenumbering.everyNth">
|
|
<xsl:call-template name="dbhtml-attribute">
|
|
<xsl:with-param name="attribute" select="'everyNth'"/>
|
|
</xsl:call-template>
|
|
</xsl:variable>
|
|
|
|
<xsl:variable name="linenumbering.everyNth">
|
|
<xsl:choose>
|
|
<xsl:when test="$pi.linenumbering.everyNth != ''">
|
|
<xsl:value-of select="$pi.linenumbering.everyNth"/>
|
|
</xsl:when>
|
|
<xsl:otherwise>
|
|
<xsl:value-of select="$default.linenumbering.everyNth"/>
|
|
</xsl:otherwise>
|
|
</xsl:choose>
|
|
</xsl:variable>
|
|
|
|
<!-- Obey the <?dbhtml linenumbering.separator="x"?> PI -->
|
|
<xsl:variable name="default.linenumbering.separator"
|
|
select="$linenumbering.separator"/>
|
|
|
|
<xsl:variable name="pi.linenumbering.separator">
|
|
<xsl:call-template name="dbhtml-attribute">
|
|
<xsl:with-param name="attribute" select="'linenumbering.separator'"/>
|
|
</xsl:call-template>
|
|
</xsl:variable>
|
|
|
|
<xsl:variable name="linenumbering.separator">
|
|
<xsl:choose>
|
|
<xsl:when test="$pi.linenumbering.separator != ''">
|
|
<xsl:value-of select="$pi.linenumbering.separator"/>
|
|
</xsl:when>
|
|
<xsl:otherwise>
|
|
<xsl:value-of select="$default.linenumbering.separator"/>
|
|
</xsl:otherwise>
|
|
</xsl:choose>
|
|
</xsl:variable>
|
|
|
|
<xsl:if test="@id">
|
|
<a href="{$id}"/>
|
|
</xsl:if>
|
|
|
|
<xsl:choose>
|
|
<xsl:when test="$suppress-numbers = '0'
|
|
and @linenumbering = 'numbered'
|
|
and $saxon.extensions != '0'
|
|
and $saxon.linenumbering != '0'">
|
|
<xsl:variable name="rtf">
|
|
<xsl:apply-templates/>
|
|
</xsl:variable>
|
|
<pre class="{name(.)}">
|
|
<xsl:choose>
|
|
<xsl:when test="contains($vendor, 'SAXON 6')">
|
|
<xsl:copy-of select="verb6:numberLines($rtf)"/>
|
|
</xsl:when>
|
|
<xsl:otherwise>
|
|
<xsl:copy-of select="verb5:numberLines($rtf,
|
|
$linenumbering.everyNth,
|
|
$linenumbering.width,
|
|
$linenumbering.separator)"/>
|
|
</xsl:otherwise>
|
|
</xsl:choose>
|
|
</pre>
|
|
</xsl:when>
|
|
<xsl:otherwise>
|
|
<pre class="{name(.)}">
|
|
<xsl:apply-templates/>
|
|
</pre>
|
|
</xsl:otherwise>
|
|
</xsl:choose>
|
|
</xsl:template>
|
|
|
|
<xsl:template match="literallayout">
|
|
<xsl:param name="suppress-numbers" select="'0'"/>
|
|
<xsl:variable name="vendor" select="system-property('xsl:vendor')"/>
|
|
|
|
<xsl:variable name="rtf">
|
|
<xsl:apply-templates/>
|
|
</xsl:variable>
|
|
|
|
<xsl:choose>
|
|
<xsl:when test="$suppress-numbers = '0'
|
|
and @linenumbering = 'numbered'
|
|
and $saxon.extensions != '0'
|
|
and $saxon.linenumbering != '0'">
|
|
<xsl:choose>
|
|
<xsl:when test="@class='monospaced'">
|
|
<pre class="{name(.)}">
|
|
<xsl:choose>
|
|
<xsl:when test="contains($vendor, 'SAXON 6')">
|
|
<xsl:copy-of select="verb6:numberLines($rtf)"/>
|
|
</xsl:when>
|
|
<xsl:otherwise>
|
|
<xsl:copy-of select="verb5:numberLines($rtf,
|
|
$linenumbering.everyNth,
|
|
$linenumbering.width,
|
|
$linenumbering.separator)"/>
|
|
</xsl:otherwise>
|
|
</xsl:choose>
|
|
</pre>
|
|
</xsl:when>
|
|
<xsl:otherwise>
|
|
<div class="{name(.)}">
|
|
<xsl:choose>
|
|
<xsl:when test="contains($vendor, 'SAXON 6')">
|
|
<xsl:copy-of select="verb6:numberLines($rtf)"/>
|
|
</xsl:when>
|
|
<xsl:otherwise>
|
|
<xsl:copy-of select="verb5:numberLines($rtf,
|
|
$linenumbering.everyNth,
|
|
$linenumbering.width,
|
|
$linenumbering.separator)"/>
|
|
</xsl:otherwise>
|
|
</xsl:choose>
|
|
</div>
|
|
</xsl:otherwise>
|
|
</xsl:choose>
|
|
</xsl:when>
|
|
<xsl:otherwise>
|
|
<xsl:choose>
|
|
<xsl:when test="@class='monospaced'">
|
|
<pre class="{name(.)}">
|
|
<xsl:copy-of select="$rtf"/>
|
|
</pre>
|
|
</xsl:when>
|
|
<xsl:otherwise>
|
|
<div class="{name(.)}">
|
|
<xsl:copy-of select="$rtf"/>
|
|
</div>
|
|
</xsl:otherwise>
|
|
</xsl:choose>
|
|
</xsl:otherwise>
|
|
</xsl:choose>
|
|
</xsl:template>
|
|
|
|
<xsl:template match="literallayout[not(@class)
|
|
or @class != 'monospaced']//text()">
|
|
<xsl:call-template name="make-verbatim">
|
|
<xsl:with-param name="text" select="."/>
|
|
</xsl:call-template>
|
|
</xsl:template>
|
|
|
|
<xsl:template match="address">
|
|
<xsl:param name="suppress-numbers" select="'0'"/>
|
|
<xsl:variable name="vendor" select="system-property('xsl:vendor')"/>
|
|
|
|
<xsl:variable name="rtf">
|
|
<xsl:apply-templates/>
|
|
</xsl:variable>
|
|
|
|
<xsl:choose>
|
|
<xsl:when test="$suppress-numbers = '0'
|
|
and @linenumbering = 'numbered'
|
|
and $saxon.extensions != '0'
|
|
and $saxon.linenumbering != '0'">
|
|
<div class="{name(.)}">
|
|
<xsl:choose>
|
|
<xsl:when test="contains($vendor, 'SAXON 6')">
|
|
<xsl:copy-of select="verb6:numberLines($rtf)"/>
|
|
</xsl:when>
|
|
<xsl:otherwise>
|
|
<xsl:copy-of select="verb5:numberLines($rtf,
|
|
$linenumbering.everyNth,
|
|
$linenumbering.width,
|
|
$linenumbering.separator)"/>
|
|
</xsl:otherwise>
|
|
</xsl:choose>
|
|
</div>
|
|
</xsl:when>
|
|
<xsl:otherwise>
|
|
<div class="{name(.)}">
|
|
<xsl:apply-templates/>
|
|
</div>
|
|
</xsl:otherwise>
|
|
</xsl:choose>
|
|
</xsl:template>
|
|
|
|
<xsl:template match="address//text()">
|
|
<xsl:call-template name="make-verbatim">
|
|
<xsl:with-param name="text" select="."/>
|
|
</xsl:call-template>
|
|
</xsl:template>
|
|
|
|
<xsl:template name="make-verbatim">
|
|
<xsl:param name="text" select="''"/>
|
|
|
|
<xsl:variable name="starts-with-space"
|
|
select="substring($text, 1, 1) = ' '"/>
|
|
|
|
<xsl:variable name="starts-with-nl"
|
|
select="substring($text, 1, 1) = '
'"/>
|
|
|
|
<xsl:variable name="before-space">
|
|
<xsl:if test="contains($text, ' ')">
|
|
<xsl:value-of select="substring-before($text, ' ')"/>
|
|
</xsl:if>
|
|
</xsl:variable>
|
|
|
|
<xsl:variable name="before-nl">
|
|
<xsl:if test="contains($text, '
')">
|
|
<xsl:value-of select="substring-before($text, '
')"/>
|
|
</xsl:if>
|
|
</xsl:variable>
|
|
|
|
<xsl:choose>
|
|
<xsl:when test="$starts-with-space">
|
|
<xsl:text> </xsl:text>
|
|
<xsl:call-template name="make-verbatim">
|
|
<xsl:with-param name="text" select="substring($text,2)"/>
|
|
</xsl:call-template>
|
|
</xsl:when>
|
|
|
|
<xsl:when test="$starts-with-nl">
|
|
<br/><xsl:text>
</xsl:text>
|
|
<xsl:call-template name="make-verbatim">
|
|
<xsl:with-param name="text" select="substring($text,2)"/>
|
|
</xsl:call-template>
|
|
</xsl:when>
|
|
|
|
<!-- if the string before a space is shorter than the string before
|
|
a newline, fix the space...-->
|
|
<xsl:when test="$before-space != ''
|
|
and ((string-length($before-space)
|
|
< string-length($before-nl))
|
|
or $before-nl = '')">
|
|
<xsl:value-of select="$before-space"/>
|
|
<xsl:text> </xsl:text>
|
|
<xsl:call-template name="make-verbatim">
|
|
<xsl:with-param name="text" select="substring-after($text, ' ')"/>
|
|
</xsl:call-template>
|
|
</xsl:when>
|
|
|
|
<!-- if the string before a newline is shorter than the string before
|
|
a space, fix the newline...-->
|
|
<xsl:when test="$before-nl != ''
|
|
and ((string-length($before-nl)
|
|
< string-length($before-space))
|
|
or $before-space = '')">
|
|
<xsl:value-of select="$before-nl"/>
|
|
<br/><xsl:text>
</xsl:text>
|
|
<xsl:call-template name="make-verbatim">
|
|
<xsl:with-param name="text" select="substring-after($text, '
')"/>
|
|
</xsl:call-template>
|
|
</xsl:when>
|
|
|
|
<!-- the string before the newline and the string before the
|
|
space are the same; which means they must both be empty -->
|
|
<xsl:otherwise>
|
|
<xsl:value-of select="$text"/>
|
|
</xsl:otherwise>
|
|
</xsl:choose>
|
|
</xsl:template>
|
|
|
|
</xsl:stylesheet>
|