[Date Prev] | [Thread Prev] | [Thread Next] | [Date Next] -- [Date Index] | [Thread Index] | [Elist Home]
Subject: DOCBOOK-APPS: Example of an XSL customization layer
Since it sounds like a number of people are starting to experiment with XSL customization layers, I thought I'd share one that works. The attached file, e-smith.xsl, is a customization layer that I've been using for my XSL experiments. I have a second one that I call "e-smith-chunk.xsl" which is identical expect that the xsl:import statement points to "chunk.xsl" instead of "docbook.xsl". A couple of the items in the file apply only to chunking - for simplicity I just have one base stylesheet, so you can ignore those parameters in this file. This stylesheet has worked fine with xsltproc to create a single HTML file from an XML file. With the path changed to 'chunk.xsl', it has worked great to take a single XML file and chunk it out to 110+ individual HTML files. Anyway, here's a customization layer that works and I offer it for anyone else who wants to play with this stuff and learn more. Note that you will need to change the xsl:import statement to have the correct path to where Norm's XSL stylesheets are installed. Have fun, Dan P.S. Suggestions about improvements to the stylesheet are, of course, very welcome! -- Dan York, Director of Training dyork@e-smith.com Ph: +1-613-751-4401 Mobile: +1-613-263-4312 Fax: +1-613-564-7739 e-smith, inc. 150 Metcalfe St., Suite 1500, Ottawa,ON K2P 1P1 Canada http://www.e-smith.com/ open source, open mind
<?xml version="1.0"?> <!-- $Id: e-smith-chunk.xsl,v 1.1 2001/07/05 21:30:35 dyork Exp $ --> <!-- HTML Stylesheet for e-smith DocBook XML documents --> <xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0"> <xsl:import href="/usr/share/sgml/docbook-xsl-1.41/html/docbook.xsl"/> <xsl:template name="user.head.content"> <xsl:param name="node" select="."/> <meta name="generator" content="e-smith XSLT customization layer $Revision: 1.1 $"/> <xsl:comment> Generated by e-smith XSLT customization layer based on Norman Walsh's DocBook XSL stylesheets v1.40. More information at http://www.e-smith.org/docs/ </xsl:comment> </xsl:template> <!-- Should chapters be labeled? 0 or 1 --> <xsl:param name="chapter.autolabel" select="1"/> <!-- Should sections be labeled? 0 or 1 --> <xsl:param name="section.autolabel" select="1"/> <!-- Should chapter number be in section number? 1.1, 1.2, etc. 0 or 1 --> <xsl:param name="section.label.includes.component.label" select="1" doc:type="boolean"/> <!-- If 1, puts first section on separate page from Chapter page --> <xsl:param name="chunk.first.sections" select="'1'"/> <!-- To what depth (in sections) should the TOC go? --> <xsl:param name="toc.section.depth" select="2"/> <!-- Should graphics be used for admonitions (notes, warnings)? 0 or 1 --> <xsl:param name="admon.graphics" select="0"/> <!-- If 1 above, what is path to graphics? --> <xsl:param name="admon.graphics.path"> /usr/share/sgml/docbook-xsl-1.41/images </xsl:param> <!-- When chunking, use id attribute as filename? 0 or 1 --> <xsl:param name="use.id.as.filename" select="1"/> <!-- Put an horizontal rule above each question --> <xsl:template match="qandaentry"> <hr/> <div class="{name(.)}"> <xsl:apply-templates/> </div> </xsl:template> <!-- Custom 'emphasis' template to allow 'role="strong"' to also produce a bold item. --> <xsl:template match="emphasis"> <xsl:choose> <xsl:when test="@role='bold'"> <xsl:call-template name="inline.boldseq"/> </xsl:when> <xsl:when test="@role='strong'"> <xsl:call-template name="inline.boldseq"/> </xsl:when> <xsl:otherwise> <xsl:call-template name="inline.italicseq"/> </xsl:otherwise> </xsl:choose> </xsl:template> <!-- Custom 'programlisting' template that will generate a gray background to the item. --> <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> <xsl:if test="@id"> <a href="{$id}"/> </xsl:if> <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> <table border="0" bgcolor="#E0E0E0" width="90%"> <tr><td> <pre class="{name(.)}"> <xsl:call-template name="number.rtf.lines"> <xsl:with-param name="rtf" select="$rtf"/> </xsl:call-template> </pre> </td></tr></table> </xsl:when> <xsl:otherwise> <table border="0" bgcolor="#E0E0E0" width="90%"> <tr><td> <pre class="{name(.)}"> <xsl:apply-templates/> </pre> </td></tr></table> </xsl:otherwise> </xsl:choose> </xsl:template> </xsl:stylesheet>
[Date Prev] | [Thread Prev] | [Thread Next] | [Date Next] -- [Date Index] | [Thread Index] | [Elist Home]
Powered by eList eXpress LLC