我正在尝试自定义DocBook XSL的HTML输出。
<section>
级别X生成标题级别X + 1.
e.g。 <sect1>
- &gt; <h2>
但我使用的是<section>
代码,而不是<sectX>
。我理解它为什么会发生,但我想改变这种行为,以便给定级别的部分生成相同级别的标题。我尝试过研究标题页模板,但它们对我来说没有意义,我找不到生成<hX>
标签的实际代码。
作为一个例子,我有一个看起来像这样的docbook文档:
<article xmlns="http://docbook.org/ns/docbook" xmlns:xlink="http://www.w3.org/1999/xlink"
[other namespace definitions]
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://docbook.org/ns/docbook docbook.xsd" version="5.0">
<info>
<title>Document Title</title>
<orgname>Company</orgname>
</info>
<section>
<title>INTRODUCTION</title>
<section>
<title>Overview</title>
<para>This document defines [...]</para>
</section>
<section>
<title>More Information</title>
<para>[...]</para>
</section>
<section>
<title>Aim</title>
<para>This Document will be used to [...]</para>
<table>
[irrelevant table code]
</table>
</section>
<section>
<title>Related Documents</title>
<para>[...]</para>
</section>
</section>
<section>
<title>ANOTHER SECTION</title>
<para>This section provides [...]</para>
</section>
</article>
这将生成以下HTML代码:
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Document Title</title>
<meta name="generator" content="DocBook XSL-NS Stylesheets V1.76.1">
<link rel="stylesheet" href="style.css" type="text/css">
<link rel="stylesheet" href="print.css" type="text/css" media="print">
<!--[if IE]>
<link type="text/css" rel="stylesheet" href="ie.css">
<![endif]-->
</head>
<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
<div class="article" title="Document Title">
<div class="titlepage">
<div>
<div>
<h1 class="title"><a name="d0e1"></a>Document Title</h1>
</div>
</div>
<hr>
</div>
<div class="toc">
<p>
<b>Table of Contents</b>
</p>
<dl>
<dt><span class="section"><a href="#d0e7">INTRODUCTION</a></span></dt>
<dd>
<dl>
<dt><span class="section"><a href="#d0e10">Overview</a></span></dt>
<dt><span class="section"><a href="#d0e15">More Information</a></span></dt>
<dt><span class="section"><a href="#d0e20">Aim</a></span></dt>
<dt><span class="section"><a href="#d0e48">Related Documents</a></span></dt>
</dl>
</dd>
<dt><span class="section"><a href="#d0e53">ANOTHER SECTION</a></span></dt>
</dl>
</div>
<div class="section" title="INTRODUCTION">
<div class="titlepage">
<div>
<div>
<h2 class="title" style="clear: both"><a name="d0e7"></a>INTRODUCTION</h2>
</div>
</div>
</div>
<div class="section" title="Overview">
<div class="titlepage">
<div>
<div>
<h3 class="title"><a name="d0e10"></a>Overview</h3>
</div>
</div>
</div>
<p>
This document defines [...]
</p>
</div>
<div class="section" title="More Information">
<div class="titlepage">
<div>
<div>
<h3 class="title"><a name="d0e15"></a>More Information</h3>
</div>
</div>
</div>
<p>
[...]
</p>
</div>
<div class="section" title="Aim">
<div class="titlepage">
<div>
<div>
<h3 class="title"><a name="d0e20"></a>Aim</h3>
</div>
</div>
</div>
<p>
This Document will be used to [...]
</p>
<div class="table">
[irrelevant table code]
</div>
<br class="table-break">
</div>
<div class="section" title="Related Documents">
<div class="titlepage">
<div>
<div>
<h3 class="title"><a name="d0e48"></a>Related Documents</h3>
</div>
</div>
</div>
<p>
[...]
</p>
</div>
</div>
<div class="section" title="ANOTHER SECTION">
<div class="titlepage">
<div>
<div>
<h2 class="title" style="clear: both"><a name="d0e53"></a>ANOTHER SECTION</h2>
</div>
</div>
</div>
<p>
This section provides [...]
</p>
</div>
</div>
</body>
</html>
谢谢!
〜Slampisko
答案 0 :(得分:3)
在 sections.xsl 中创建名为“section.heading”的模板的自定义。以下是该模板的摘录。您只需将$level + 1
更改为$level
。
<!-- HTML H level is one higher than section level -->
<xsl:variable name="hlevel">
<xsl:choose>
<!-- highest valid HTML H level is H6; so anything nested deeper
than 5 levels down just becomes H6 -->
<xsl:when test="$level > 5">6</xsl:when>
<xsl:otherwise>
<xsl:value-of select="$level + 1"/>
</xsl:otherwise>
</xsl:choose>
</xsl:variable>
<xsl:element name="h{$hlevel}">
<xsl:attribute name="class"><xsl:value-of select="$class"/></xsl:attribute>
<xsl:if test="$css.decoration != '0'">
<xsl:if test="$hlevel<3">
<xsl:attribute name="style">clear: both</xsl:attribute>
</xsl:if>
</xsl:if>
<xsl:if test="$allow-anchors != 0 and $generate.id.attributes = 0">
<xsl:call-template name="anchor">
<xsl:with-param name="node" select="$section"/>
<xsl:with-param name="conditional" select="0"/>
</xsl:call-template>
</xsl:if>
<xsl:if test="$generate.id.attributes != 0 and not(local-name(.) = 'appendix')">
<xsl:attribute name="id"><xsl:value-of select="$id"/></xsl:attribute>
</xsl:if>
<xsl:copy-of select="$title"/>
</xsl:element>
答案 1 :(得分:0)
如输出中所示,(HTML)文档标题采用<h1>
标记。因此,顶部(HTML)部分标题以<h2>
开头。
如果要更改它,则需要自定义XSL文件。