URL: https://linuxfr.org/users/epeios/journaux/dpkq-un-piocheur-de-donnees Title: dpkq, un piocheur de données. Authors: Claude SIMON Date: 2015年07月01日T10:21:13+02:00 License: CC By-SA Tags: xml, xsl, epeios, c++ et base_de_données Score: 14 Dans le cadre de la mise à jour des utilitaires que j'ai développés, après vous avoir présenté [xppq](http://linuxfr.org/users/epeios/journaux/xppq-ou-une-autre-approche-de-la-gestion-des-arguments-de-la-ligne-de-commande) et [tmcq](http://linuxfr.org/users/epeios/journaux/tmcq-un-convertisseur-de-timecodes), voici maintenant [dpkq](http://q37.info/computing/epeios/tools/dpkq/). `dpkq` est un piocheur de données basé sur le *framework* *Epeios*. Il pioche au hasard une fiche dans une table stockée dans un fichier XML, et l'écrit dans un autre fichier XML, en l'associant à un fichier XSL de manière à pouvoir l'afficher dans un navigateur Web avec une mise en forme HTML. Cette description étant loin d'être d'une limpidité exemplaire (désolé, mais je n'en ai pas trouvé de meilleure...), je vais tenter de l'éclaircir en vous détaillant, à titre d’exemple, l'usage pour lequel j'ai développé cet utilitaire. Étant musicien, je suis naturellement amené à travailler des partitions (musicales, hein, pas celles de mes disques durs). Pour faciliter l'organisation de mes sessions de travail, j'ai écrit un ensemble de fichiers XML contenant les tables suivantes : - *Composers* : contient les fiches relatives aux compositeurs, - *Instrumentations* : il se trouve que je joue, et du piano, et de l'orgue ; contient donc des fiches permettant d'affecter une instrumentation à une œuvre musicale donnée, - *Collections* : certaines œuvres sont regroupées sous forme de recueils ; les fiches de cette table font référence à une fiche *instrumentation* et généralement à une fiche *composer*, - *Pieces* : les œuvres proprement dites ; les fiches font référence, soit à une fiche *collection*, soit à une fiche *composer* et une fiche *instrumentation*, - *Movements* : certaines pièces sont décomposées en mouvements ; les fiches font référence à une fiche *piece*, - *Voices* : pour le œuvres pour piano à 4 mains (pour distinguer la voix *primo* et la voix *secundo*) ; les fiches font référence, soit à une fiche *piece*, soit à une fiche *movement*, - *Elements* : contient les fiches sur les partition proprement dites ; les fiches font référence, soit à une fiche *piece*, soit à une fiche *movement*, soit à une fiche *voice*, - *Segments* : chaque fiche fait référence à un fiche *element*, en lui adjoignant une mesure de début, ainsi qu'une mesure de fin. La notion de *faire référence à une fiche* est apparentée à la notion de relationnel d'une base de données relationnelle. Les segments sont en fait répartis dans trois tables différentes. Une table contient les segments des partitions que je suis en train de déchiffrer, une autre ceux sur lesquels, après avoir été déchiffrés, je travaille la musicalité, et une troisième les segments des partitions travaillées que je rejoue régulièrement pour éviter de les oublier. J'ai installé `dpkq` sur une tablette, et, lors d'une session de travail, je le lance sur l'un des groupes de segments, et `dpkq` me génère alors un fichier XML qui est affiché dans un navigateur Web sous forme de page HTML. Celle-ci contient toutes les informations sur un segment tiré au hasard parmi tous les segments de la table concernée, notamment les mesures du segment, ainsi que les images des pages de la partition contenant ces mesures. Bien sûr, `dpkq` peut être utilisé dans un tout autre contexte et avec des données de toute autre nature... Un jeu complet et fonctionnel de fichiers de test, ainsi que des détails sur le fonctionnement de `dpkq`, sont présents sur la page dédiée : [http://q37.info/computing/epeios/tools/dpkq/](http://q37.info/computing/epeios/tools/dpkq/) (en). Voici le contenu de quelques-uns de ces fichiers (les directives préfixées par `dpk:` sont les directives traitées par `dpkq`, les directives préfixées par `xpp:` sont des directives destinées au [préprocesseur XML](http://q37.info/computing/epeios/tools/xppq/) (en) : La table *Composers* (`composers_.xml`) : ```xml Bach Johann Christian Bach Johann Sebastian Beethoven Ludwig Van Brahms Johannes Chopin Frédéric Debussy Claude Fauré Gabriel Gershwin George Granados Enrique Grieg Edvard Liszt Franz Mendelssohn Bartholdy Felix Mozart Wolfgang Amadeus Perterson Oscar Prokofiev Sergueï Rachmaninov Sergueï Ravel Maurice Schubert Franz Schumann Robert Simon Claude Tchaïkovski Piotr Ilitch Widor Charles-Marie ``` et le fichier encapsulant cette table (`Composers.xml` ; il n'est pas donné pour les autres tables, car présentant peu de différences) : ```xml ``` La table *Instrumentations* (`instrumentations_.xml`) : ```xml Piano two hands Piano four hands Classical organ Hammond organ ``` Et enfin, la table *Collections* (`collections_.xml`), dont les fiches font référence à des fiches des deux tables précédentes : ```xml Children's Corner 3 Romances sans Paroles 17 7 Fantaisies 116 Les Saisons 37a Préludes - Premier livre Pièces lyriques 12 2 arabesques 66 Albumblätter 124 24 préludes 28 12 danses espagnoles Valses sentimentales 50 779 Consolations 172 4 Mazurkas 17 Liebesträume 541 Faschingsschwank aus Wien 26 Best of piano bar Liebeslieder Waltzes 52a Sonates pour clarinette et piano 120 Home Organist Library Volume 7 - Jazz Pieces Big Band Specials for Organ Ma mère l'Oye Jazz exercises 2 valses 69 Six pieces for Piano 118 ```

AltStyle によって変換されたページ (->オリジナル) /