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

car*_*tor 4 xslt docbook

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

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

Mad*_*sen 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> 
Run Code Online (Sandbox Code Playgroud)

  • 我可以推荐_DocBook XSL:Bob Stayton的完整指南 - 这是一个非常棒的资源.第9章包含自定义DocBook XSL样式表的说明:http://www.sagehill.net/docbookxsl/CustomMethods.html (3认同)