Page 1 sur 3

Exercice de "style" XML-XSL

Posté : 06 janvier 2011, 00:15
par jip
Je regarde depuis quelques temps les différentes possibilités offertes par le couple XML-XSL.

J'ai l'impression qu'elles sont assez méconnues et sous-exploitées.

Pourtant toutes mes lectures m'ont amené à penser que c'est assez souple et puissant.

XML fournissant des données structurées, et XSL la transformation, manipulation de ces données.

Ainsi via XSL on peut transformer les données XML dans différents format basés sur du texte (autre XML, HTML, CSV, etc ...).
Mais aussi y inclure, à la volée, des tris, des regroupement, des calculs, etc ...

Aussi, pour voir ce que ça pouvait donner en réel, j'ai voulu faire un petit test en rapprochant ça des données statistiques XML fournies par les projets BOINC en appel WebRPC (http://boinc.berkeley.edu/trac/wiki/WebRpc).

J'ai donc joint ici une archive contenant un script permettant de lancer un processeur XSL (en l'occurrence xsltproc, présent dans les dépots de ma ubuntu, à installer avant) utilisant les différents xml et xsl présents eux aussi dans l'archive.

Dans un 1er temps, ce script génère un premier fichier xml (results.xml) qui compacte les données de plusieurs projet, team AF, membres AF, dans un seul et même xml que l'on peut ouvrir directement dans un navigateur, car il est intrinsèquement associé à une feuille xsl de présentation en HTML,.

Puis le script génère aussi une page HTML résultant de la transformation par la feuille results.xsl. Ce qui donne le même résultat que ce que vous obtenez en ouvrant directement le xml. La différence réside dans le fait que dans un cas c'est votre navigateur qui bosse pour effectuer la transformation (process sur le client de consultation), dans l'autre ça ne se fait qu'une seule fois (par exemple sur le serveur d'un site) et la visualisation est réellement en HTML.

Alors, il y a surement des améliorations possibles, des ajustements, des corrections, mais je trouve que ça montre bien les possibilités de la chose.

Notamment, il serait préférable d'utiliser directement les numéros d'identifiant de la team dont on veut extraire les données, plutôt que d'effectuer une recherche par nom avant d'en récupérer l'identifiant. Ce qui accélèrerait le processus. Mais là vu la liste d'url, j'ai pas eu le courage de tout saisir. Certaines url sont, ou erronées, ou pointent sur des projets hs, pour valider le bon fonctionnement même en cas de pb sur les projets. Rien n'empêche de les actualiser.

De même, je ne me suis pas trop attarder sur la question des variations d'encodage de caractères.

Je n'ai pas non plus cherché à faire de calcul ou de regroupement. Mais, sachez que c'est possible.

Le but c'est de vous faire partager cette petite expérience. Car le résultat final m'a, moi-même, un peu surpris (ça a tourné sur mon petit pc portable avec boinc qui crunchais en même temps).

Voilà, si y'en a qui veulent tester et donner leur sentiment sur cette techno peu usitée ...

Re : Exercice de "style" XML-XSL

Posté : 06 janvier 2011, 08:20
par dudumomo
Je n'y connais pas grand chose en programmation, mais c'est vrai que je n'ai pas souvent entendu parle de ce couple la.
Pourtant, vu le travail que tu as effectue, avec par exemple les User Of The Day, je trouve cela tres reussi !

Je n'ai pas tout compris le but de ta demarche, mais cela pourrait servir a faire un site de stats, c'est bien cela ?

Re : Re : Exercice de "style" XML-XSL

Posté : 06 janvier 2011, 11:27
par jip
dudumomo a écrit : Je n'ai pas tout compris le but de ta demarche, mais cela pourrait servir a faire un site de stats, c'est bien cela ?
Oui mais pas seulement.

C'est plus général que ça.

Par exemple, comme j'en avais parlé sur le forum de freetorrent, on peut aussi utiliser ça pour transformer un flux rss (qui est du xml : http://www.freetorrent.fr/rss1.php) en fichier de commandes à passer à un client bittorrent pour charger automatiquement ce qui est déposé.

D'ailleurs j'ai déjà regardé cette soluce quand tu as posé la question là bas, mais je n'arrive pas à résoudre la question de l'authentification utilisateur.

Si tu veux voir ce que ça donne tu m'indique un exemple de ligne de commande de ton client et je te montre ce que ça donnerait (en dehors de la question du rattachement à l'utilisateur qu'il te faudra résoudre).

Et y'a bien d'autres possibilités. Encore dans le cadre des flux rss, ça peut permettre de collecter et fusionner plusieurs flux de syndication. Pour surveiller plusieurs forum disposant de flux rss, par exemple.

En plus on peut mixer cela avec quelques langages de script, qui, pour la plupart disposent de processeur de traitement xsl. Ainsi, pour des pages qui changent peu souvent, on peut générer périodiquement, à partir d'un xml, une page html statique. Ce qui peut permettre de décharger un peu le serveur qui génèrerait cette page pour un visiteur.

De même, la plupart des navigateurs intègrent un processeur xsl, certe limité (je crois que le chergement de document externe dans la feuille xsl n'est pas permise pour raison de sécurité. à vérifier.).

Actuellement, la plupart des serveurs de base de données, permettent aussi d'importer ou exporter du xml, qu'on peut donc aussi manipuler via xsl pour générer d'autres données xml ou un autre format dérivé du format texte (html, csv, etc ...). Peut-être même du pdf assez simple puisque en interne c'est du format texte.

Les autres applications est aussi question d'imagination ...

Re : Exercice de "style" XML-XSL

Posté : 06 janvier 2011, 12:11
par tristesire
A titre perso, je travaille sur un projet de page de creation de personnage en ligne. Comme j'étais débutant, et que je voulais séparer le contenu, je me suis demandé comment faire.
J'avais soit la solution d'une base de donnée classique (mais ca me paraissait trop compliqué) soit le format XML.
En travaillant un peu avec, je suis tombé sous le charme de ce format.
Par contre, c'est pas aussi simple à utiliser, que je l'aurais souhaité, mais si les données sont pas trop importantes, c'est une excellente base de données.
Il contient quoi le fichier projects.sh?

Re : Re : Exercice de "style" XML-XSL

Posté : 06 janvier 2011, 12:20
par jip
tristesire a écrit : Il contient quoi le fichier projects.sh?
les 2 commandes de lancement du processeur xsl (xsltproc). On peut se contenter de la 1ère commande si on veut laisser faire la présentation du résultat par le navigateur. On peut aussi lancer la commande à la main. c'est juste une facilité.

on peut aussi essayer avec un autre processeur. j'en connais 2 autres : xalan et xmlstarlet. mais j'ai pas testé avec ceux là.

enfin du coup, j'imagine qu'aucun n'a encore essayer, si ?

Re : Exercice de "style" XML-XSL

Posté : 06 janvier 2011, 12:27
par tristesire
Non. C'est pas en php non?

Re : Exercice de "style" XML-XSL

Posté : 06 janvier 2011, 14:33
par jip
Non c'est pas du php du tout (enfin pas ce que je vous livre). ça utilise juste une appli qui est un processeur xsl. que je recite pour ceux que je connais : xsltproc, xalan, xmlstarlet.

cependant, php possède un processeur xsl : http://bob.developpez.com/phpxslt

python aussi apparemment : http://quilovnic.developpez.com/htmlconverter/

de plus pour ceux qui veulent intégrer à leur appli, il existe aussi des sources et des lib de processeur xsl.

Sinon, autre exemple, vite fait, de transformation d'un xml en texte avec le flux rss de freetorrent.fr pour constituer une liste (on pourrait aussi y rajouter les commandes pour ajout auto dans un client bittorrent) qui pourrait être utiliser dans le cadre d'un script shell par exemple ... en fichier joint.

Re : Exercice de "style" XML-XSL

Posté : 07 janvier 2011, 00:36
par jip
Grâce à un export maison (légèrement modifié pour tester des teamid multiples) de la part de notre statisticien Seb me fournissant les données projets (url, nom, teamid de l'af sur le projet, état actif ou non),

j'ai concocter une nouvelle version de ma démo sur les webrpc des projets boinc pour les stats af, en fichier joint de ce post.

fonctionnement général identique. quelques noms changés. plus complet et plus rapide à priori.

sur mon pc portable avec mon débit, le total du processus prend environ 7mn.

inconvénient de la méthode, toute réponse mal formée du point de vue xml est ignorée. par exemple : http://pirates.spy-hill.net/team_email_ ... ey=Y&xml=1 . dans ces cas 2 solutions : aviser l'admin pour correction, ou charger en local les fichiers résultants des appels webrpc, afin d'appliquer un pré-traitement avant traitement xsl.

edit : modif du post et dépôt d'une nouvelle version plus souple (teamid multiple pour un même projet) et un peu plus rapide (plus d'appels multiples inutiles sur des projets qui ne répondent pas correctement au 1er appel webrpc.)

re-edit : seb ayant modifier son export, nouvelle version utilisant directement son export.

Re : Exercice de "style" XML-XSL

Posté : 16 janvier 2011, 20:28
par jip
Aller, une nouvelle version pour gratter encore du temps en lançant les transformations en parallèle via le script sh et le caractère magique "&" à la fin des appels.

Alors du coup, il y a un xml résultat par projet dans le sous dossier "Results".

de même les résultats générés en parallèle pourraient donner une transformation en script sql permettant d'injecter en bdd en fin de processus de transformation (pour cela le script principal pourrait appeler une script secondaire lancé en tâche de fond et effectuant la transformation en sql suivi de l'injection en bdd projet par projet).

enfin bref, du coup là on ne passe plus son temps à attendre la réponse d'un projet avant de pouvoir traiter le suivant. ça raccourci notablement la durée globale (difficile à mesurer vu que tout est en parallèle ...).

comme d'habitude je donne le tout en fichier joint à ce post, en compressé.

edit : suite à un test de Pascal94 (  :jap: ), correction d'un bug avec certains nom de projets. fichier joint modifié.

re-edit : nouvelle version.

re-re-edit : quelques modifs mineures et surtout redirection de la sortie standard et des erreurs vers 2 fichiers text dans le même dossier que le script principal.

re-re-re-edit : version permettant d'éliminer le pb des ">" et ">", sur certains pseudos, dans les xml de synthèse du dossier "Results".

Re : Exercice de "style" XML-XSL

Posté : 23 janvier 2011, 18:54
par Pascal94
salut JiP  :hello:

je n'ai que le total par projet, pas les membres  :undecided:

Edit : après de multiples essais, je récupère environ 50% des infos. certains projets uniquement le total de l'AF, d'autre rien du tout.

en essayant plusieurs fois, on se rend compte que c'est pas toujours les mêmes projets qui merdent.

les meilleurs résultats en double-clic sur le .sh, et puis "lancer" sans terminal  :prr:

Re : Exercice de "style" XML-XSL

Posté : 23 janvier 2011, 21:57
par jip
j'essayerais de tirer ça au clair un peu plus tard.

le we prochain surement.

peut-être pb d'exécution // de plusieurs instances de xsltproc.

je ferais le test avec xalan et xmlstarlet.

on verra.

Re : Exercice de "style" XML-XSL

Posté : 24 janvier 2011, 15:44
par Elgrande71
En lançant dans un terminal le dernier fichier joint, je me suis retrouvé avec le script qui ne pouvait pas finir son boulot.
J'ai fait une copie d'écran du problème auquel je suis confronté.

Re : Exercice de "style" XML-XSL

Posté : 24 janvier 2011, 18:39
par jip
pas tout à fait je pense.

comme c'est lancer en tâche de fond, tu as les messages d'erreur qui arrive après coup sur ta console de terminal.

si tu fais entrée ou que tu tape une commande (par exemple clear) et que tu valide, tu verras que (normalement), c'est pas vraiment planté.

oui je sais ça surprend. moi aussi ça m'a dérouté au début.

faudrait peut-être que je détourne la sortie des erreur vers un fichier plutôt.

Re : Re : Exercice de "style" XML-XSL

Posté : 25 janvier 2011, 13:56
par Elgrande71
jip a écrit : pas tout à fait je pense.

comme c'est lancer en tâche de fond, tu as les messages d'erreur qui arrive après coup sur ta console de terminal.

si tu fais entrée ou que tu tape une commande (par exemple clear) et que tu valide, tu verras que (normalement), c'est pas vraiment planté.

oui je sais ça surprend. moi aussi ça m'a dérouté au début.

faudrait peut-être que je détourne la sortie des erreur vers un fichier plutôt.
Il est vrai que tu m'avais dit que le programme tournait en tâche de fond mais je m'en étais plus souvenu.
Sinon détourner la sortie des erreurs vers un fichier est une très bonne idée.
Ce serait plus pratique pour les testeurs afin de te fournir les éventuels messages afin d'améliorer ton projet.  :wink:

Re : Exercice de "style" XML-XSL

Posté : 25 janvier 2011, 23:38
par jip
nouvelle version là : http://libristes-forum.boinc-af.org/ind ... l#msg12936

description des modifs dans le dernier edit.

par contre, ne pas utiliser le bouton "lancer dans un terminal" lors d'un double clic dans nautilus (si y'en a un qui trouve pourquoi, je suis preneur). "lancer" par contre ça marche. en ligne de commande aussi.

j'ai user et abuser du mot clé "exec" pour les redirections. pratique et efficace.

pour ceux qui connaissent pas et qui veulent voir, y'a quelques exemples étonnants là (le dernier notamment) : http://www.linuxtopia.org/online_books/ ... 13082.html