2015-09-29 2 views
1

Я хотел бы создать таблицу стилей xslt для преобразования (простого) html в DOCBOOK (который затем будет преобразован PDF через FO). Все основное форматирование работает хорошо. Теперь я хочу иметь цвета в тексте. 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-to-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.

И, конечно, значение href в строке <xsl:import href="fo/docbook.xsl"/> в вашем уровне настройки должно быть фактическим абсолютным или относительным путем к таблицам стилей DocBook XSL на вашей системе; например, /usr/share/xml/docbook/stylesheet/docbook-xsl/fo/docbook.xsl.

Смежные вопросы