Cette section s'adresse aux développeurs de feuilles de style XSL. Vous trouverez ici des informations importantes expliquant comment créer une feuille de style adaptée à Calenco.
fc-query permet d'obtenir des informations sur un fichier de police :
fc-query font.ttf
Les informations nécessaires à son utilisation sont affichiés :
font-family
family: "Univers-Black"(s) [...] style: "Regular"(s) [...] lang: aa|ay|bi|br|bs|ca|ch|co|cs|da|de|en|es|et|eu|fi|fj|fo|fr|fur|fy|gd|gl|gv|ho|hr|hu|ia|id|ie|io|is|it|lb|mg|nb|nds|nl|nn|no|nr|nso|oc|om|pl|pt|rm|sk|sl|sma|smj|so|sq|ss|st|sv|sw|tk|tl|tn|tr|ts|uz|vo|vot|wa|wen|xh|yap|zu|an|crh|csb|fil|hsb|ht|jv|kj|ku-tr|kwm|li|ms|ng|pap-an|pap-aw|rn|rw|sc|sg|sn|su|za(s)
Si la police n'est a priori pas libre de droits, il est préférable de rappeler au client que c'est lui qui diffuse les documents utilisant cette police et donc, c'est de sa responsabilité.
Pour s'intégrer correctement dans l'écosystème de Calenco, le XSL personnalisé doit suivre certaines règles. Nous allons détailler ces dernières dans les sections suivantes pour les formats XML spécifiquement supportés par Calenco.
Calenco utilise la version 1.75.2 des feuilles de style DocBook. Les instructions fournies dans cette section sont valables pour tous les formats DocBook supportés par Calenco.
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:fo="http://www.w3.org/1999/XSL/Format" xmlns:xlink='http://www.w3.org/1999/xlink' xmlns:exsl="http://exslt.org/common" xmlns:date="http://exslt.org/dates-and-times" xmlns:db="http://docbook.org/ns/docbook" exclude-result-prefixes="xlink" version='1.0'> <!-- Import standard --> <xsl:import href="http://docbook.sourceforge.net/release/xsl-ns/current/fo/profile-docbook.xsl"/> <?cco_xsltype addon="DocBook5.0" toolchain="DocBook_to_PDF_FOP"?> <?cco_xsltype addon="DocBook5.0" toolchain="DocBook_to_RTF_FOP"?> <?cco_xsltype addon="DocBook5.0" toolchain="DocBook_to_PS_FOP"?> <!-- DocBook XSL Parameters --> <xsl:param name="fop1.extensions" select="1"></xsl:param> <xsl:param name="paper.type">A4</xsl:param> </xsl:stylesheet>
Dans cet exemple, nous importons la feuille de style standard de profilage pour une sortie FO, puis nous déclarons que ce XSL personnalisé peut être utilisé pour les sorties PDF, RTF et PostScript. Ensuite nous indiquons dans la feuille de style qu'il faut utiliser les extensions FOP (le processeur FO par défaut dans Calenco) et le format A4 pour le papier.
Ce fichier (vous pouvez l'appeler
My_Custom_Style_for_PDF.xsl
) doit être stocké
dans la langue “International” de votre espace de
travail. Il apparaîtra ensuite dans la liste des feuilles de style
lorsque vous créerez une nouvelle publication PDF, PostScript ou
RTF.
Vous trouverez également des informations sur les sites dédiés à la personnalisation des feuilles de style DocBook suivants :
Pour être utilisée dans une publication, une feuille de style doit être déclarée pour être associée à une toolchain spécifique (par exemple, la sortie PDF d'un document DocBook 5).
Pour associer une feuille de style à une toolchain, vous devez ajouter les instructions de transformation suivantes dans le fichier XSL :
<?cco_xsltype addon="DocBook5.0" toolchain="DocBook_to_PDF_FOP"?>
addon="DocBook5.0" |
Import XSL correspondant |
---|---|
toolchain="DocBook_to_PDF_FOP" |
http://docbook.sourceforge.net/release/xsl-ns/current/fo/profile-docbook.xsl |
toolchain="DocBook_to_PDF_XEP" |
|
toolchain="DocBook_Screen_Diff" |
|
toolchain="DocBook_Screen_Single" |
|
toolchain="DocBook_Screen_Chunk" |
|
toolchain="DocBook_HTML5_Chunk" |
Important : utilise la version bêta des feuilles de style DocBook 2.0. Si possible, utiliser plutôt le XHTML5 de "DocBook_Screen_Chunk" (DocBook XSL 1.78.1). http://docbook.github.com/release/2.0.3/xslt/base/html/chunk.xsl |
toolchain="DocBook_Screen_WebHelp" |
Important : privilégier plutôt "DocBook_Screen_WebHelp_1.78.1". http://docbook.sourceforge.net/release/xsl/current/webhelp/xsl/webhelp.xsl |
toolchain="DocBook_Screen_WebHelp_1.78.1" |
http://docbook.sourceforge.net/release/xsl-ns/1.78.1/webhelp/xsl/webhelp.xsl |
toolchain="DocBook_to_RTF_FOP" |
Important : privilégier plutôt "DocBook_to_RTF_XFC". http://docbook.sourceforge.net/release/xsl-ns/current/fo/profile-docbook.xsl |
toolchain="DocBook_to_PS_FOP" |
http://docbook.sourceforge.net/release/xsl-ns/current/fo/profile-docbook.xsl |
toolchain="DocBook_ODP" |
Important : a été développé pour une commande spécifique. Ne peut être utilisée pour un usage général. http://www.calenco.com/xsl/docbook/odp/odp.xsl |
toolchain="DocBook_to_CHM" |
http://docbook.sourceforge.net/release/xsl-ns/current/htmlhelp/profile-htmlhelp.xsl |
toolchain="DocBook_Screen_S5" |
http://www.calenco.com/ext/xsl/docbook/ns/s5/s5.xsl |
toolchain="DocBook_to_DOCX_XFC" |
http://docbook.sourceforge.net/release/xsl-ns/current/fo/profile-docbook.xsl |
toolchain="DocBook_to_ODT_XFC" |
http://docbook.sourceforge.net/release/xsl-ns/current/fo/profile-docbook.xsl |
toolchain="DocBook_to_RTF_XFC" |
http://docbook.sourceforge.net/release/xsl-ns/current/fo/profile-docbook.xsl |
toolchain="DocBook_to_WML_XFC" |
http://docbook.sourceforge.net/release/xsl-ns/current/fo/profile-docbook.xsl |
toolchain="DocBook_EPUB3_Chunk" |
Important : le nom "EPUB3" est une erreur. La version produite est en fait "2". Renommer la chaîne de transformation rendrait les feuilles de style existantes inutilisables. http://docbook.sourceforge.net/release/xsl-ns/current/epub3-xxe/epub.xsl |
toolchain="DocBook_XML" |
http://docbook.sourceforge.net/release/xsl-ns/current/profiling/profile.xsl |
toolchain="DocBook_CSV" |
- |
toolchain="DocBook_Text" |
- |
toolchain="DocBook_Transform" |
- voir the section called “Le format spécifique “Transform” ( |
Les chaînes de transformation suivantes impliquent un traitement complexe, et des techniques XSLT évoluées. Merci de nous contacter pour plus d'informations.
La chaîne "DocBook_to_PDF_FOP" permet de spécifier une feuille de style à exécuter sur le format intermédiaire “IF” juste avant la génération du fichier PDF proprement dit. Cela peut être utile par exemple pour gérer des numérotation de pages exotiques.
Contactez-nous pour plus d'informations.
DocBook_Transform
)La chaîne “transform” est un cas très particulier destiné à remplacer le fichier source. La feuille de style XSL utilisée pour cette transformation doit toujours retourner un fichier DocBook XML valide afin de ne pas casser le fichier source.
Ceci est utilisé pour appliquer une transformation au fichier source, par exemple pour rajouter des identifiants automatiques, remplacer une chaîne de caractères par une autre, etc. Notez que cela créera une nouvelle révision du fichier, de façon à pouvoir récupérer l'ancienne version.
Les inclusions ne sont pas résolues lors de cette transformation.
Les références externes relatives sont résolues par le processeur de publications en fonction de l'emplacement de votre fichier XSL.
Pour utiliser les icônes standards des feuilles de style DocBook telles que celles utilisées dans les notes, les avertissements, les marqueurs et les icônes de navigation, vous devez utiliser l'URI XSL DocBook standard suivante : “http://docbook.sourceforge.net/release/xsl/current/...”.
<xsl:param name="admon.graphics" select="1"></xsl:param> <xsl:param name="admon.graphics.path">http://docbook.sourceforge.net/release/xsl/current/images/</xsl:param> <xsl:param name="admon.graphics.extension">.svg</xsl:param>
Pour utiliser des icônes personnalisés pour les notes, avertissements, marqueurs, etc., le chemin déclaré vers vos images doit être relatif à votre feuille de style XSL.
<?calenco-dep note.svg?>
<?calenco-dep caution.svg?>
<?calenco-dep important.svg?>
<?calenco-dep warning.svg?>
<?calenco-dep tip.svg?>
<xsl:param name="admon.graphics" select="1"></xsl:param>
<xsl:param name="admon.graphics.path"></xsl:param>
<xsl:param name="admon.graphics.extension">.svg</xsl:param>
Dans cet exemple, les images personnalisées sont stockées dans la même langue que le fichier XSL les référençant.
Les informations qui suivent sont valables pour tous les formats XML (DocBook, DITA, etc.).
Les dépendances de la feuille de style sont déclarées suivant les instructions de transformation “calenco-dep”. Tous les fichiers utilisés par la feuille de style doivent être déclarés selon ces instructions de transformation. Si un fichier n'est pas déclaré, il ne sera pas pris en compte au moment de la compilation et le document résultant ne comportera pas son contenu.
<xsl:param name="admon.graphics" select="1"></xsl:param> <?calenco-dep note.svg?> <?calenco-dep caution.svg?> <?calenco-dep important.svg?> <xsl:param name="admon.graphics.path"></xsl:param> <xsl:param name="admon.graphics.extension">.svg</xsl:param>
Vous remarquerez dans cet exemple les déclarations pour les
icônes des notes et avertissements. Ces images
(note.svg
, caution.svg
,
etc.) doivent toutes être présentes dans la langue
“international” de l'espace de travail.
Il est possible de déclarer dans la feuille de style un jeu de fichiers à ajouter obligatoirement, notamment si le résultat de la publication est une archive compressée.
<cd:pubdeps xmlns:cd="http://www.calenco.com/ns/pubdeps" folder="content/test/other"> <cd:dep>css-background-img.png</cd:dep> <cd:dep folder="../../test2">css-import.css</cd:dep> </cd:pubdeps>
Cet élément doit être un enfant de l'élément racine de la feuille de style.
Dans cet exemple, l'attribut folder
de l'élément pubdeps
spécifie le répertoire dans lequel les fichiers seront copiés à l'intérieur de l'archive. S'il est présent sur un élément dep
, le chemin vers cet autre répertoire est relatif à celui de l'élément pubdeps
.
Le texte contenu dans les éléments deps
doit contenir un chemin de fichier relatif à la feuille de style.
Les directives <?calenco-dep?> sont nécessaires si la publication doit être mise à jour ou marquée comme obsolète en cas d'évolution de ces fichiers.
<?calenco-dep css-background-img.png?> <?calenco-dep css-import.css?>
Par défaut, le nom de la feuille de style apparaît dans la boite de dialogue d'édition.
pdf-monClient.xsl
Pour dissocier la partie informatique de la partie utilisation, un paramètre permet d'afficher un nom plus parlant pour l'utilisateur - sans avoir à renommer la feuille de style.
<?cco_title Notice Client PDF ?>
Les paramètres du format de sortie peuvent être déclarés dans la feuille de style sous la forme d'instructions de traitement : cco_tparam
.
Ces paramètres doivent être déclarés dans la feuille de style utilisée directement pour publier les documents (la feuille de style contenant l'instruction <?cco_xsltype
).
Ces options peuvent êtres utilisées aussi pour une publication en particulier en utilisant le champ "Options" des paramètres avancés d'une publication.
Exemple :
xincludes=false
Ces paramètres et variables sont valués par Calenco lors de la publication :
Ce paramètre est valué avec le répertoire temporaire de la publication : /tmp/calenco-tmp-1634573663588/cco_pub-l18n_a1ee8f3e-5034-4cce-a24e-cafd679e188f_1634665934870/
<xsl:param name="base.dir"></xsl:param>
La variable
root
est valuée avec le document publié
<xsl:variable name="root" select="/"/>
La variable
systemid
est l'adresse du document dans Calenco : http://core/workspaces/{wksp}/content/{lang]/{filename}.xml
<xsl:param name="systemid"></xsl:param>
Pour ajouter un filigrane dans une publication :
draft.mode=yes draft.watermark.image=protect.svg
Ajouter la dépendance de la feuille de style avec l'image du filigrane :
<?calenco-dep protect.svg?>
Pour la publication Webhelp, il faut également intégrer l'image dans la page html :
<xsl:template name="user.footer.content"> [...] <img style="display:none" alt="ghost" src="protect.svg"/> </xsl:template>
Par défaut, les inclusions d'un document sont toutes résolues avant une publication. Ce comportement peut être désactivé.
Exemple :
<?cco_tparam xincludes="false"?>
Par défaut, les références vers des fichiers externes sont téléchargées avant d'être intégrées dans le résultat de la publication. Ce comportement peut être désactivé.
Exemple :
<?cco_tparam download="false"?>
Le code MathML contenu dans un fichier peut être convertit en images qui peuvent être utilisées par le résultat de la publication.
Exemple :
<?cco_tparam convert.mathml="png"?> <?cco_tparam convert.mathml.size="18"?>
La feuille de style doit se charger de la création des fichiers contenant le code MathML pour chaque équation. Exemple :
<xsl:param name="extract.mathml.ext" /> <xsl:param name="convert.mathml.ext" /> <xsl:template name="extract.mathml"> <xsl:if test="$convert.mathml.ext != ''"> <xsl:for-each select="$profiled-nodes//mml:math"> <xsl:variable name="fname" select="concat(generate-id(), $extract.mathml.ext)" /> <xsl:variable name="href" select="$fname" /> <saxon:output href="{$base.dir}{$href}" method="xml" indent="no" doctype-public="-//W3C//DTD MathML 2.0//EN" doctype-system="http://www.w3.org/TR/MathML2/dtd/mathml2.dtd"> <xsl:copy-of select="." /> </saxon:output> </xsl:for-each> </xsl:if> </xsl:template> <xsl:template match="mml:math"> <xsl:choose> <xsl:when test="$convert.mathml.ext != ''"> <img src="{concat(generate-id(), $convert.mathml.ext)}" alt="(MathML)" class="mathml"/> </xsl:when> <xsl:otherwise> <xsl:element name="{local-name()}" namespace="http://www.w3.org/1998/Math/MathML"> <xsl:copy-of select="@*"/> <xsl:apply-templates/> </xsl:element> </xsl:otherwise> </xsl:choose> </xsl:template> <xsl:template match="mml:*"> <xsl:element name="{local-name()}" namespace="http://www.w3.org/1998/Math/MathML"> <xsl:copy-of select="@*"/> <xsl:apply-templates/> </xsl:element> </xsl:template>
La taille en pixels des images ainsi que leur qualité peuvent être contrôlées par ces paramètres.
Exemple :
<?cco_tparam images.maxsize="1024"?> <?cco_tparam images.quality="0.6"?>
La feuille de style peut générer des fichiers JSON contenant des données destinées à être transformés en graphiques.
Exemple :
<?cco_tparam generate.plots="1"?>
La feuille de style doit se charger de la création des fichiers JSON contenants les données. Exemple (PDF) :
<xsl:param name="base.dir"/><!-- Temporary folder for the publication. --> <xsl:template match="*[@tabstyle = 'histogram']"> <xsl:variable name="id"> <xsl:text>diagram_</xsl:text> <xsl:number level="any" count="*[d:tgroup]"/> </xsl:variable> <saxon:output href="{$base.dir}plot/{$id}.json" method="text"> <!-- JSON Data --> </saxon:output> <fo:block text-align="center" xsl:use-attribute-sets="normal.para.spacing"> <fo:external-graphic src="file:{$base.dir}plot/{$id}.png" width="75%" content-width="scale-down-to-fit"/> </fo:block> </xsl:template>
Exemple (HTML) :
<xsl:template match="*[@tabstyle = 'histogram']"> <xsl:variable name="id"> <xsl:text>diagram_</xsl:text> <xsl:number level="any" count="*[d:tgroup]"/> </xsl:variable> <saxon:output href="{$base.dir}../plot/{$id}.json" method="text" encoding="UTF-8"> <!-- JSON Data --> </saxon:output> <div class="diagram"> <img src="file:{$base.dir}../plot/{$id}.png"/> </div> </xsl:template>
Le dossier contenant les fichiers JSON doit obligatoirement être nommé "plot" et doit être dans le répertoire temporaire de la publication (le dossier parent pour du HTML).
Dans la sortie HTML, la valeur de l'attribut src
sera remplacé par une référence relative.
Exemple :
{ "title": "Titre", "background": "#ffffff", "width": 1024, "height": 768, "barset": [ { "color": "#00a5cd", "title": "Volume distribué", "data": [ { "x": 2017, "y": 309695 }, { "x": 2018, "y": 288623 } ] }, { "color": "#7cd2e6", "title": "Volume consommé", "data": [ { "x": 2017, "y": 260211 }, { "x": 2018, "y": 238583 } ] } ], "curveset": [ { "color": "#ff0000", "title": "Rendement", "data": [ { "x": 2017, "y": 84.02 }, { "x": 2018, "y": 82.66 } ] } ] }
L'objet doit contenir au minimum un "curveset" ou un "barset".
La résolution de l'image PNG contenant le graphique sera de 150ppp. Les dimensions de l'image permettent de contrôler son rapport hauteur/largeur.
Les chaînes de transformation pour les formats "traitement de texte" convertissent les images vectorielles SVG en bitmap.
Exemple :
<?cco_tparam svg.convert.dpi="96"?>
La valeur par défaut est "127".
Exemple :
<?cco_tparam rev="1.2"?> <?cco_tparam against.rev="1.8"?>
Exemple :
<?cco_tparam intermediate="if-massage.xsl"?>
Exemple :
<?cco_tparam diff="if-diff.xsl"?>
Exemple :
<!-- Where to find the list of the modified files? This will be used by the toolchain to call the "injectDiff" stylesheet (see below) on each modified file. --> <?cco_tparam injectFilesPath="//*[@xml:id = 'modifications']/db:tgroup/db:tbody/db:row/db:entry[4]"?> <!-- Inject the revision date for each modified page. --> <?cco_tparam injectDiff="inject-diff.xsl"?>
L'édition professionnelle de Calenco contient de belles feuilles de style par défaut pour DocBook. Ces feuilles de style peuvent aussi être personnalisées.
Pour personnaliser le format de sortie, importez la feuille de style par défaut dans votre propre feuille de style :
<xsl:import href="http://www.calenco.com/xsl/docbook/ns/fo/calenco-fo.xsl" />
Cette feuille de style par défaut importe la feuille de style
XSL DocBook standard :
http://docbook.sourceforge.net/release/xsl-ns/current/fo/profile-docbook.xsl
. Toutes les options et paramètres de la feuille de style XSL DocBook standard sont disponibles dans votre propre feuille de style personnalisée. Pour les paramètres additionnels.
La feuille de style doit au moins comporter les éléments suivants :
La déclaration de l'espace de nom de RenderX
<xsl:stylesheet
xmlns:rx="http://www.renderx.com/XSL/Extensions"
version="1.0">
La déclaration de la tool chain :
<?cco_xsltype addon="DocBook5.0" toolchain="DocBook_to_PDF_XEP"?>
Les paramètres de publications :
<xsl:param name="xep.extensions" select="1"></xsl:param> <xsl:param name="fop1.extensions" select="0"></xsl:param>
Les feuilles de style professionnelles par défaut sont disponibles pour les formats suivants :
HTML
XHTML
WebHelp
Import a utilisé dans votre feuille de style personnalisée :
HTML :
<xsl:import href="http://www.calenco.com/xsl/docbook/ns/html/calenco-html.xsl" />
XHTML :
<xsl:import href="http://www.calenco.com/xsl/docbook/ns/html/calenco-xhtml.xsl" />
Les feuilles de style XSL DocBook standard importées par ces
feuilles de style par défaut
sont :http://docbook.sourceforge.net/release/xsl-ns/current/html/profile-chunk.xsl
pour le HTML et
http://docbook.sourceforge.net/release/xsl-ns/current/xhtml/profile-chunk.xsl
pour le XHTML.
Toutes les options et paramètres de la feuille de style XSL DocBook standard sont disponibles dans votre propre feuille de style personnalisée.
La personnalisation de la feuille de style par défaut
webhelp peut être complexe en raison des multiples écrasements de
propriétés CSS sur les pages HTML. La meilleure méthode est de
prendre comme point de départ le fichier CSS par défaut
(webhelp-custom.css
).
Import à utiliser dans votre feuille de style personnalisée :
<xsl:import href="http://www.calenco.com/xsl/docbook/ns/webhelp/calenco-webhelp.xsl" />
Paramètre | Effet sur la sortie |
---|---|
logo=logo.png
|
L'URL d'une image qui apparaîtra en haut à droite de chaque page. Quand ce paramètre est utilisé dans la fenêtre de dialogue de publication, l'URL doit être absolue(vous pouvez utiliser le menu "Fichier" -> "Lien DAV" pour obtenir l'URL absolue d'un fichier de votre espace de travail). |
favicon=favicon.ico
|
L'URL de l'icône de favori pour le navigateur web. Quand ce paramètre est utilisé dans la fenêtre de dialogue de publication, l'URL doit être absolue(vous pouvez utiliser le menu "Fichier" -> "Lien DAV" pour obtenir l'URL absolue d'un fichier de votre espace de travail). |
custom.css=my-custom.css
|
L'URL de la feuille de style CSS a utilisée pour personnaliser les pages HTML. Quand ce paramètre est utilisé dans la fenêtre de dialogue de publication, l'URL doit être absolue(vous pouvez utiliser le menu "Fichier" -> "Lien DAV" pour obtenir l'URL absolue d'un fichier de votre espace de travail). |
Cette fonctionnalité permet de rajouter une coloration syntaxique automatiquement à la publication, pour un grand nombre de langages informatiques :
c
cpp
csharp
delphi
ini
java
javascript
lua
m2
myxml
perl
php
python
ruby
tcl
Rajouter l'attribut language
sur l'élément
programlisting
concerné, en positionnant sa valeur selon
le langage.
<programlisting language="java"> private Calenco() { try { initCalenco(); } catch (Exception ex) { throw new ExceptionInInitializerError(ex); } } </programlisting>
Rajouter dans votre feuille de style personnalisée les directives suivantes :
<xsl:import href="http://docbook.sourceforge.net/release/xsl-ns/current/fo/highlight.xsl"/> <xsl:param name="highlight.source" select="1"/>
Adapter le chemin vers la feuille de style
highlight.xsl
en fonction de l'import de la
feuille de style générale que vous avez réalisé (voir Table 1, “DocBook : valeurs possibles pour le paramètre “toolchain””).
Il est possible de récupérer les informations relatives à la version courante du document :
<xsl:variable name="revdata" select="document(concat($systemid, '/revdata'))"/>
La réponse retournée est du type :
<revision date="${revDate}" number="${revNumber}" author="${revAuthor}" />
<revision date="2021-10-01" number="1.23" author="writer@calenco.com" />