私は DocBook V5.0 ドキュメントを持っていますが、以前は 1 つの.docbook
ファイルに本全体が含まれていました。その時点で、生成された TOC は正常に見えました。ここで、入力を 4 つの異なる.docbook
ファイルにチャンクし、チャンクされた出力も必要です。
この変更の後、突然 2 つの問題が発生しました。
- TOCには、以前の完全な深さではなく、4 つのエントリ (.docbook ごとに 1 つ) しか含まれていません。
- 奇妙なことに、TOC の章番号は1、2、および 4 で、次に番号のない用語集です。
後者については、第2章を外すと1、2、用語集になるので、第2章の内容が原因で番号がずれているわけではないと思います。
とにかく、私の質問は、チャンク化された入力と出力を保持しながら、通常の外観の TOC を復元するにはどうすればよいかということです。(チャンキングは単一ファイルの深さに制限することもできます。つまり、1 つのファイルを入れて 1 つのファイルを出すこともできますが、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 から失われます。