]> granicus.if.org Git - docbook-dsssl/commitdiff
Calculate the heading level for bridgeheads
authorNorman Walsh <ndw@nwalsh.com>
Sat, 12 May 2001 21:26:45 +0000 (21:26 +0000)
committerNorman Walsh <ndw@nwalsh.com>
Sat, 12 May 2001 21:26:45 +0000 (21:26 +0000)
xsl/fo/sections.xsl
xsl/html/sections.xsl

index a544f08919c5291eb5a98b5f1e79f9f8ce19b168..29474183bebdbc18547313b8e30bf38472ffa7f9 100644 (file)
       <xsl:otherwise>10</xsl:otherwise>
     </xsl:choose>
   </xsl:variable>
-  <fo:block font-size="{$fsize}pt" 
+  <fo:block font-size="{$fsize}pt"
             font-weight="bold"
+            font-family="{$title.font.family}"
             space-before.minimum="1em"
             space-before.optimum="1.5em"
             space-before.maximum="2em">
 <!-- ==================================================================== -->
 
 <xsl:template match="bridgehead">
-  <!-- need to calculate depth! -->
-  <fo:block font-size="16pt" font-weight="bold">
-    <xsl:apply-templates/>
-  </fo:block>
+  <xsl:variable name="container"
+                select="(ancestor::appendix
+                        |ancestor::article
+                        |ancestor::bibliography
+                        |ancestor::chapter
+                        |ancestor::glossary
+                        |ancestor::glossdiv
+                        |ancestor::index
+                        |ancestor::partintro
+                        |ancestor::preface
+                        |ancestor::refsect1
+                        |ancestor::refsect2
+                        |ancestor::refsect3
+                        |ancestor::sect1
+                        |ancestor::sect2
+                        |ancestor::sect3
+                        |ancestor::sect4
+                        |ancestor::sect5
+                        |ancestor::section
+                        |ancestor::setindex
+                        |ancestor::simplesect)[last()]"/>
+
+  <xsl:variable name="clevel">
+    <xsl:choose>
+      <xsl:when test="local-name($container) = 'appendix'
+                      or local-name($container) = 'chapter'
+                      or local-name($container) = 'article'
+                      or local-name($container) = 'bibliography'
+                      or local-name($container) = 'glossary'
+                      or local-name($container) = 'index'
+                      or local-name($container) = 'partintro'
+                      or local-name($container) = 'preface'
+                      or local-name($container) = 'setindex'">2</xsl:when>
+      <xsl:when test="local-name($container) = 'glossdiv'">
+        <xsl:value-of select="count(ancestor::glossdiv)+2"/>
+      </xsl:when>
+      <xsl:when test="local-name($container) = 'sect1'
+                      or local-name($container) = 'sect2'
+                      or local-name($container) = 'sect3'
+                      or local-name($container) = 'sect4'
+                      or local-name($container) = 'sect5'
+                      or local-name($container) = 'refsect1'
+                      or local-name($container) = 'refsect2'
+                      or local-name($container) = 'refsect3'
+                      or local-name($container) = 'section'
+                      or local-name($container) = 'simplesect'">
+        <xsl:variable name="slevel">
+          <xsl:call-template name="section.level">
+            <xsl:with-param name="node" select="$container"/>
+          </xsl:call-template>
+        </xsl:variable>
+        <xsl:value-of select="$slevel + 1"/>
+      </xsl:when>
+      <xsl:otherwise>2</xsl:otherwise>
+    </xsl:choose>
+  </xsl:variable>
+
+  <xsl:variable name="level">
+    <xsl:choose>
+      <xsl:when test="@renderas = 'sect1'">2</xsl:when>
+      <xsl:when test="@renderas = 'sect2'">3</xsl:when>
+      <xsl:when test="@renderas = 'sect3'">4</xsl:when>
+      <xsl:when test="@renderas = 'sect4'">5</xsl:when>
+      <xsl:when test="@renderas = 'sect5'">6</xsl:when>
+      <xsl:otherwise>
+        <xsl:value-of select="$clevel"/>
+      </xsl:otherwise>
+    </xsl:choose>
+  </xsl:variable>
+
+  <xsl:call-template name="section.heading">
+    <xsl:with-param name="level" select="$level"/>
+    <xsl:with-param name="title">
+      <xsl:apply-templates/>
+    </xsl:with-param>
+  </xsl:call-template>
 </xsl:template>
 
 </xsl:stylesheet>
index aa5522e07cf9ba4d2259d666ff0ec3c1327d313c..3dee7dcce5738bb21413e0b4b0e9af591d66084c 100644 (file)
 <!-- ==================================================================== -->
 
 <xsl:template match="bridgehead">
-  <!-- need to calculate depth! -->
-  <h3><xsl:apply-templates/></h3>
+  <xsl:variable name="container"
+                select="(ancestor::appendix
+                        |ancestor::article
+                        |ancestor::bibliography
+                        |ancestor::chapter
+                        |ancestor::glossary
+                        |ancestor::glossdiv
+                        |ancestor::index
+                        |ancestor::partintro
+                        |ancestor::preface
+                        |ancestor::refsect1
+                        |ancestor::refsect2
+                        |ancestor::refsect3
+                        |ancestor::sect1
+                        |ancestor::sect2
+                        |ancestor::sect3
+                        |ancestor::sect4
+                        |ancestor::sect5
+                        |ancestor::section
+                        |ancestor::setindex
+                        |ancestor::simplesect)[last()]"/>
+
+  <xsl:variable name="clevel">
+    <xsl:choose>
+      <xsl:when test="local-name($container) = 'appendix'
+                      or local-name($container) = 'chapter'
+                      or local-name($container) = 'article'
+                      or local-name($container) = 'bibliography'
+                      or local-name($container) = 'glossary'
+                      or local-name($container) = 'index'
+                      or local-name($container) = 'partintro'
+                      or local-name($container) = 'preface'
+                      or local-name($container) = 'setindex'">2</xsl:when>
+      <xsl:when test="local-name($container) = 'glossdiv'">
+        <xsl:value-of select="count(ancestor::glossdiv)+2"/>
+      </xsl:when>
+      <xsl:when test="local-name($container) = 'sect1'
+                      or local-name($container) = 'sect2'
+                      or local-name($container) = 'sect3'
+                      or local-name($container) = 'sect4'
+                      or local-name($container) = 'sect5'
+                      or local-name($container) = 'refsect1'
+                      or local-name($container) = 'refsect2'
+                      or local-name($container) = 'refsect3'
+                      or local-name($container) = 'section'
+                      or local-name($container) = 'simplesect'">
+        <xsl:variable name="slevel">
+          <xsl:call-template name="section.level">
+            <xsl:with-param name="node" select="$container"/>
+          </xsl:call-template>
+        </xsl:variable>
+        <xsl:value-of select="$slevel + 1"/>
+      </xsl:when>
+      <xsl:otherwise>2</xsl:otherwise>
+    </xsl:choose>
+  </xsl:variable>
+
+  <xsl:variable name="level">
+    <xsl:choose>
+      <xsl:when test="@renderas = 'sect1'">2</xsl:when>
+      <xsl:when test="@renderas = 'sect2'">3</xsl:when>
+      <xsl:when test="@renderas = 'sect3'">4</xsl:when>
+      <xsl:when test="@renderas = 'sect4'">5</xsl:when>
+      <xsl:when test="@renderas = 'sect5'">6</xsl:when>
+      <xsl:otherwise>
+        <xsl:value-of select="$clevel"/>
+      </xsl:otherwise>
+    </xsl:choose>
+  </xsl:variable>
+
+  <xsl:element name="h{$level}">
+    <xsl:apply-templates/>
+  </xsl:element>
 </xsl:template>
 
 </xsl:stylesheet>