Exercice de "style" XML-XSL
Posté : 06 janvier 2011, 00:15
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 ...
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 ...