This is the mail archive of the
docbook-apps@lists.oasis-open.org
mailing list .
Example of an XSL customization layer
- To: docbook-apps at lists dot oasis-open dot org
- Subject: DOCBOOK-APPS: Example of an XSL customization layer
- From: Dan York <dyork at e-smith dot com>
- Date: Fri, 13 Jul 2001 09:48:52 -0400
- Organization: e-smith, Inc.
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>