This is the mail archive of the
docbook-apps@lists.oasis-open.org
mailing list .
Re: Chunk wish
Hi,
I've customized the following templates, so that it chunks chapter by chapter.
However this patch is specific to my need...
BG
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
version='1.0'>
<xsl:import href="/path-to-docbook-1.34/html/xtchunk.xsl"/>
<xsl:output method="html" encoding="ISO-8859-1"/>
<xsl:param name="base.dir">/the-base-dir/</xsl:param>
<xsl:param name="tablecolumns.extension">0</xsl:param>
<xsl:template name="process-chunk-element">
<xsl:variable name="root" select="count(parent::*) > 0"/>
<xsl:variable name="prev"
select="(preceding::book[1]
|preceding::preface[1]
|preceding::chapter[1]
|preceding::appendix[1]
|preceding::part[1]
|preceding::reference[1]
|preceding::refentry[1]
|preceding::colophon[1]
|preceding::article[1]
|preceding::bibliography[1]
|preceding::glossary[1]
|preceding::index[1]
|preceding::setindex[1]
|ancestor::set
|ancestor::book[1]
|ancestor::preface[1]
|ancestor::chapter[1]
|ancestor::appendix[1]
|ancestor::part[1]
|ancestor::reference[1]
|ancestor::article[1])[last()]"/>
<xsl:variable name="next"
select="(following::book[1]
|following::preface[1]
|following::chapter[1]
|following::appendix[1]
|following::part[1]
|following::reference[1]
|following::refentry[1]
|following::colophon[1]
|following::bibliography[1]
|following::glossary[1]
|following::index[1]
|following::article[1]
|following::setindex[1]
|descendant::book[1]
|descendant::preface[1]
|descendant::chapter[1]
|descendant::appendix[1]
|descendant::article[1]
|descendant::bibliography[1]
|descendant::glossary[1]
|descendant::index[1]
|descendant::colophon[1]
|descendant::setindex[1]
|descendant::part[1]
|descendant::reference[1]
|descendant::refentry[1])[1]"/>
<xsl:variable name="ischunk">
<xsl:call-template name="chunk"/>
</xsl:variable>
<xsl:variable name="chunkfn">
<xsl:if test="$ischunk='1'">
<xsl:apply-templates mode="chunk-filename" select="."/>
</xsl:if>
</xsl:variable>
<xsl:if test="$ischunk='0'">
<xsl:message>
<xsl:text>Error </xsl:text>
<xsl:value-of select="name(.)"/>
<xsl:text> is not a chunk!</xsl:text>
</xsl:message>
</xsl:if>
<xsl:variable name="filename">
<xsl:call-template name="make-relative-filename">
<xsl:with-param name="base.dir" select="$base.dir"/>
<xsl:with-param name="base.name" select="$chunkfn"/>
</xsl:call-template>
</xsl:variable>
<xsl:message>
<xsl:text>Writing </xsl:text>
<xsl:value-of select="$filename"/>
<xsl:text> for </xsl:text>
<xsl:value-of select="name(.)"/>
</xsl:message>
<xsl:call-template name="write.chunk">
<xsl:with-param name="filename" select="$filename"/>
<xsl:with-param name="content">
<xsl:call-template name="chunk-element-content">
<xsl:with-param name="prev" select="$prev"/>
<xsl:with-param name="next" select="$next"/>
</xsl:call-template>
</xsl:with-param>
</xsl:call-template>
</xsl:template>
<xsl:template match="sect1">
<xsl:variable name="id">
<xsl:call-template name="object.id"/>
</xsl:variable>
<div class="{name(.)}">
<a name="{$id}"/>
<xsl:call-template name="sect1.titlepage"/>
<xsl:if test="$generate.section.toc != '0'
or refentry">
<xsl:call-template name="section.toc"/>
</xsl:if>
<xsl:apply-templates/>
</div>
</xsl:template>
</xsl:stylesheet>