Hi David,
I'm not sure you have the right titlepages file. In the xhtml directory the docbook.xsl file imports titlepage.xsl and then titlepage.templates.xsl. In your example, you are importing titlepage.xsl again, not titlepage.templates.xsl. The titlepage.xsl file is mostly generic fallback templates, while titlepage.templates.xsl has the specifics for each element, and is the file that should be customized. So reimporting titlepage.xsl after titlepage.templates.xsl will indeed cause the specific templates to have a lower import precedence than the generic templates.

I think perhaps there are too many files with "titlepage" in the name (add in template/titlepage.xsl to this mix), and not enough clarity in the filename as to their distinctive purposes.

Bob Stayton
Sagehill Enterprises
[email protected]


----- Original Message ----- From: "Cramer, David W (David)" <[email protected]>
To: <[email protected]>
Sent: Saturday, July 31, 2010 1:51 PM
Subject: [docbook-apps] Importing titlepage.xsl breaks section heading level in 
html


Hi there,
I've notice some odd behavior in the DocBook xsls: If you import your titlepage xsl after importing the main docbook.xsl file, then all the headings for any section level are <h1>. However if you import the titlepage xsl first, then the headings are <h1>, <h2>, etc as you expect. I've put a minimal demo below. I'm mentioning it because the example customization layer here http://www.sagehill.net/docbookxsl/TitlePageGraphics.html has the titlepage imported after the docbook.xsl file and I've never seen instructions that you should import your titlepage before docbook.xsl. Is this by design or a bug?

Given the following test document:

<book>
 <title>Foo</title>
 <chapter>
<title>Chap</title>
<section>
 <title>sect1</title>
 <section>
   <title>sect2</title>
<section>
 <title>sect3</title>
 <section>
<title>sect4</title>
<para>Foo</para>
 </section>
</section>
 </section>
</section>
 </chapter>
</book>

With the following customization layer:

<xsl:stylesheet
 xmlns="http://www.w3.org/1999/xhtml";
 xmlns:xsl="http://www.w3.org/1999/XSL/Transform";
 version="1.0">

<xsl:import href="http://docbook.sourceforge.net/release/xsl/current/xhtml/docbook.xsl"/> <xsl:import href="http://docbook.sourceforge.net/release/xsl/current/xhtml/titlepage.xsl"/>

<!-- indent="yes" is just for the readability of the output and has no effect on test. -->
 <xsl:output indent="yes"/>

</xsl:stylesheet>

I get the the following output (notice that all the section headings are <h1> (e.g. <h1 class="title"><a id="d0e16"/>sect4</h1>):

<?xml version="1.0" encoding="UTF-8"?>

<!DOCTYPE html
PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd";>
<html xmlns="http://www.w3.org/1999/xhtml";>
  <head>
     <title>Foo</title>
     <meta name="generator" content="DocBook XSL Stylesheets V1.75.2"/>
  </head>
  <body>
     <div class="book" title="Foo">
        <div class="titlepage">
           <div>
              <div>
                 <h1 class="title">
                    <a id="d0e1"/>Foo</h1>
              </div>
           </div>
           <hr/>
        </div>
        <div class="toc">
           <p>
              <b>Table of Contents</b>
           </p>
           <dl>
              <dt>
                 <span class="chapter">
                    <a href="#d0e4">1. Chap</a>
                 </span>
              </dt>
              <dd>
                 <dl>
                    <dt>
                       <span class="section">
                          <a href="#d0e7">sect1</a>
                       </span>
                    </dt>
                    <dd>
                       <dl>
                          <dt>
                             <span class="section">
                                <a href="#d0e10">sect2</a>
                             </span>
                          </dt>
                       </dl>
                    </dd>
                 </dl>
              </dd>
           </dl>
        </div>
        <div class="chapter" title="Chapter 1. Chap">
           <div class="titlepage">
              <div>
                 <div>
                    <h1 class="title">
                       <a id="d0e4"/>Chap</h1>
                 </div>
              </div>
           </div>
           <div class="toc">
              <p>
                 <b>Table of Contents</b>
              </p>
              <dl>
                 <dt>
                    <span class="section">
                       <a href="#d0e7">sect1</a>
                    </span>
                 </dt>
                 <dd>
                    <dl>
                       <dt>
                          <span class="section">
                             <a href="#d0e10">sect2</a>
                          </span>
                       </dt>
                    </dl>
                 </dd>
              </dl>
           </div>
           <div class="section" title="sect1">
              <div class="titlepage">
                 <div>
                    <div>
                       <h1 class="title">
                          <a id="d0e7"/>sect1</h1>
                    </div>
                 </div>
              </div>
              <div class="section" title="sect2">
                 <div class="titlepage">
                    <div>
                       <div>
                          <h1 class="title">
                             <a id="d0e10"/>sect2</h1>
                       </div>
                    </div>
                 </div>
                 <div class="section" title="sect3">
                    <div class="titlepage">
                       <div>
                          <div>
                             <h1 class="title">
                                <a id="d0e13"/>sect3</h1>
                          </div>
                       </div>
                    </div>
                    <div class="section" title="sect4">
                       <div class="titlepage">
                          <div>
                             <div>
                                <h1 class="title">
                                   <a id="d0e16"/>sect4</h1>
                             </div>
                          </div>
                       </div>
                       <p>Foo</p>
                    </div>
                 </div>
              </div>
           </div>
        </div>
     </div>
  </body>
</html>

However if I reverse the order of the imports like so:

<xsl:stylesheet
 xmlns="http://www.w3.org/1999/xhtml";
 xmlns:xsl="http://www.w3.org/1999/XSL/Transform";
 version="1.0">

<xsl:import href="http://docbook.sourceforge.net/release/xsl/current/xhtml/titlepage.xsl"/> <xsl:import href="http://docbook.sourceforge.net/release/xsl/current/xhtml/docbook.xsl"/>

<!-- indent="yes" is just for the readability of the output and has no effect on test. -->
 <xsl:output indent="yes"/>

</xsl:stylesheet>

I get the expected output (notice <h5 class="title"><a xmlns:saxon="http://icl.com/saxon"; id="d0e16"/>sect4</h5>):

<?xml version="1.0" encoding="UTF-8"?>

<!DOCTYPE html
PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd";>
<html xmlns="http://www.w3.org/1999/xhtml";>
  <head>
     <title>Foo</title>
     <meta name="generator" content="DocBook XSL Stylesheets V1.75.2"/>
  </head>
  <body>
     <div class="book" title="Foo">
        <div class="titlepage">
           <div>
              <div>
                 <h1 class="title">
                    <a id="d0e1"/>Foo</h1>
              </div>
           </div>
           <hr/>
        </div>
        <div class="toc">
           <p>
              <b>Table of Contents</b>
           </p>
           <dl>
              <dt>
                 <span class="chapter">
                    <a href="#d0e4">1. Chap</a>
                 </span>
              </dt>
              <dd>
                 <dl>
                    <dt>
                       <span class="section">
                          <a href="#d0e7">sect1</a>
                       </span>
                    </dt>
                    <dd>
                       <dl>
                          <dt>
                             <span class="section">
                                <a href="#d0e10">sect2</a>
                             </span>
                          </dt>
                       </dl>
                    </dd>
                 </dl>
              </dd>
           </dl>
        </div>
        <div class="chapter" title="Chapter 1. Chap">
           <div class="titlepage">
              <div>
                 <div>
                    <h2 class="title">
<a xmlns:saxon="http://icl.com/saxon"; id="d0e4"/>Chapter 1. Chap</h2>
                 </div>
              </div>
           </div>
           <div class="toc">
              <p>
                 <b>Table of Contents</b>
              </p>
              <dl>
                 <dt>
                    <span class="section">
                       <a href="#d0e7">sect1</a>
                    </span>
                 </dt>
                 <dd>
                    <dl>
                       <dt>
                          <span class="section">
                             <a href="#d0e10">sect2</a>
                          </span>
                       </dt>
                    </dl>
                 </dd>
              </dl>
           </div>
           <div class="section" title="sect1">
              <div class="titlepage">
                 <div>
                    <div>
                       <h2 class="title" style="clear: both">
                          <a xmlns:saxon="http://icl.com/saxon"; 
id="d0e7"/>sect1</h2>
                    </div>
                 </div>
              </div>
              <div class="section" title="sect2">
                 <div class="titlepage">
                    <div>
                       <div>
                          <h3 class="title">
<a xmlns:saxon="http://icl.com/saxon"; id="d0e10"/>sect2</h3>
                       </div>
                    </div>
                 </div>
                 <div class="section" title="sect3">
                    <div class="titlepage">
                       <div>
                          <div>
                             <h4 class="title">
<a xmlns:saxon="http://icl.com/saxon"; id="d0e13"/>sect3</h4>
                          </div>
                       </div>
                    </div>
                    <div class="section" title="sect4">
                       <div class="titlepage">
                          <div>
                             <div>
                                <h5 class="title">
<a xmlns:saxon="http://icl.com/saxon"; id="d0e16"/>sect4</h5>
                             </div>
                          </div>
                       </div>
                       <p>Foo</p>
                    </div>
                 </div>
              </div>
           </div>
        </div>
     </div>
  </body>
</html>

Thanks,
David

---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]




---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to