Domanda

desidero fare alcune linee di una tabella di contenuti DocBook grassetto seconda che il particolare <section> ha un certo attributo definito. Questo è facile con l'aggiunta di una dichiarazione <xsl:if test="..."> al XSL DocBook (fo linee / autotoc.xsl 187-230 - questo è per l'uscita in PDF utilizzando XMLMind).

Mi chiedo, però, se si tratta di cattiva pratica di modificare il DocBook XSL stessi. Ho altre personalizzazioni in un XSL separata dei miei, impostazione dei parametri per lo più, ma non riesco a immaginare come avrei introdurre questa logica condizionale - in base al quale la linea del TOC è attualmente in fase di elaborazione - senza mettere una sorta di codice negli originali. qualche idea? Come si esegue l'aggiornamento a una nuova DocBook XSL dopo aver apportato modifiche?

È stato utile?

Soluzione

Import i fogli di stile DocBook dal proprio XSLT. Poi, (ri) definire il modello Docbook che si desidera "override".

Dal momento che il modello sarà il più alto nella struttura di importazione, si avrà la precedenza.

Per farlo in questo modo non c'è bisogno di modificare uno qualsiasi dei file core docbook XSLT. Si farà aggiornamenti del Docbook fogli di stile più facile in futuro.

<?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> 
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top