OASIS Mailing List ArchivesView the OASIS mailing list archive below
or browse/search using MarkMail.

 


Help: OASIS Mailing Lists Help | MarkMail Help

docbook-apps message

[Date Prev] | [Thread Prev] | [Thread Next] | [Date Next] -- [Date Index] | [Thread Index] | [List Home]


Subject: RE: [docbook-apps] Importing titlepage.xsl breaks section headinglevel in html


Hi Bob,
I see now that I do also have a separate titlepage file that I generated using the titlepage templates mechanism. They do look similar inside so I don't feel so bad about having gotten confused :-)

This came up as a result of the way I do my customization layer: If I want to change a template in the stock xsls, I first copy the entire file that contains the template to my customization layer directory. I then make any changes to the template(s) in it. Now, when it comes time to upgrade, I do a three way diff comparing the unmodified xsl from the old base version, my modified version of it, and the latest version. This lets me see if I've changed a template that also changed between DocBook xsl releases so I can carefully merge my changes in with the changes in the stock xsls. 

In this case, I modified some templates in titlepage.xsl some time ago (perhaps I should have done that work within the titlepage templates mechanism) and eventually noticed that I wasn't getting anything but <h1>s in my html output. In chunked html, it's not so noticeable since you don't see a heading and a subheading on the same page. 

I'll be sure that I import titlepage.xsl before I import my generated titlepage-templates.xsl file from now on. 

Thanks,
David

-----Original Message-----
From: Bob Stayton [mailto:bobs@sagehill.net] 
Sent: Saturday, July 31, 2010 4:15 PM
To: Cramer, David W (David); docbook-apps@lists.oasis-open.org
Subject: Re: [docbook-apps] Importing titlepage.xsl breaks section heading level in html

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
bobs@sagehill.net


----- Original Message ----- 
From: "Cramer, David W (David)" <dcramer@motive.com>
To: <docbook-apps@lists.oasis-open.org>
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: docbook-apps-unsubscribe@lists.oasis-open.org
For additional commands, e-mail: docbook-apps-help@lists.oasis-open.org





[Date Prev] | [Thread Prev] | [Thread Next] | [Date Next] -- [Date Index] | [Thread Index] | [List Home]