1<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
2                xmlns:exsl="http://exslt.org/common"
3                xmlns:cf="http://docbook.sourceforge.net/xmlns/chunkfast/1.0"
4		version="1.0"
5                exclude-result-prefixes="cf exsl">
6
7<!-- ********************************************************************
8     $Id: chunkfast.xsl,v 1.4 2005/08/04 07:03:47 bobstayton Exp $
9     ********************************************************************
10
11     This file is part of the XSL DocBook Stylesheet distribution.
12     See ../README or http://nwalsh.com/docbook/xsl/ for copyright
13     and other information.
14
15     ******************************************************************** -->
16
17<!-- ==================================================================== -->
18
19<xsl:import href="chunk.xsl"/>
20<xsl:param name="chunk.fast" select="1"/>
21
22<xsl:variable name="chunks" select="exsl:node-set($chunk.hierarchy)//cf:div"/>
23
24<!-- ==================================================================== -->
25
26<xsl:template name="process-chunk-element">
27  <xsl:choose>
28    <xsl:when test="$chunk.fast != 0 and function-available('exsl:node-set')">
29      <xsl:variable name="genid" select="generate-id()"/>
30
31      <xsl:variable name="div" select="$chunks[@id=$genid]"/>
32
33      <xsl:variable name="prevdiv"
34                    select="($div/preceding-sibling::cf:div|$div/preceding::cf:div|$div/parent::cf:div)[last()]"/>
35      <xsl:variable name="prev" select="key('genid', $prevdiv/@id)"/>
36
37      <xsl:variable name="nextdiv"
38                    select="($div/following-sibling::cf:div|$div/following::cf:div|$div/cf:div)[1]"/>
39      <xsl:variable name="next" select="key('genid', $nextdiv/@id)"/>
40
41      <xsl:choose>
42        <xsl:when test="$onechunk != 0 and parent::*">
43          <xsl:apply-imports/>
44        </xsl:when>
45        <xsl:otherwise>
46          <xsl:call-template name="process-chunk">
47            <xsl:with-param name="prev" select="$prev"/>
48            <xsl:with-param name="next" select="$next"/>
49          </xsl:call-template>
50        </xsl:otherwise>
51      </xsl:choose>
52    </xsl:when>
53    <xsl:otherwise>
54      <xsl:choose>
55        <xsl:when test="$onechunk != 0 and not(parent::*)">
56          <xsl:call-template name="chunk-all-sections"/>
57        </xsl:when>
58        <xsl:when test="$onechunk != 0">
59          <xsl:apply-imports/>
60        </xsl:when>
61        <xsl:when test="$chunk.first.sections = 0">
62          <xsl:call-template name="chunk-first-section-with-parent"/>
63        </xsl:when>
64        <xsl:otherwise>
65          <xsl:call-template name="chunk-all-sections"/>
66        </xsl:otherwise>
67      </xsl:choose>
68    </xsl:otherwise>
69  </xsl:choose>
70</xsl:template>
71
72</xsl:stylesheet>
73