Comment introduire du CSS personnalisé dans un gabarit de transformation ?
Les gabarits par défaut des fiches s’appuient sur xslt/v2/transformations/html/fiche.xsl
et celui de la compilation sur xslt/v2/transformations/odt/compilation.xsl
.
Lorsqu’on crée un nouveau gabarit HTML, le fichier extraction.xsl
proposé initialement correspond au gabarit par défaut et donc s’appuie également sur une de ces deux feuilles de styles (via l’instruction <xsl:include href="bdf://this/xslt/v2/transformations/html/fiche.xsl"/>
ou <xsl:include href="bdf://this/xslt/v2/transformations/html/compilation.xsl"/>
pour une compilation).
Ces deux feuilles de style se chargent notamment de construire l’élément <head>
du document HTML final où sont stockés toutes les déclarations de style. Elles proposent trois mécanismes différents pour indiquer ses propres règles CSS :
Le fichier custom/fiche.css
Ce fichier est présent dans les ressources de la distribution et il est vide. On peut le modifier librement et les règles décrites s’appliqueront à tous les gabarits : ceux des fiches, des compilations, ceux par défaut et ceux s’appuyant sur les deux feuilles de styles.
Le fichier custom/import.xsl
Les deux feuilles de style possèdent l’instruction d’import <xsl:import href="bdf://this/xslt/v2/transformations/html/_common.xsl"/>
qui charge la feuille de style xslt/v2/transformations/html/_common.xsl
qui, elle-même, inclut le fichier custom/import.xsl
.
Ce dernier fichier comprend la règle suivante <xsl:template match="/" mode="custom-Head">
qui est vide. Cette règle est appelée par les deux feuilles de style au moment de la construction de l’élément <head>
final.
On voit donc que cette règle <xsl:template match="/" mode="custom-Head">
peut être réécrite pour introduire de nouveaux éléments dans le <head>
final, notamment des éléments <style>
.
Comme pour custom/fiche.css
, les modifications de custom/import.xsl
concernent tous les gabarit qui s’appuient sur les deux feuilles de style, que ce soit le gabarit par défaut.
La règle <xsl:template match="/" mode="_Head">
Les deux feuilles de style possèdent une règle vide <xsl:template match="/" mode="_Head">
qui est appelée juste avant la fermeture </head>
.
Il suffit de surcharger cette règle dans le fichier extraction.xsl
de son gabarit personnalisé pour rajouter les éléments de son choix.
<xsl:template match="/" mode="_Head" priority="2">
<style>
h1 {
text-align: center;
font-size: 2rem;
}
</style>
</xsl:template>
Alternative : ignorer les feuilles de style
Le passage par les feuilles de style xslt/v2/transformations/html/fiche.xsl
et xslt/v2/transformations/odt/compilation.xsl
n’est nullement obligatoire. On peut se contenter d’inclure xslt/v2/transformations/html/_common.xsl
.
Il faut alors écrire dans son gabarit la règle <xsl:template match="/">
qui va servir à construire l’élément <html>
. Dans cette situation, la liberté est totale.