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 :

Insertion dans un fichier xml à partir d'un xsl


Sujet :

XSL/XSLT/XPATH XML

  1. #1
    Membre à l'essai
    Inscrit en
    Mars 2003
    Messages
    21
    Détails du profil
    Informations forums :
    Inscription : Mars 2003
    Messages : 21
    Points : 15
    Points
    15
    Par défaut Insertion dans un fichier xml à partir d'un xsl
    Bonjour,

    je sais que ce sujet a déja été abordé, mais meme en suivant certains conseils du forum et le site zvon.org (très bien fait d'ailleurs), je ne parviens pas à utiliser la syntaxe xsl:element et xsl:attribute convenablement.

    J'ai pourtant utilisé un exemple simple mais aucune insertion dans mon fichier xml détectée!!

    Quelqu'un aurait-il une solution, ou un autre moyen de réaliser une insertion dans un xml?

    merci d'avance.

  2. #2
    Membre à l'essai
    Inscrit en
    Mars 2003
    Messages
    21
    Détails du profil
    Informations forums :
    Inscription : Mars 2003
    Messages : 21
    Points : 15
    Points
    15
    Par défaut
    Alors voilà,

    but: à partir d'un formulaire, saisir des données et les insérer dans une base de données (rien de bien compliqué).

    complication: c'est des données xml , à insérer soit dans une base de données xml, soit directement dans un fchier xml (correspondant à une table relationnelle pour comparer...)sans utiliser de 'middle' et de 'backoffice' (BdD)

    solution: utiliser du JAVA (fichier JSP) pour récupérer les données saisies (html obtenue par fusion xsd (schéma)/xsl pour avoir un formulaire simple, complet et valide) dans un formulaire (le html généré en question!).

    fichier xml de travail:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    <Musee>
        <oeuvre IdOeuvre=1>
           <titre>blabla</titre>
           <numéro>sfd34</numéro>
        </oeuvre>
        <oeuvre IdOeuvre=2>
         ......
        </oeuvre>
    </Musee>
    ---------------------------------------------------
    ON VEUT DONC RAJOUTER UNE OEUVRE:

    Les données saisies seront récupérées par un JSP(code JAVA) sous formes de paramètres (les input (titre de l'oeuvre, etc...), listes déroulants, etc...) et envoyées pour une nouvelle fusion xsl/xml qui mettra en forme le noeud dans une textarea 'hidden'.

    Cette textarea sera récupéré par un dernier JSP . Il contiendra donc les données à insérer dans le fichier xml.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    //récupération du noeud du source: fichier xml  à modifier
    Document webservice = XmlDOM.newDocument (new File(xmlFileName) );
    Node nodeFound = XmlDOM.getNode(webservice, "Musee");              
    Element fNode    = XmlDOM.createElement (nodeFound);	
     
    //transformation du noeud xmlDOM en string + insertion du noeud (qui 
    //est encore une chaine de caratère)
    String thestring =XmlDOM.dom2String(fNode);
    // suppression du dernier tag 'Musee' pour insérer la nouvelle oeuvre
    thestring = thestring.substring(0, thestring.length()-8);

    Enfin, le neoud sera insére à la suite des autres enregistrements du fichier xml .

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    //recréation de la nouvelle chaine (noeudoeuvre est la chaine contenant
    //le flux (noeud) xml à insérer) et rajout de la balise de fermeture 'Musee'
     
    thestring= "<?xml version='1.0' encoding='ISO-8859-1'?>" +  thestring + noeudoeuvre + "</Musee>";
    et l'insertion sera effective:
    on a notre nouveau noeud (sous forme 'string')contenant le fichier final.
    Maintenant, reste à écrire ce 'noeud' dans fichier.xml

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    //écraser le fichier xml par ce nouveau
    PrintWriter outputStream = new PrintWriter(new FileWriter(application.getRealPath("/") +"services/view/xml/Oeuvre.xml"));  
     
    outputStream.println(thestring);
    outputStream.close();

    Voilà. (dites moi si ca va!...)
    a+
    Alex

  3. #3
    Membre confirmé
    Avatar de grishka
    Inscrit en
    Janvier 2003
    Messages
    285
    Détails du profil
    Informations forums :
    Inscription : Janvier 2003
    Messages : 285
    Points : 499
    Points
    499
    Par défaut
    ouaip, c'est pas mal. Au niveau performance ca se bien?

    j'imagines que tu ne comptes pas utiliser ton application pour du multi-utilisateur, ou alors tu gères soit les transactions éviter les incohérences de données, soit les utilisateurs non admin accèdent aux données en lecture. Si c'est du mono-utilisateur l'accès aux données doit être relativement négligeable devant les performances du réseau...donc ton appli ne doit pas trop se trainer non?

    -un petit détail : pourquoi tu n'utilises pas les méthodes d'insertions sur un document Dom? ca t'éviterais de transformer ton document en chaine de caractère et de supprimer la balise </Musée> puis de la remettre (encore qu'il y a la fonction insert sur la StringBuffer )

    Tu récupères ton sous-arbre <oeuvre> que tu transformes en document Dom puis tu l'insères dans ton document Dom <musee>...

    bonne continuation a+
    "Les gens normaux croient que si ca marche, c'est qu'il n'y a rien à reparer. Les ingénieurs croient que si ca marche, c'est que ca ne fait pas encore assez de choses."
    --Scott Adams

  4. #4
    Membre à l'essai
    Inscrit en
    Mars 2003
    Messages
    21
    Détails du profil
    Informations forums :
    Inscription : Mars 2003
    Messages : 21
    Points : 15
    Points
    15
    Par défaut
    Je vois ce que tu veux dire...

    Tu as raison, je n'ai pas pensé au multi-utilisateur!! Mais, bon, tout ceci comme tu peux le voir est un essai afin d'affiner ma connaissance en java et en xml/xsl, car ds la boite ou je bosse, on va commencer un projet à ce sujet...

    En ce qui concerne la vitesse, c'est bon, et donc l'utilisation des DOM pour accéder au fichier serait encore mieux... Et pour la sécurité, on peux bloquer les accès dès la base du site!

    Enfin, j'espère que ma réflexion pourra au moins servir à dépanner des développeurs dans le besoins d'idée

    Merci donc et a+

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [JDOM] Insertion dans un fichier xml
    Par narutoe dans le forum Format d'échange (XML, JSON...)
    Réponses: 7
    Dernier message: 01/04/2011, 13h27
  2. Réponses: 11
    Dernier message: 04/08/2010, 13h00
  3. insertion dans un fichier xml
    Par khaled81 dans le forum C#
    Réponses: 3
    Dernier message: 29/03/2010, 16h37
  4. Réponses: 2
    Dernier message: 01/06/2004, 12h47
  5. Insertion dans un fichier XML
    Par [DreaMs] dans le forum XMLRAD
    Réponses: 4
    Dernier message: 27/02/2003, 17h16

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