【发布时间】:2015-08-15 10:03:26
【问题描述】:
我有一个 DocBook V5.0 文档,它曾经是一个包含整本书的 .docbook 文件。那时,生成的 TOC 看起来不错。现在,我已将输入分块到 4 个不同的 .docbook 文件中,并且还想要分块输出。
这个改动之后我突然有两个问题:
- TOC 仅包含四个条目(每个 .docbook 一个条目),而不是以前的全部深度
- 很奇怪,TOC 章节编号是1、2 和 4,然后是词汇表,它没有编号。
关于后者,如果我删除第二章,我会得到 1、2 和词汇表,所以我猜不是第二章的内容导致编号错误。
无论如何,我的问题是,如何在保留分块输入和输出的同时恢复正常的 TOC? (分块甚至可以限制为单文件深度,即一个文件输入,一个文件输出 - 但我希望 TOC 深度更高。)
我做了什么
我的主文件如下所示:
<!DOCTYPE book [
<!ENTITY a SYSTEM "a.docbook">
<!ENTITY b SYSTEM "b.docbook">
<!ENTITY c SYSTEM "c.docbook">
<!ENTITY glossary SYSTEM "glossary.docbook">
<!ENTITY larr "←">
<!ENTITY rarr "→">
<!ENTITY mdash "—">
]>
<book xmlns:xl="http://www.w3.org/1999/xlink">
<title>My Title</title>
&a;
&b;
&c;
&glossary;
</book>
我的 XSL 与以前相似,只是添加了一些分块控制选项(但对原始 TOC 选项没有更改):
<?xml version='1.0'?>
<xsl:stylesheet
xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
<xsl:import href="/usr/share/sgml/docbook/xsl-stylesheets/html/chunk.xsl"/>
<xsl:output method="html"
encoding="UTF-8"
indent="no"/>
<!--new--><xsl:param name="chunk.quietly" select="1"></xsl:param>
<!--new--><xsl:param name="chunker.output.encoding">UTF-8</xsl:param>
<!--new--><xsl:param name="html.extra.head.links" select="0"></xsl:param>
<xsl:param name="html.stylesheet" select="'main.css'"/>
<xsl:param name="generate.toc">
book toc,title
</xsl:param>
<xsl:param name="glossentry.show.acronym">yes</xsl:param>
<xsl:param name="glossary.sort" select="1"></xsl:param>
<!--new--><xsl:param name="use.id.as.filename" select="1"></xsl:param>
</xsl:stylesheet>
我的.docbook 文件看起来都是这样的:
一种 ...
glossary.doc 除外:
词汇表
现在,我意识到在一个章节中包含一个章节可能有点奇怪。这甚至可能是原因。但是,它会在没有警告的情况下进行验证,而且,如果我在给定文件 <section> 中创建最外层标记,则 TOC 中会丢失整个文件。
【问题讨论】:
标签: xml xslt tableofcontents docbook-5 docbook-xsl