<?xml version='1.0'?> <xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:fo="http://www.w3.org/1999/XSL/Format" xmlns:sverb="http://nwalsh.com/xslt/ext/com.nwalsh.saxon.Verbatim" xmlns:xverb="com.nwalsh.xalan.Verbatim" xmlns:lxslt="http://xml.apache.org/xslt" exclude-result-prefixes="sverb xverb lxslt" version='1.0'> <!-- ******************************************************************** $Id: verbatim.xsl,v 1.1 2002/05/15 17:22:29 isberg Exp $ ******************************************************************** This file is part of the XSL DocBook Stylesheet distribution. See ../README or http://nwalsh.com/docbook/xsl/ for copyright and other information. ******************************************************************** --> <lxslt:component prefix="xverb" functions="numberLines"/> <xsl:template match="programlisting|screen"> <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> <xsl:choose> <xsl:when test="$suppress-numbers = '0' and @linenumbering = 'numbered' and $use.extensions != '0' and $linenumbering.extension != '0'"> <xsl:variable name="rtf"> <xsl:apply-templates/> </xsl:variable> <fo:block wrap-option='no-wrap' text-align='start' white-space-collapse='false' linefeed-treatment="preserve" xsl:use-attribute-sets="monospace.verbatim.properties"> <xsl:call-template name="number.rtf.lines"> <xsl:with-param name="rtf" select="$rtf"/> </xsl:call-template> </fo:block> </xsl:when> <xsl:otherwise> <fo:block wrap-option='no-wrap' text-align='start' white-space-collapse='false' linefeed-treatment="preserve" xsl:use-attribute-sets="monospace.verbatim.properties"> <xsl:apply-templates/> </fo:block> </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 $use.extensions != '0' and $linenumbering.extension != '0'"> <xsl:choose> <xsl:when test="@class='monospaced'"> <fo:block wrap-option='no-wrap' text-align='start' linefeed-treatment="preserve" white-space-collapse='false' xsl:use-attribute-sets="monospace.verbatim.properties"> <xsl:call-template name="number.rtf.lines"> <xsl:with-param name="rtf" select="$rtf"/> </xsl:call-template> </fo:block> </xsl:when> <xsl:otherwise> <fo:block wrap-option='no-wrap' text-align='start' linefeed-treatment="preserve" white-space-collapse='false' xsl:use-attribute-sets="verbatim.properties"> <xsl:call-template name="number.rtf.lines"> <xsl:with-param name="rtf" select="$rtf"/> </xsl:call-template> </fo:block> </xsl:otherwise> </xsl:choose> </xsl:when> <xsl:otherwise> <xsl:choose> <xsl:when test="@class='monospaced'"> <fo:block wrap-option='no-wrap' text-align='start' linefeed-treatment="preserve" white-space-collapse='false' xsl:use-attribute-sets="monospace.verbatim.properties"> <xsl:copy-of select="$rtf"/> </fo:block> </xsl:when> <xsl:otherwise> <fo:block wrap-option='no-wrap' text-align='start' linefeed-treatment="preserve" white-space-collapse='false' xsl:use-attribute-sets="verbatim.properties"> <xsl:copy-of select="$rtf"/> </fo:block> </xsl:otherwise> </xsl:choose> </xsl:otherwise> </xsl:choose> </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 $use.extensions != '0' and $linenumbering.extension != '0'"> <fo:block wrap-option='no-wrap' white-space-collapse='false' linefeed-treatment="preserve" xsl:use-attribute-sets="verbatim.properties"> <xsl:call-template name="number.rtf.lines"> <xsl:with-param name="rtf" select="$rtf"/> </xsl:call-template> </fo:block> </xsl:when> <xsl:otherwise> <fo:block wrap-option='no-wrap' text-align='start' linefeed-treatment="preserve" white-space-collapse='false' xsl:use-attribute-sets="verbatim.properties"> <xsl:apply-templates/> </fo:block> </xsl:otherwise> </xsl:choose> </xsl:template> <xsl:template name="number.rtf.lines"> <xsl:param name="rtf" select="''"/> <xsl:param name="pi.context" select="."/> <!-- Save the global values --> <xsl:variable name="global.linenumbering.everyNth" select="$linenumbering.everyNth"/> <xsl:variable name="global.linenumbering.separator" select="$linenumbering.separator"/> <xsl:variable name="global.linenumbering.width" select="$linenumbering.width"/> <!-- Extract the <?dbfo linenumbering.*?> PI values --> <xsl:variable name="pi.linenumbering.everyNth"> <xsl:call-template name="dbfo-attribute"> <xsl:with-param name="pis" select="$pi.context/processing-instruction('dbfo')"/> <xsl:with-param name="attribute" select="'linenumbering.everyNth'"/> </xsl:call-template> </xsl:variable> <xsl:variable name="pi.linenumbering.separator"> <xsl:call-template name="dbfo-attribute"> <xsl:with-param name="pis" select="$pi.context/processing-instruction('dbfo')"/> <xsl:with-param name="attribute" select="'linenumbering.separator'"/> </xsl:call-template> </xsl:variable> <xsl:variable name="pi.linenumbering.width"> <xsl:call-template name="dbfo-attribute"> <xsl:with-param name="pis" select="$pi.context/processing-instruction('dbfo')"/> <xsl:with-param name="attribute" select="'linenumbering.width'"/> </xsl:call-template> </xsl:variable> <!-- Construct the 'in-context' values --> <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="$global.linenumbering.everyNth"/> </xsl:otherwise> </xsl:choose> </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="$global.linenumbering.separator"/> </xsl:otherwise> </xsl:choose> </xsl:variable> <xsl:variable name="linenumbering.width"> <xsl:choose> <xsl:when test="$pi.linenumbering.width != ''"> <xsl:value-of select="$pi.linenumbering.width"/> </xsl:when> <xsl:otherwise> <xsl:value-of select="$global.linenumbering.width"/> </xsl:otherwise> </xsl:choose> </xsl:variable> <xsl:variable name="vendor" select="system-property('xsl:vendor')"/> <xsl:choose> <xsl:when test="contains($vendor, 'SAXON ')"> <xsl:copy-of select="sverb:numberLines($rtf)"/> </xsl:when> <xsl:when test="contains($vendor, 'Apache Software Foundation')"> <xsl:copy-of select="xverb:numberLines($rtf)"/> </xsl:when> <xsl:otherwise> <xsl:message terminate="yes"> <xsl:text>Don't know how to do line numbering with </xsl:text> <xsl:value-of select="$vendor"/> </xsl:message> </xsl:otherwise> </xsl:choose> </xsl:template> </xsl:stylesheet>