IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

XSL/XSLT/XPATH XML Discussion :

[XSLT] Transformation XML pour Base de données


Sujet :

XSL/XSLT/XPATH XML

  1. #1
    Membre du Club
    Inscrit en
    Mai 2002
    Messages
    61
    Détails du profil
    Informations forums :
    Inscription : Mai 2002
    Messages : 61
    Points : 51
    Points
    51
    Par défaut [XSLT] Transformation XML pour Base de données
    Bonjour à tous,

    j´ai deux problèmes qui me tracassent en ce moment et j´aimerais savoir si ces problèmes sont solubles avec du XSLT et comment?
    1. J´ai une banque de données Access qui a une structure spécifique (normal). J´ai pu générer le schema (.xsd) de cette BD. Ensuite on m´a livré des données à insérer dans cette banque de données sous forme XML. Malheureusement la structure de ce fichier XML est tout autre et ne correspond pas du tout au schema de ma BD. Il me faut donc transformer. Je recherche donc une solution qui me permettrait de transformer le fichier XML de données de telle sorte que je puisse obtenir comme sortie un autre fichier XML que je puisse importer directement dans mes tableaux Access et qui surtout (!) insère automatiquement et de facon incrémentelle les IDs à chaque nouvel ajout de lignes.
    2. Le plus dur c´est la gérance de ces IDs (primary key) avec du xslt. Est-ce possible avec du xslt de gérer aussi les relations entre tableaux (PK et FK)?
    Par exemple, j´ai cette structure de ma BD (tableau Projet, tableau Employé, tableau Client):
    Projet (projID, nom); Employé(empID, empNom); ProjetEmployé (projID, empID); Client(clientID, nom, projetID, empID). À un client est attribué un seul employé comme personne de contact.
    J´ai aussi obtenu par exemple ce fichier XML:
    <Root><Info>blablabla</Info><Info>blablabla</Info>
    <Projet><nom>DTR</nom>
    <Employé><nom>Lorrier T.</nom></Employé>
    <Employé><nom>Bernard M.</nom></Employé>
    <Employé><nom>Raphael M.</nom></Employé>
    </Projet>
    <Projet><nom>MDR</nom>
    <Employé><nom>Raphael M.</nom></Employé>
    <Employé><nom>Pablo</nom></Employé>
    </Projet>
    <Projet><nom>DBD</nom>
    <Employé><nom>Pablo</nom></Employé>
    <Employé><nom>Jerome K.</nom></Employé>
    <Employé><nom>Aline N.</nom></Employé>
    </Projet>
    <Client>
    <nom>montesquieu</nom>
    <contact>Pablo</contact>
    <projet>DBD</projet>
    </Client>
    </Root>


    Comment transformer ceci en XML conformément à la définition de ma BD afin d´insérer automatiquement les données dans ma BD en tenant compte ou mieux en générant les PK et FK respectifs?

    Ce serait super si vous pouviez m´aider en me disant si c´est possible ou pas avec xslt et si oui en me donnant des indices sur les possibilités de solutions dans de pareils cas. (Exemples de xslt à l´appui seraient également plus que bienvenus ). Merci beaucoup à l´avance.

    Sylvie

  2. #2
    Membre émérite
    Avatar de polymorphisme
    Homme Profil pro
    Publishing
    Inscrit en
    Octobre 2009
    Messages
    1 460
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Publishing
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2009
    Messages : 1 460
    Points : 2 371
    Points
    2 371
    Par défaut
    Bonjour Sylvie,

    pour le premier point, c'est possible.
    Pour le second point, ton exemple est, pour moi, moins parlant.
    Je n'ai pas d'exemple sous la main.
    Article : Installation de Cocoon
    Je ne réponds pas aux MP à caractère technique.

  3. #3
    Membre du Club
    Inscrit en
    Mai 2002
    Messages
    61
    Détails du profil
    Informations forums :
    Inscription : Mai 2002
    Messages : 61
    Points : 51
    Points
    51
    Par défaut
    Salut Polymorphisme,

    merci pour ta réponse. En ce qui concerne la question 2, je ne vois pas comment faire mieux parler mon exemple. Bref, imagine que t´as le fichier source XML donné et que tu aimerais grâce à cela générer une petite banque de données en générant avec du XSLT les IDs (PK) ainsi que les FK qui décrivent les relations entres les tableaux. Comment le faire avec du XSLT. J´ai réussi à faire une simple transformation, mais j´ai des problèmes tout d´avord pour demander avec du xslt de générer les PK à chaque nouvel ajout dans un tableau.
    Pourrais-tu m´aider d´abord avec cela? Pour les FK, on pourrait voir après si c´est possible...
    Ou alors comment faites-vous en général face à ce genre de problème:
    XML --> (quel genre de Transformation?) --> Banque de données ?

    Merci.

    Sylvie

  4. #4
    Modérateur

    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    12 557
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 12 557
    Points : 21 616
    Points
    21 616
    Par défaut
    Citation Envoyé par sylvie Voir le message
    J´ai réussi à faire une simple transformation, mais j´ai des problèmes tout d´avord pour demander avec du xslt de générer les PK à chaque nouvel ajout dans un tableau.
    Si generate-id() sur le premier nœud qui correspond n'est pas acceptable parce qu'il faut absolument un nombre, il n'y a pas de moyen simple.

    Pour un projet ou un client ça reste faisable :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    count(//Projet[not(preceding::Projet[nom = $projectName])])
    Autre possibilité : sélectionner directement tous les //Projet sans condition et se reposer sur la position() de chaque Projet ainsi traité. Au niveau performances ça passe.

    Pour un employé c'est plus chaud, je pense qu'il faut un template.

    Je m'attends à ce que les performances sur un gros fichier soient catastrophiques.

    Citation Envoyé par sylvie Voir le message
    XML --> (quel genre de Transformation?) --> Banque de données ?
    Ben, un XML c'est aussi une banque de données .
    Pas mon usage préféré pour une grosse banque, je l'admets, mais parfois ça se justifie.

    Il y a peut-être des utilitaires à la Talend pour faire ça sans trop se casser la tête, mais au bout du compte c'est de l'informatique pas de la magie : tu essaies de passer d'une structure hiérarchique à une structure relationnelle. Pour ça il faut factoriser les invariants, leur donner un id et calculer les mises en relations. Ce n'est pas une mince affaire, en calcul, comme en syntaxe.
    (Ceci dit, en utilisant une approche impérative plutôt que déclarative, genre en utilisant xquery plutôt que XSLT, tu devrais au moins éviter de calculer des milliers de fois la même chose.)
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

Discussions similaires

  1. [Débutant] repertoire en c# avec du xml pour base de donnée
    Par junkees dans le forum C#
    Réponses: 3
    Dernier message: 16/04/2012, 09h44
  2. creation nouvelle TABLESPACE pour base de donnée xml
    Par megaloplex dans le forum Débuter
    Réponses: 1
    Dernier message: 19/03/2009, 16h40
  3. Que choisir pour gérer les sauvegardes : fichiers XML ou base de données ?
    Par Invité dans le forum Développement 2D, 3D et Jeux
    Réponses: 11
    Dernier message: 14/06/2007, 11h58
  4. [PHP] utiliser XML comme base de donnée pour un forum ?
    Par wystan dans le forum XML/XSL et SOAP
    Réponses: 1
    Dernier message: 27/01/2007, 10h08
  5. [XSLT] Parser xml pour une transformation html
    Par sucben dans le forum XSL/XSLT/XPATH
    Réponses: 1
    Dernier message: 08/11/2006, 11h35

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo