Gérer une fichothèque avec le logiciel BDF

Utiliser une extraction avec un gabarit de transformation personnalisé au sein d’un export tabulaire

Le format d’exportation tabulaire offre un certain nombre de possibilités de récupération de l’information qui ne peuvent gérer tous les cas de figure. Pour permettre des traitements plus complexes, l’export tabulaire donne la possibilité d’insérer des données issues d’une extraction XML suivie d’une transformation XSLT. Le principe est le même que celui des gabarits de transformation d’une fiche avec les deux différences suivantes :

  • l’extraction est définie au sein même du fichier de l’export tabulaire

  • les gabarits disponibles sont les gabarits particuliers appartenant à la catégorie Extractions définies dans le formatage

Définition de l’extraction

L’extraction doit être définie au début du fichier d’exportation tabulaire sous la forme d’un bloc de plusieurs lignes commençant par !!start extraction et terminant par !!end. Le contenu de ce bloc doit être du XML décrivant une extraction pour une fiche (s’il s’agit de l’export d’un corpus) ou pour un mot-clé (s’il s’agit de l’export d’un thésaurus).

Extraction minimale pour une fiche
!!start extraction
<extraction>
  <fiche>

  </fiche>
</extraction>
!!end
Extraction minimale pour un fiche
!!start extraction
<extraction>
  <motcle>

  </motcle>
</extraction>
!!end

Le résultat de cet extraction peut ensuite être manipulé dans la définition des colonnes de l’export tabulaire en utilisant le terme extraction comme source de formatage.

Dans l’exemple suivant, la colonne colonneC aura comme contenu le XML résultant de l’extraction.

colonneC
extraction

Définition d’une transformation

Les gabarits de transformation pouvant être utilisé sont ceux de la catégorie Extractions définies dans le formatage. On remarquera que ces gabarits n’ont pas de fichier extraction.xml associé contrairement aux gabarits de transformation par corpus puisque l’extraction est définie dans l’export tabulaire. La transformation est indiquée sur la troisième ligne de définition de la colonne comme ci-dessous :

Indication du gabarit à appliquer
colonneC
extraction
{transformation=nom_gabarit}

Plusieurs gabarits peuvent être utilisés dans des colonnes différentes, l’extraction est quand à elle unique.

Application de deux gabarits différents
colonneC
extraction
{transformation=nom_gabarit_1}

colonneD
extraction
{transformation=nom_gabarit_2}

Exemple d’usage

L’exemple suivant montre l’intérêt d’un tel mécanisme. Supposons que nous disposons d’un corpus Organisme décrivant des organismes partenaires à qui sont associés des projets qui possèdent notamment une date et un champ montant qui n’est rempli que s’il y a eu financement. On veut lister les projets par ordre chronologique en ne conservant que les projets avec montant. XSLT va nous être bien utile car il possède des fonctions de tri et de filtre sur les données faciles à mettre en œuvre.

Voici ce que donnerait le fichier de l’export tabulaire

Extrait de l’export tabulaire
!!start extraction
<extraction>
  <fiche>
      <fiches corpus="projet">
          <fiche>
                titre
                propriete_date
                propriete_montant
            </fiche>
        </fiches>
  </fiche>
</extraction>
!!end

listeprojets
extraction
{transformation=listeprojets}

Et voici le code XSLT du gabarit (cm=quote) listeprojets, le résultat comporte le titre des projets filtrés séparés par un point virgule.

<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">

    <xsl:output method="text" encoding="UTF-8"/>

    <xsl:template match="/">
        <xsl:apply-templates select="extraction/fiche/fiches/fiche[propriete[@name='montant']]">
            <xsl:sort select="propriete[@name='date']/datation/@sort"/>
        </xsl:apply-templates>
    </xsl:template>

    <xsl:template match="fiche">
        <xsl:value-of select="titre"/><xsl:text>; <:xsl:text>
    </xsl:template>

</xsl:stylesheet>
Fiches voisines