我想根据特定属性是否定义某个属性,使DocBook目录的某些行变为粗体<section>.通过向<xsl:if test="...">DocBook XSL 添加语句(fo/autotoc.xsl第187-230行 - 这是使用XMLMind输出到PDF)很容易.
不过,我想知道编辑DocBook XSL本身是不好的做法.我在自己的单独XSL中有其他自定义,主要是设置参数,但我无法想象我将如何引入此条件逻辑 - 基于当前正在处理TOC的哪一行 - 而不需要放置某种代码在原件中.有什么想法吗?如何在进行更改后升级到较新的DocBook XSL?
从您自己的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>
Run Code Online (Sandbox Code Playgroud)