136 lines
6.2 KiB
XML
136 lines
6.2 KiB
XML
<?xml version="1.0" encoding="UTF-8"?>
|
||
<!-- Cette feuille de style transforme une mémoire de traduction (fichier TMX)
|
||
en fichier de tableur au format Flat OpenDocument (.fods) qui peut être
|
||
ouvert directement dans LibreOffice Calc.
|
||
Elle représente une adaptation d'une feuille de style installée comme
|
||
filtre d'importation dans LibreOffice or OpenOffice Calc pour lire un
|
||
fichier TMX dans une feuille de calcul. -->
|
||
<!-- Les filtres d'importations et d'exportations pour Calc sont disponibles
|
||
ici : https://forge.chapril.org/kazephil/XSLT_TAO/releases -->
|
||
<!-- Auteur: Philippe Tourigny, version 0.1 créée le 6-6-2023. -->
|
||
<!-- Copyright 2023, Philippe Tourigny.
|
||
Tout comme le filtre d'importation original, cette feuille de style est un
|
||
logiciel libre utilisable et modifiable selon les termes de la GNU Lesser
|
||
General Public License (LGPL) version 3 ou ultérieure. -->
|
||
|
||
<!-- Déclarer les espaces de noms requis pour créer le document. -->
|
||
<xsl:stylesheet version="1.0"
|
||
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
|
||
xmlns:office="urn:oasis:names:tc:opendocument:xmlns:office:1.0"
|
||
xmlns:style="urn:oasis:names:tc:opendocument:xmlns:style:1.0"
|
||
xmlns:text="urn:oasis:names:tc:opendocument:xmlns:text:1.0"
|
||
xmlns:table="urn:oasis:names:tc:opendocument:xmlns:table:1.0"
|
||
xmlns:fo="urn:oasis:names:tc:opendocument:xmlns:xsl-fo-compatible:1.0">
|
||
|
||
<!-- Préciser XML comme format de sortie -->
|
||
<xsl:output method="xml" version="1.0" encoding="utf-8" indent="yes"/>
|
||
|
||
<!-- Créer le modèle pour le document .fods -->
|
||
<xsl:template match="/">
|
||
|
||
<!-- Il faut ajouter le « mimetype » pour que le fichier soit reconnu
|
||
comme un document de tableur au format Flat OpenDocument. -->
|
||
<office:document office:mimetype="application/vnd.oasis.opendocument.spreadsheet">
|
||
|
||
<!-- Définir des styles qui facilitent la lecture du tableau. -->
|
||
<office:automatic-styles>
|
||
|
||
<!-- Ajuster la largeur des colonnes pour toutes les langues
|
||
utilisées dans la TMX. -->
|
||
<style:style style:name="co1" style:family="table-column">
|
||
<style:table-column-properties fo:break-before="auto"
|
||
style:column-width="14.000cm"/>
|
||
</style:style>
|
||
|
||
<!-- Ajuster toutes les rangées à la hauteur de ligne optimale. -->
|
||
<style:style style:name="ro1" style:family="table-row">
|
||
<style:table-row-properties fo:break-before="auto"
|
||
style:use-optimal-row-height="true"
|
||
/>
|
||
</style:style>
|
||
|
||
|
||
<!-- Style pour les cellules en-têtes. Les codes de langues sont
|
||
centrées et mis en caractères gras. -->
|
||
<style:style style:name="heading" style:family="table-cell"
|
||
style:parent-style-name="Default">
|
||
<style:table-cell-properties style:text-align-source="fix"
|
||
style:repeat-content="false"
|
||
fo:wrap-option="wrap"/>
|
||
<style:paragraph-properties fo:text-align="center"/>
|
||
<style:text-properties fo:font-weight="bold"/>
|
||
</style:style>
|
||
|
||
<!-- Appliquer le renvoi à la ligne automatique et l'alignement
|
||
en haut de ce cellule pour le texte des segments. -->
|
||
<style:style style:name="ce2" style:family="table-cell"
|
||
style:parent-style-name="Default">
|
||
<style:table-cell-properties fo:wrap-option="wrap"
|
||
style:vertical-align="top"/>
|
||
</style:style>
|
||
</office:automatic-styles>
|
||
|
||
<office:body>
|
||
<office:spreadsheet>
|
||
<table:table>
|
||
|
||
<!-- Récupérer le nombre de langues dans la TMX. -->
|
||
<xsl:variable name="numLangs" select="count(//tu[1]/tuv)"/>
|
||
|
||
<!-- Ajuster la largeur des colonnes pour chacune des langues
|
||
qui se trouve dans la TMX. -->
|
||
<table:table-column table:style-name='co1'
|
||
table:number-columns-repeated="{$numLangs}"
|
||
table:default-cell-style-name="ce2"/>
|
||
|
||
<!-- Créer la rangée en-tête et récupérer les codes de langues.
|
||
L'attribue « mode » sert à distinguer le code de langue
|
||
du texte dans le segment du <tuv>. -->
|
||
|
||
<!-- Todo: Identifier le <tu> contenant le plus d'éléments <tuv>
|
||
afin de récupérer toutes les langues présentes dans
|
||
un fichier TMX où certains éléments <tu> contiennent
|
||
un plus grand nombre de langues que d'autres. -->
|
||
<table:table-row table:style-name="ro1">
|
||
<xsl:apply-templates select="//tu[1]/tuv" mode="lang"/>
|
||
<table:table-column table:style-name="co1"/>
|
||
</table:table-row>
|
||
|
||
<!-- Récupérer les <tuv> et le texte de leur segment
|
||
dans chacun des <tu>. -->
|
||
<xsl:apply-templates select="//tu"/>
|
||
</table:table>
|
||
</office:spreadsheet>
|
||
</office:body>
|
||
|
||
</office:document>
|
||
</xsl:template>
|
||
|
||
<!-- Récupérer les codes de langue servant d'en-tête dans la première rangée.
|
||
La fonction « local-name() » permet de reconnaître autant les anciennes
|
||
versions avec l'attribut « lang » que les nouvelles versions avec
|
||
l'attribut « xml:lang ». -->
|
||
<xsl:template match="tu[1]/tuv" mode="lang">
|
||
<table:table-cell table:style-name="heading">
|
||
<text:p>
|
||
<xsl:value-of select="@*[local-name()='lang']"/>
|
||
</text:p>
|
||
</table:table-cell>
|
||
</xsl:template>
|
||
|
||
<!-- Traiter les éléments <tu>. -->
|
||
<xsl:template match="tu">
|
||
<table:table-row table:style-name="ro1">
|
||
<xsl:apply-templates select="tuv" mode="text"/>
|
||
</table:table-row>
|
||
</xsl:template>
|
||
|
||
<!-- Récupérer le texte des segments dans chacun des <tuv> du <tu>. -->
|
||
<xsl:template match="tuv" mode="text">
|
||
<table:table-cell table:style-name="ce2">
|
||
<text:p>
|
||
<xsl:value-of select="seg"/>
|
||
</text:p>
|
||
</table:table-cell>
|
||
</xsl:template>
|
||
</xsl:stylesheet> |