2009-11-12 60 views
4

我想根據特定的<section>是否具有定義的某個屬性來製作DocBook目錄表加粗的某些行。通過在DocBook XSL中添加<xsl:if test="...">語句(fo/autotoc.xsl第187-230行 - 這用於使用XMLMind輸出爲PDF),很容易。DocBook XSL - 確定編輯原始樣式表?

我在想,但是,如果這是不好的做法,自己編輯DocBook XSLs。我在我自己的一個單獨的XSL中進行了其他自定義設置,主要是設置參數,但我無法想象如何引入此條件邏輯 - 基於目前正在處理TOC的哪一行 - 無需添加某種代碼在原件。有什麼想法嗎?如何在進行更改後升級到較新的DocBook XSL?

回答

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> 
+0

太棒了,謝謝。 – carillonator 2009-11-13 06:42:33

+3

我可以推薦_DocBook XSL:由Bob Stayton完成的指南,這是一個非常棒的資源。第9章包含自定義DocBook XSL樣式表的說明:http://www.sagehill.net/docbookxsl/CustomMethods.html – 2009-11-13 08:30:40