#1 2009-03-31 22:14:33

Styx
New member
Registered: 2009-03-31
Posts: 1

Un script XSL pour effectuer des modifications en masses

Bonsoir,

Utilisant GCstar pour classer une collection de manga , je me suis trouvé confronté à un problème récurrent :
     A partir d'une certaine taille de collection (plus de 900 éléments pour ma part), il devient fastidieux de renseigner des champs commun à une même série.


Je m'explique :

Lorsque je veux ajouter un manga à ma collection, je scanne son code barre, et je récupère les informations le concernant depuis le net. Ensuite je place correctement le champ serie.
Jusque la tout va bien.
Mais lorsqu'il s'agit du champ genre ou auteur, les valeurs sont multiples et communes à tous les éléments de la série. Il devient vraiment long de tenir ces valeurs à jour.


J'ai donc écris un script xslt qui répond à ce problème.
Je le met à disposition pour les (potentielles) personne se trouvant devant le même problème.

Il faut cependant que les champs "série" soit bien tous reseigné et que le type de collection soit "GCbooks"


Mise en oeuvre :

Récupérer le script de base :
http://bouliere.tristan.free.fr/files/g … cstart.xsl

Télécharger Saxon 9.1
Choisisser la version SaxonB
Download for Java
http://saxon.sourceforge.net/

Extraire l'archive dans un dossier saxon9


Il faut ensuite éxécuter le script de base qui va générer un second script xsl, qui sera utiliser pour l'édition des valeurs

On considère que collection.gcs est le fichier relatif à la collection de livre.

java -jar saxon9/saxon9.jar -xsl:/chemin/vers/gen_edit_gcstart.xsl -s:/chemin/vers/collection.gcs >> tmp_edit.xsl

Il est bon maintenant d'indenter le fichier générer avec un outil comme xmllint

xmllint --format tmp_edit.xsl >> edit.xsl

(Avant)Dernière étape

Modifier le fichier edit.xsl

il continent une suite d'instruction de la forme :

<xsl:variable name="d1e13">Akumetsu</xsl:variable>
  <xsl:template match="item[@serie=$d1e13]/authors">
        </xsl:template>
  <xsl:template match="item[@serie=$d1e13]/genre">
          </xsl:template>
  <xsl:template match="item[@serie=$d1e13]">
    <xsl:copy>
      <xsl:apply-templates select="./node()|@*"/>
        .....
    </xsl:copy>
  </xsl:template>

Cette instruction traitera par exemple tous les membres de la série Akumetsu.

Pour positionner les champs ajouter à la place des .....

<authors>
        <line>
          <col>Yoshiaki Tabata</col>
        </line>
        <line>
          <col>Yûki Yogo</col>
        </line>
  </authors>
      <genre>
        <line>
          <col>Seinen</col>
        </line>
        <line>
          <col>Manga</col>
        </line>
        <line>
          <col>Violence</col>
        </line>
      </genre>


Enfin générer un nouveau fichier collection.gcs avec la commande

java -jar saxon9/saxon9.jar -xsl:edit.xsl -s:/chemin/vers/collection.gcs >> nv_collection.gcs

Et charger la collection avec GCstar


L'intérêt du script edit.xsl est qu'il peux être de nouveau appelé lors de l'ajout de manga pour mettre à jour les informations.


Voila, pour les gens qui sont arrivé jusqu'içi vous pouvez aller vous couchez et profiter d'une bonne nuit de sommeil smile smile


PS: merci pour le développement de GCstar qui m'est devenu indispensable

Last edited by Styx (2009-04-01 19:14:30)

Offline

 



Should you have a problem using GCstar, you can open a bug report or request some support on GCstar forums.