| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221 | <xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"                xmlns:exsl="http://exslt.org/common"                xmlns:xlink="http://www.w3.org/1999/xlink"                xmlns="http://docbook.org/ns/docbook"		version="1.0"                exclude-result-prefixes="exsl"><!-- ********************************************************************     $Id: topic-maker-chunk.xsl,v 1.7 2012-04-16 00:29:35 bobs Exp $     ********************************************************************--><xsl:import href="topic-maker.xsl"/><xsl:import href="../xhtml/chunk-common.xsl"/><xsl:include href="../xhtml/chunk-code.xsl"/><xsl:param name="root.id.suffix">-info</xsl:param><xsl:param name="root.as.resourceref" select="1"/><xsl:template match="/" priority="1">  <xsl:apply-templates select="/" mode="process.root"/>  <xsl:call-template name="make.assembly"/></xsl:template><xsl:template name="chunk-element-content">  <xsl:param name="content">    <xsl:apply-imports/>  </xsl:param>  <xsl:copy-of select="$content"/></xsl:template><xsl:template name="make.assembly">  <xsl:variable name="content">    <assembly xmlns:xlink="http://www.w3.org/1999/xlink">      <xsl:call-template name="make.resources"/>      <xsl:call-template name="make.structure"/>    </assembly>  </xsl:variable>  <xsl:variable name="filename">    <xsl:if test="$manifest.in.base.dir != 0">      <xsl:value-of select="$base.dir"/>    </xsl:if>    <xsl:value-of select="$assembly.filename"/>  </xsl:variable>  <xsl:call-template name="write.chunk">    <xsl:with-param name="content" select="$content"/>    <xsl:with-param name="filename" select="$filename"/>    <xsl:with-param name="indent">yes</xsl:with-param>  </xsl:call-template></xsl:template><xsl:template name="make.structure">  <xsl:param name="root" select="/*[1]"/>  <xsl:param name="root.resourceref">    <xsl:call-template name="object.id">      <xsl:with-param name="object" select="$root"/>    </xsl:call-template>  </xsl:param>  <xsl:choose>    <xsl:when test="$root.as.resourceref = 0">      <structure>        <xsl:attribute name="type">          <xsl:value-of select="local-name($root)"/>        </xsl:attribute>        <xsl:attribute name="xml:id">          <xsl:value-of select="$root.resourceref"/>        </xsl:attribute>            <xsl:copy-of select="($root/title | $root/info/title)[1]"/>            <!-- Put the title and info stuff in a content-only module -->        <module resourceref="{$root.resourceref}{$root.id.suffix}" contentonly="true"/>        <xsl:apply-templates select="$root/*" mode="module.list"/>      </structure>    </xsl:when>    <xsl:otherwise>      <structure>        <xsl:attribute name="resourceref">          <xsl:value-of select="$root.resourceref"/>        </xsl:attribute>        <output renderas="{local-name($root)}"/>        <xsl:apply-templates select="$root/*" mode="module.list"/>      </structure>    </xsl:otherwise>  </xsl:choose></xsl:template><xsl:template match="*" mode="module.list">  <xsl:variable name="is.chunk">    <xsl:call-template name="chunk">      <xsl:with-param name="node" select="."/>    </xsl:call-template>  </xsl:variable>  <!-- generate an output element for renderas? -->  <xsl:variable name="src.element" select="concat(' ', local-name(.), ' ')"/>  <xsl:variable name="is.topic">    <xsl:choose>      <xsl:when test="contains($topic.list, $src.element)">1</xsl:when>      <xsl:otherwise>0</xsl:otherwise>    </xsl:choose>  </xsl:variable>  <xsl:if test="$is.chunk = 1">    <module>      <xsl:attribute name="resourceref">        <xsl:call-template name="object.id"/>      </xsl:attribute>      <xsl:if test="$is.topic = 1">        <output renderas="{local-name()}"/>      </xsl:if>      <xsl:apply-templates select="*" mode="module.list"/>    </module>  </xsl:if></xsl:template><xsl:template name="make.resources">  <resources>    <!-- Add xml:base from $base.dir if manifest not in base.dir -->    <xsl:if test="string-length($base.dir) != 0 and                  $manifest.in.base.dir = 0">      <xsl:attribute name="xml:base">        <!-- strip off trailing slash for xml:base -->        <xsl:choose>          <xsl:when test="substring($base.dir, string-length($base.dir),1) = '/'">            <xsl:value-of select="substring($base.dir, 1, string-length($base.dir) -1)"/>          </xsl:when>          <xsl:otherwise>            <xsl:value-of select="$base.dir"/>          </xsl:otherwise>        </xsl:choose>      </xsl:attribute>    </xsl:if>    <xsl:apply-templates select="/*[1]" mode="resource.list"/>  </resources></xsl:template><xsl:template match="*" mode="resource.list">  <xsl:variable name="is.chunk">    <xsl:call-template name="chunk">      <xsl:with-param name="node" select="."/>    </xsl:call-template>  </xsl:variable>  <xsl:if test="$is.chunk = 1">    <resource>      <xsl:attribute name="fileref">        <!--        <xsl:if test="$manifest.in.base.dir = 0">          <xsl:value-of select="$base.dir"/>        </xsl:if>        -->        <xsl:apply-templates select="." mode="chunk-filename"/>      </xsl:attribute>      <xsl:attribute name="xml:id">        <xsl:call-template name="object.id"/>      </xsl:attribute>      <xsl:variable name="title">        <xsl:apply-templates select="." mode="title.markup"/>      </xsl:variable>      <xsl:if test="string-length($title) != 0">        <description>          <xsl:value-of select="$title"/>        </description>      </xsl:if>    </resource>  </xsl:if>  <xsl:apply-templates select="*" mode="resource.list"/></xsl:template><!-- special case for root id on structure element --><xsl:template match="/*" mode="resource.list">  <xsl:param name="root.resourceref">    <xsl:call-template name="object.id">      <xsl:with-param name="object" select="."/>    </xsl:call-template>  </xsl:param>  <resource>    <xsl:attribute name="fileref">      <xsl:apply-templates select="." mode="chunk-filename"/>    </xsl:attribute>    <xsl:attribute name="xml:id">      <xsl:choose>        <xsl:when test="$root.as.resourceref = 0">          <xsl:value-of select="concat($root.resourceref,$root.id.suffix)"/>        </xsl:when>        <xsl:otherwise>          <xsl:value-of select="$root.resourceref"/>        </xsl:otherwise>      </xsl:choose>    </xsl:attribute>  </resource>  <xsl:apply-templates select="*" mode="resource.list"/></xsl:template><!-- This one must be here because of the template in chunk-code.xsl --><xsl:template match="@fileref" priority="1">    <xsl:copy-of select="."/></xsl:template></xsl:stylesheet>
 |