4

我想根据特定内容是否定义了某个属性,将 DocBook 目录的某些行加粗。<section>这很容易通过向<xsl:if test="...">DocBook XSL 添加一条语句(fo/autotoc.xsl 第 187-230 行——这是用于使用 XMLMind 输出到 PDF)。

不过,我想知道,自己编辑 DocBook XSL 是否是不好的做法。我在自己的单独 XSL 中进行了其他自定义,主要是设置参数,但我无法想象我将如何引入这个条件逻辑——基于当前正在处理的 TOC 的哪一行——而不放置某种代码在原件中。有什么想法吗?进行更改后如何升级到更新的 DocBook XSL?

4

1 回答 1

9

从您自己的 XSLT导入docbook 样式表。然后,(重新)定义要“覆盖”的 Docbook 模板。

由于您的模板将是导入树中的最高模板,因此它将优先。

通过这样做,您不必修改任何核心 docbook XSLT 文件。它将使 Docbook 样式表的升级在未来变得更加容易。

<?xml version="1.0" encoding="ISO-8859-1"?>
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">

<xsl:import href="xsl/fo/docbook.xsl"/>

<xsl:template match="template-that-you-need-to-redefine">
  ...
</xsl:template>

</xsl:stylesheet> 
于 2009-11-13T01:00:47.250 回答