Pages: 1
- Index
- » Développeurs et contributeurs
- » Un script XSL pour effectuer des modifications en masses
#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
PS: merci pour le développement de GCstar qui m'est devenu indispensable
Last edited by Styx (2009-04-01 19:14:30)
Offline
Pages: 1
- Index
- » Développeurs et contributeurs
- » Un script XSL pour effectuer des modifications en masses
Should you have a problem using GCstar, you can open a bug report or request some support on GCstar forums.