Présentation de XINX

Posté le 2. May 2010 dans XINX

Ce billet fait suite à la sortie de la version 0.9.0 de XINX et va vous décrire ce logiciel. XINX est éditeur de feuille de style XSL (il fait également éditeur JavaScript et CSS mais actuellement moins bien que ce que peuvent faire d'autres).

Il permet l'édition des feuilles de styles en proposant de compléter sur le nom des balises (normal), sur les attributs (normal), sur les valeurs d'attributs : les variables, les paramètres, ... Il propose également automatiquement les différents paramètres lors de l'utilisation d'un call:template.

L'éditeur est fortement tourné vers l'édition de feuille de style XSL pour génération d'HTML mais peut être utilisé pour générer du XML.

XINX

Historique

Depuis un certain temps déjà (5 ans), je travaille pour la société Generix Group éditant et intégrant un ERP1 du nom de GCE.

Sur la partie Web de cet ERP, il est possible d'intervenir à plusieurs endroits pour modifier son fonctionnement :

  • Le paramétrage (BDD) : Modification d'un paramètre pour agir sur le comportement du logiciel
  • La couche métier (JAVA) : Lit le paramétrage (BDD) et réalise les traitements. Il est possible de développer de nouveaux objets, mais aussi de dériver ceux existants.
  • La couche de présentation (XSL) : A l'aide d'un flux de présentation généré par la couche métier et d'un fichier de configuration, présente les données à l'écran.

La dernière couche est donc l'interprétation d'un flux de donnée, générée à partir de la couche métier (JAVA), à l'aide de feuille de style XSL.

XINX sert à modifier la couche de présentation (XSL). Sur cette dernière couche, on crée et modifie des feuilles de styles pour modifier la présentation des données à l'écran (Déplacer des champs, supprimer des champs, ajouter des champs, règle de gestion simple ...).

En mode projet, chez les clients, les modifications ne sont pas faites directement sur les feuilles de styles standard livrées, mais sur des feuilles de styles dérivées, afin de faciliter les migrations, et la correction des anomalies.

Structure

Lors de la modification de feuille de style standard, il faut alors renommer et placer ce fichier dans un dossier séparé. C'est de cette tâche récurrente qu'est venue la création de l'éditeur de feuille de style XINX.

Le but était alors, lors de la sauvegarde d'un fichier standard, de proposer automatiquement la sauvegarde dans le bon dossier.

L'autre point à l'origine de la création de XINX est la non-existence d'un logiciel de développement de feuille de style XSL gratuit et/ou libre (Il y a bien XML Spy qui correspondait à peu prés mais qui était payant, et dont nous n'avions pas la licence).

Sont alors venu s'ajouter d'autres fonctionnalités : la complétion sur les balises, les attributs, les variables, .... :)

Qu'est que XINX aujourd'hui ?

XINX prévu initialement comme aide au développement des consultants qui font des développements de feuille de style, est maintenant un éditeur de feuille de style XSL avec gestion des plugins. L'un des plugins contient des petites fonctionnalités utiles au quotidien par les consultants travaillants sur l'ERP, fonctionnalité auparavant implémenté directement dans le logiciel.

Dit autrement, cette nouvelle version marque donc une étape : La partie de XINX propre à Generix Group à été séparée dans un plugin. XINX en lui même n'est alors plus qu'un éditeur de feuille de style, extensible via des plugins, mais il retrouve les mêmes fonctionnalités grâce à ce plugin.

Licence

Licence GPLv3

XINX est un logiciel libre dont la licence choisie est la GPLv3. Ce qui signifie que vous pouvez :

  • télécharger le logiciel
  • utiliser le logiciel pour faire ce que vous voulez
  • télécharger les sources du logiciels
  • modifier les sources du logiciels
  • utiliser le logiciel modifié par vos soins
  • distribuer le logiciel ou la version modifiée (attention à différencier les parties originales du logiciel avec le bon copyright, et les parties modifiées).

En tant que logiciel libre XINX possède une plateforme de contribution (ticket, wiki, source, ...) qui se trouve à l'adresse http://xinx.shadoware.org. Vous pouvez donc y aller pour contribuer.

Vous pouvez contribuer de plusieurs façons :

  • Développement d'un Plugin
  • Développement d'un script ECMAScript
  • Développement d'un petit patch
  • Développement d'un gros patch

Technologie

XINX est un logiciel développé en Qt. Il compile et tourne sous Gnu/Debian (normalement n'importe quelle distribution devrait faire l'affaire, mais Gnu/Debian est la seule distribution testée), et sous MS/Windows. Il devrait normalement également tourner sous MacOS (si les dépendances comme les librairies libxml2 et libxslt sont compilables sous cet OS).

A chaque version un paquet Gnu/Debian est mis à disposition sur le dépôt (apt.shadoware.org) et un binaire MS/Windows est proposé en téléchargement. XINX est toujours compilable à partir des sources pour les autres distributions ou juste parce que vous préférez ainsi. :D

Intégration continue & Tests

A chaque validation sur le référenciel SubVersion, l'application est compilée et testée (vous pouvez voir le résultat des tests à l'adresse suivante. A la sortie de la version 0.9.0, les tests couvrent 27% de la librairie principale. Je dois donc encore écrire d'autres jeux de tests.

Intégration

Code réutilisable pour d'autres projets

XINX peut également être intéressant pour d'autres développeurs Qt.

En effet, vous pouvez trouver dans la dernière version, ainsi que dans les versions précédentes plusieurs classes utilitaires.Par exemple (liste presque non exhaustive) :

  • TreeProxyItemModel : convertit un modèle format table en modèle format arbre. Utile lorsque l'arbre est représenté dans une base de donnée relationnelle par exemple.
  • RecursiveSortFilterProxyModel : Utilisé pour rechercher facilement des données dans un arbre et permet d'afficher les enfants.
  • XinxLineEdit : Inspiré de KDE, affiche un bouton pour effacer le texte dans la ligne d'édition
  • XinxListWidgetImpl : Permet de modifier une liste de valeur (ajout, suppression, valeur par défaut, classement, ...)
  • PluginSelector : Inspiré de KDE, permet d'afficher une liste des plugins, avec un bouton A propos de ... et un bouton Configurer ....
  • QMenuView : Inspiré d'un exemple de Qt et permet d'afficher un menu à partir d'un modèle.

Fonctionnalités

Recherche parmi les fichiers d'un dossier

Un dock sur le coté permet en mode projet de rechercher et d'ouvrir un fichier parmi une multitude de fichier d'un projet (utile pour les fichiers avec beaucoup de feuille de style).

La recherche peut se faire avec des Jockers (*)

Dock

La complétion XSL

Completion

XINX permet de compléter sur les feuilles de styles à plusieurs niveaux2 :

  • la balise (fonctionnalité standard vous allez me dire) : XINX permet de compléter sur les balises xsl:, les balises html ...
  • les attributs (encore standard). Pour chaque balise, XINX est capable de compléter sur les attributs de la balise saisie.
  • les valeurs d'attribut (là c'est intéressant). Permet de compléter sur les variables déclarées dans le fichier XSL, ainsi que dans les fichiers importés (pour retrouver les fichiers importés, XINX, utilise le mode projet et les paramètres qui y sont définits). De plus sur les attributs non XSL, XINX ajoute automatiquement les accolades { } et les $ pour les variables et les paramètres.

De plus lors de l'utilisation de la balise call:template, XINX va chercher automatiquement les paramètres (xsl:param) du template donné, et les ajoute automatiquement en xsl:with-param.Pour les balises xsl:apply-templates XINX propose la liste des modes des templates existants.

Completion

Le parsing de la feuille de style

Fonctionnalité du moment, si vous indiquez un flux de données et une feuille de style, XINX est capable d'afficher le résultat (la source HTML et le résultat dans un navigateur Webkit)

Si l'emplacement où doivent s'exécuter les pages est définit alors, les feuilles de styles, les images, ... pourront être affichées.

Représentation

A venir

Bien que l'avenir du logiciel dépend de ces utilisateurs, voici les nouvelles fonctionnalités que devrait apporter la prochaine version :

  • Déverminage de feuille de style XSL
  • Amélioration du parseur JavaScript et CSS
  • Quelques réécritures (Vue projet, ...)

Le plugin GCE

Comme indiqué ci-dessous, il existe un plugin GCE utilisé par les consultants travaillants sur l'ERP GCE.

Ce plugin permet de dupliquer une feuille de style d'un dossier à un autre (sans modification des fichiers standards), de lire les dictionnaires de libellé de l'ERP GCE, la lecture du fichier de configuration du lecteur GCE.

Dérivation

Téléchargement

Vous pouvez télécharger XINX à l'adresse http://xinx.shadoware.org/downloads (source et version Windows).

Si vous voulez installer XINX sur une Gnu/Debian (32 ou 64 bits) vous pouvez inclure le dépôt suivant :

# Shadoware.Org
deb http://apt.shadoware.org/ squeeze main

Et installé de la façon suivante :

aptitude install xinx

Vous pouvez vous tenir au courant des sorties de version grâce à la mailing list


  1. Un ERP et un logiciel de gestion d'entreprise. Un ERP permet de gérer, par exemple, les produits, les clients, les fournisseurs, les stocks, les ventes, les achats, la logistique, la comptabilité, .... Je ne vais pas vous faire une présentation des ERPs, car même si cela pourrait faire un billet intéressant, ce n'est pas le but ici.

  2. Merci à QCodeEdit qui me fournit quelques fonctionnalités utiles.