[Date Prev] | [Thread Prev] | [Thread Next] | [Date Next] -- [Date Index] | [Thread Index] | [List Home]
Subject: Empty div tag in XHTML partintro throws CSS off
Hi. I'm using DocBook 5.0, stylesheets docbook-xsl-ns-1.76.1, and the
webhelp output which generates XHTML.
I noticed a CSS problem with the first XHTML chunk for a part. My book
is divided into parts. The parts have partintro elements but there are
no titles for the partintros. Nor anything else that might go into the
titlepage.
So I discovered that my CSS was being thrown off by the empty <div />
tag in the div for my partintro. The browser ended up thinking that
the header and navigation divs were children of the content div.
Hijinks ensue.
The offending code:
<div xmlns="" xmlns:d="http://docbook.org/ns/docbook"
class="partintro"
title="My Title">
<div />
<p xmlns="http://www.w3.org/1999/xhtml" class="body">This part is about...</p>
</div>
I added a comment at the end of the partintro:titlepage template to
prevent XHTML from writing the empty div element. I guess I could have
turned off the call to this template if it's not needed. But I don't
know all the situations in which it's needed.
This seems to work (I had to declare the exsl namespace in my
customization stylesheet).
<xsl:template name="partintro.titlepage">
<div>
<xsl:variable name="recto.content">
<xsl:call-template name="partintro.titlepage.before.recto"/>
<xsl:call-template name="partintro.titlepage.recto"/>
</xsl:variable>
<xsl:variable name="recto.elements.count">
<xsl:choose>
<xsl:when
test="function-available('exsl:node-set')"><xsl:value-of
select="count(exsl:node-set($recto.content)/*)"/></xsl:when>
<xsl:when test="contains(system-property('xsl:vendor'),
'Apache Software Foundation')">
<!--Xalan quirk--><xsl:value-of
select="count(exsl:node-set($recto.content)/*)"/></xsl:when>
<xsl:otherwise>1</xsl:otherwise>
</xsl:choose>
</xsl:variable>
<xsl:if test="(normalize-space($recto.content) != '') or
($recto.elements.count > 0)">
<div><xsl:copy-of select="$recto.content"/></div>
</xsl:if>
<xsl:variable name="verso.content">
<xsl:call-template name="partintro.titlepage.before.verso"/>
<xsl:call-template name="partintro.titlepage.verso"/>
</xsl:variable>
<xsl:variable name="verso.elements.count">
<xsl:choose>
<xsl:when
test="function-available('exsl:node-set')"><xsl:value-of
select="count(exsl:node-set($verso.content)/*)"/></xsl:when>
<xsl:when test="contains(system-property('xsl:vendor'),
'Apache Software Foundation')">
<!--Xalan quirk--><xsl:value-of
select="count(exsl:node-set($verso.content)/*)"/></xsl:when>
<xsl:otherwise>1</xsl:otherwise>
</xsl:choose>
</xsl:variable>
<xsl:if test="(normalize-space($verso.content) != '') or
($verso.elements.count > 0)">
<div><xsl:copy-of select="$verso.content"/></div>
</xsl:if>
<xsl:call-template name="partintro.titlepage.separator"/>
<xsl:comment>I prevent XHTML output from writing an empty div
tag.</xsl:comment>
</div>
</xsl:template>
Peter
[Date Prev] | [Thread Prev] | [Thread Next] | [Date Next] -- [Date Index] | [Thread Index] | [List Home]