Customiser DITA / Adapter le DITA OT |
Comprendre comment intervenir sur la présentation d'éléments spécialisés.
L'objectif de ce tutoriel n'est en aucun cas de réaliser une intégration complète, mais de comprendre les mécanismes d'intégration.
Création du plugin fr.masociete.xhtml
<?xml version="1.0" encoding="UTF-8"?> <plugin id="fr.masociete.xhtml"> <require plugin="fr.masociete.doctypes"/> <feature extension="dita.xsl.xhtml" value="recette2xhtml.xslt" type="file"/> </plugin>
Réalisation de la feuille de styles XSLT
<xsl:template match="*[contains(@class, ' recette/nbPers ')]"> <div class="nbPers"> <span class="label">Nombre de personnes : </span> <span class="value"> <xsl:apply-templates/> </span> </div> </xsl:template>
<?xml version="1.0" encoding="UTF-8"?> <xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:xd="http://www.oxygenxml.com/ns/doc/xsl" exclude-result-prefixes="xs xd" version="2.0"> <!-- définition de la recette : des lignes contenant un label puis la valeur. --> <xsl:template match="*[contains(@class, ' recette/nbPers ')]"> <div class="nbPers"> <span class="label">Nombre de personnes : </span> <span class="value"> <xsl:apply-templates/> </span> </div> </xsl:template> <xsl:template match="*[contains(@class, ' recette/tpsPreparation ')]"> <div class="tpsPreparation"> <span class="label">Temps de préparation : </span> <span class="value"> <xsl:apply-templates/> </span> </div> </xsl:template> <xsl:template match="*[contains(@class, ' recette/tpsCuisson ')]"> <div class="tpsCuisson"> <span class="label">Temps de cuisson : </span> <span class="value"> <xsl:apply-templates/> </span> </div> </xsl:template> <!-- Les ingrédients : un label sur une ligne puis les différents ingrédients en réutilisant le formatage des li --> <xsl:template match="*[contains(@class, ' recette/ingredients ')]"> <div class="ingredients"> <div class="label">Ingrédients</div> <ul class="ingredients"> <xsl:apply-templates/> </ul> </div> </xsl:template> <!-- La préparation : un label et ensuite le contenu --> <xsl:template match="*[contains(@class, ' recette/preparation ')]"> <div class="preparation"> <div class="label">Préparation</div> <xsl:apply-templates/> </div> </xsl:template> <!-- Le résultat : une petite div pour jouer sur la présentation --> <xsl:template match="*[contains(@class, ' recette/resultat ')]"> <div class="resultat"> <xsl:apply-templates/> </div> </xsl:template> </xsl:stylesheet>