2015-09-29 204 views
1

我想創建一個xslt樣式表來將(簡單)html轉換爲DOCBOOK(然後通過FO將其轉換爲PDF)。所有基本的格式化工作都很好。現在我想在文本中添加顏色。在HTML代碼如下所示:將彩色文本從HTML轉換爲DOCBOOK(並轉換爲PDF)

<span style="color: #eag000;">colored text</span> or 
<font color="#eag000">more colored text</font> 

我發現某些線程建議使用

<emphasis role="red">colored text</emphasis> 
DocBook中

,但我已經得到了顏色不只是「紅」,但一些隨機的十六進制值。

在DOCBOOK中獲得彩色文本的最佳方式是什麼(以便它可以被後來的FO轉換所識別)?完全可以實現這一點,而不需要修改DOCBOOK到FO的轉換?

感謝您的幫助!

回答

1

由於DocBook沒有記錄要用於元素的顏色的方法,因此我沒有看到如何在不修改DocBook-to-FO轉換的情況下獲得所需內容。

如果您想擴展DocBook以添加您自己的顏色屬性,您可以。請參閱「添加屬性」http://www.docbook.org/tdg5/en/html/ch05.html

(錯誤)使用role屬性可能更簡單也更常見,該屬性已被(幾乎)所有DocBook元素所允許。然後,您可以自定義樣式表,以使用role屬性中的顏色值做正確的事情。

1

有一個簡單的方法來創建一個DocBook XSL Stylesheets customization layer。所以你可以在DocBook XSL-FO樣式表的頂部創建一個這樣的圖層。首先,創建這個mystyles.xsl

<?xml version='1.0'?> 
<xsl:stylesheet 
    xmlns:xsl="http://www.w3.org/1999/XSL/Transform" 
    xmlns:fo="http://www.w3.org/1999/XSL/Format" 
    version="1.0"> 

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

<xsl:template match="emphasis[@role='red']"> 
    <fo:inline color="red"> 
    <xsl:apply-templates/> 
    </fo:inline> 
</xsl:template> 

然後,當你做DocBook-> FO變換,像這樣運行:

xsltproc --output myfile.html mystyles.xsl myfile.xml 

...其中mystyles.xsl是定製層樣式像一個是上面的文件,而myfile.xml是DocBook文檔,它來自您以前的HTML-> DocBook轉換。

當然,定製層中<xsl:import href="fo/docbook.xsl"/>行中的href值應該是系統上DocBook XSL樣式表的實際絕對路徑或相對路徑;例如,/usr/share/xml/docbook/stylesheet/docbook-xsl/fo/docbook.xsl