Usually you can control the class attributes in HTML output by creating
custom templates in mode="class.value" for each element, as described here:
http://www.sagehill.net/docbookxsl/HtmlCustomEx.html#CustomClassValues
Tables are a bit funny, it seems, because of the multiple wrapper layers
that are added for things like landscape. HTML source tables also
differ by copying through the class attribute on the source table to the
output table. When I use this template on a captioned source table with
class="tabular":
<xsl:template match="d:table" mode="class.value">
<xsl:text>tabular-wrapper</xsl:text>
</xsl:template>
I get this result:
<div class="tabular-wrapper">
<title>...
<div class="tabular-wrapper-contents">
<table class="tabular">
If you need further control, you'll have to customize some of the
internal table templates.
Bob Stayton
[email protected]
On 8/29/2019 6:27 AM, Tim Arnold wrote:
Hi,
I'm converting DocBook 5 to html (docbook-xsl-1.79.2) with a
customization layer.
I now need to wrap my table elements inside a div with a particular
class (say 'tabular-wrapper' for example).
My tables in the DocBook XML source are HTML tables.
Currently the tables are rendered by the stylesheet as:
<div id="the_id" class="">
<div class="-contents">
<table class="tabular"> ... </table>
</div>
</div>
I want the tables to look like this:
<div id="the_id" class="tabular-wrapper">
<div class="-contents">
<table class="tabular"> ... </table>
</div>
</div>
or perhaps
<div id="the_id" class="">
<div class="-contents tabular-wrapper">
<table class="tabular"> ... </table>
</div>
</div>
It appears that the $class variable the formal.xsl stylesheet
(htmlTable.with.caption template) refers to is blank.
<div class="{$class}">
As a last resort, I can copy the template into my customization layer
with appropriate edits.
My question is whether that is the best I can do?
Or is there a way to populate the $class variable just for tables?
thanks for any ideas!
--Tim