DocBook XSL - хорошо, чтобы редактировать оригинальные таблицы стилей? - PullRequest
4 голосов
/ 13 ноября 2009

Я хотел бы сделать определенные строки оглавления DocBook полужирным в зависимости от того, определен ли определенный <section> определенный атрибут. Это легко сделать, добавив оператор <xsl:if test="..."> в DocBook XSL (строки 187-230 для fo / autotoc.xsl - это для вывода в PDF с использованием XMLMind).

Мне интересно, если это плохая практика - редактировать сами DocBook XSL. У меня есть другие настройки в отдельном собственном XSL, в основном устанавливающие параметры, но я не могу себе представить, как бы я ввел эту условную логику - основанную на том, какая строка TOC в настоящее время обрабатывается - без добавления какого-либо кода в оригиналах. Какие-нибудь мысли? Как перейти на новую версию DocBook XSL после внесения изменений?

1 Ответ

9 голосов
/ 13 ноября 2009

Импорт таблиц стилей docbook из вашего собственного XSLT. Затем (пере) определите шаблон Docbook, который вы хотите «переопределить».

Поскольку ваш шаблон будет самым высоким в дереве импорта, он будет иметь приоритет.

Делая это таким образом, вам не нужно изменять какие-либо основные файлы XSLT docbook. Это облегчит обновление таблиц стилей 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> 
...