2009-11-12 4 views
4

Je voudrais faire certaines lignes d'une table des matières DocBook gras selon que le <section> particulier a un certain attribut défini. C'est facile en ajoutant une instruction <xsl:if test="..."> au DocBook XSL (lignes fo/autotoc.xsl 187-230 - ceci est pour la sortie en PDF en utilisant XMLMind).DocBook XSL - ok pour éditer les feuilles de style d'origine?

Je me demande, cependant, si elle est une mauvaise pratique pour modifier le DocBook se XSL. J'ai d'autres personnalisations dans un XSL séparé, principalement pour définir des paramètres, mais je ne peux pas imaginer comment j'introduirais cette logique conditionnelle - basée sur quelle ligne de la table des matières est actuellement en cours de traitement - sans mettre de code dans les originaux. Des pensées? Comment passer à un DocBook XSL plus récent après avoir apporté des modifications?

Répondre

9

Import les feuilles de style DocBook de votre propre XSLT. Ensuite, (re) définissez le modèle Docbook que vous souhaitez "remplacer".

Depuis votre modèle sera le plus haut dans l'arbre à l'importation, il aura la priorité.

En le faisant de cette façon vous ne devez pas modifier l'un des principaux fichiers XSLT DocBook. Il rendra les mises à jour des feuilles de style Docbook plus faciles à l'avenir.

<?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

génial, merci. – carillonator

+3

Je peux recommander _DocBook XSL: The Complete Guide_ par Bob Stayton qui est une ressource vraiment génial. Le chapitre 9 contient des instructions pour la personnalisation des feuilles de style DocBook XSL: http://www.sagehill.net/docbookxsl/CustomMethods.html –

Questions connexes