Exercice de "style" XML-XSL

Tout ce qui se rapporte à l'informatique en général
Avatar du membre
jip
Administrateur
Administrateur
Messages : 2607
Enregistré le : 22 février 2008, 21:00
Localisation : Toulouse
Contact :

Exercice de "style" XML-XSL

Message 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 ...
Vous n’avez pas les permissions nécessaires pour voir les fichiers joints à ce message.
Modifié en dernier par jip le 06 janvier 2011, 00:22, modifié 1 fois.
Un synonyme, c'est un mot qu'on écrit pour remplacer celui dont on ne connait pas l'orthographe. (source inconnue). L'imagination est plus importante que le savoir. (Albert Einstein)

[align=center]Image[/align]

BoincLibristes, FreeTorrent, Ma brute
Avatar du membre
dudumomo
Administrateur
Administrateur
Messages : 2184
Enregistré le : 11 mars 2008, 14:42
Localisation : Taipei
Contact :

Re : Exercice de "style" XML-XSL

Message 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 ?
News & Tutorials on opensource software ==> freedif.org
Idipops, réseau social des prestataires de services.
Avatar du membre
jip
Administrateur
Administrateur
Messages : 2607
Enregistré le : 22 février 2008, 21:00
Localisation : Toulouse
Contact :

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

Message 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 ...
Un synonyme, c'est un mot qu'on écrit pour remplacer celui dont on ne connait pas l'orthographe. (source inconnue). L'imagination est plus importante que le savoir. (Albert Einstein)

[align=center]Image[/align]

BoincLibristes, FreeTorrent, Ma brute
Avatar du membre
tristesire
Zone privée MT Libristes
Zone privée MT Libristes
Messages : 365
Enregistré le : 01 juin 2008, 00:05
Localisation : st etienne

Re : Exercice de "style" XML-XSL

Message 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?
Image
Avatar du membre
jip
Administrateur
Administrateur
Messages : 2607
Enregistré le : 22 février 2008, 21:00
Localisation : Toulouse
Contact :

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

Message 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 ?
Un synonyme, c'est un mot qu'on écrit pour remplacer celui dont on ne connait pas l'orthographe. (source inconnue). L'imagination est plus importante que le savoir. (Albert Einstein)

[align=center]Image[/align]

BoincLibristes, FreeTorrent, Ma brute
Avatar du membre
tristesire
Zone privée MT Libristes
Zone privée MT Libristes
Messages : 365
Enregistré le : 01 juin 2008, 00:05
Localisation : st etienne

Re : Exercice de "style" XML-XSL

Message par tristesire »

Non. C'est pas en php non?
Image
Avatar du membre
jip
Administrateur
Administrateur
Messages : 2607
Enregistré le : 22 février 2008, 21:00
Localisation : Toulouse
Contact :

Re : Exercice de "style" XML-XSL

Message 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.
Vous n’avez pas les permissions nécessaires pour voir les fichiers joints à ce message.
Modifié en dernier par jip le 06 janvier 2011, 14:39, modifié 1 fois.
Un synonyme, c'est un mot qu'on écrit pour remplacer celui dont on ne connait pas l'orthographe. (source inconnue). L'imagination est plus importante que le savoir. (Albert Einstein)

[align=center]Image[/align]

BoincLibristes, FreeTorrent, Ma brute
Avatar du membre
jip
Administrateur
Administrateur
Messages : 2607
Enregistré le : 22 février 2008, 21:00
Localisation : Toulouse
Contact :

Re : Exercice de "style" XML-XSL

Message 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.
Vous n’avez pas les permissions nécessaires pour voir les fichiers joints à ce message.
Modifié en dernier par jip le 07 janvier 2011, 22:14, modifié 1 fois.
Un synonyme, c'est un mot qu'on écrit pour remplacer celui dont on ne connait pas l'orthographe. (source inconnue). L'imagination est plus importante que le savoir. (Albert Einstein)

[align=center]Image[/align]

BoincLibristes, FreeTorrent, Ma brute
Avatar du membre
jip
Administrateur
Administrateur
Messages : 2607
Enregistré le : 22 février 2008, 21:00
Localisation : Toulouse
Contact :

Re : Exercice de "style" XML-XSL

Message 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".
Vous n’avez pas les permissions nécessaires pour voir les fichiers joints à ce message.
Modifié en dernier par jip le 31 janvier 2011, 22:32, modifié 1 fois.
Un synonyme, c'est un mot qu'on écrit pour remplacer celui dont on ne connait pas l'orthographe. (source inconnue). L'imagination est plus importante que le savoir. (Albert Einstein)

[align=center]Image[/align]

BoincLibristes, FreeTorrent, Ma brute
Avatar du membre
Pascal94
Zone privée MT Libristes
Zone privée MT Libristes
Messages : 661
Enregistré le : 16 mai 2009, 13:43
Localisation : France (94)
Contact :

Re : Exercice de "style" XML-XSL

Message 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:
Modifié en dernier par Pascal94 le 23 janvier 2011, 21:29, modifié 1 fois.
« Je ne sais pas quelles armes seront utilisées pour la troisième guerre mondiale, si elle a lieu. Mais la quatrième se règlera à coups de massues. » {Albert Einstein}
Avatar du membre
jip
Administrateur
Administrateur
Messages : 2607
Enregistré le : 22 février 2008, 21:00
Localisation : Toulouse
Contact :

Re : Exercice de "style" XML-XSL

Message 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.
Un synonyme, c'est un mot qu'on écrit pour remplacer celui dont on ne connait pas l'orthographe. (source inconnue). L'imagination est plus importante que le savoir. (Albert Einstein)

[align=center]Image[/align]

BoincLibristes, FreeTorrent, Ma brute
Avatar du membre
Elgrande71
Administrateur
Administrateur
Messages : 1768
Enregistré le : 29 février 2008, 10:24
Localisation : Le Creusot
Contact :

Re : Exercice de "style" XML-XSL

Message 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é.
Vous n’avez pas les permissions nécessaires pour voir les fichiers joints à ce message.
Debian - Distribution GNU/Linux de référence
Parabola GNU/Linux - Distribution GNU/Linux Libre
MX Linux
Jabber elgrande71@chapril.org
Avatar du membre
jip
Administrateur
Administrateur
Messages : 2607
Enregistré le : 22 février 2008, 21:00
Localisation : Toulouse
Contact :

Re : Exercice de "style" XML-XSL

Message 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.
Un synonyme, c'est un mot qu'on écrit pour remplacer celui dont on ne connait pas l'orthographe. (source inconnue). L'imagination est plus importante que le savoir. (Albert Einstein)

[align=center]Image[/align]

BoincLibristes, FreeTorrent, Ma brute
Avatar du membre
Elgrande71
Administrateur
Administrateur
Messages : 1768
Enregistré le : 29 février 2008, 10:24
Localisation : Le Creusot
Contact :

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

Message 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:
Debian - Distribution GNU/Linux de référence
Parabola GNU/Linux - Distribution GNU/Linux Libre
MX Linux
Jabber elgrande71@chapril.org
Avatar du membre
jip
Administrateur
Administrateur
Messages : 2607
Enregistré le : 22 février 2008, 21:00
Localisation : Toulouse
Contact :

Re : Exercice de "style" XML-XSL

Message 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
Modifié en dernier par jip le 25 janvier 2011, 23:41, modifié 1 fois.
Un synonyme, c'est un mot qu'on écrit pour remplacer celui dont on ne connait pas l'orthographe. (source inconnue). L'imagination est plus importante que le savoir. (Albert Einstein)

[align=center]Image[/align]

BoincLibristes, FreeTorrent, Ma brute
Répondre