DocBook XSL - 可以编辑原始样式表吗?

时间:2009-11-12 23:40:49

标签: xslt docbook

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

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

1 个答案:

答案 0 :(得分:9)

Import来自您自己的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>