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

XML/XSL et SOAP Discussion :

Modifier Contenu d'un fichier XML Javascript


Sujet :

XML/XSL et SOAP

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Mai 2008
    Messages
    91
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 91
    Points : 44
    Points
    44
    Par défaut Modifier Contenu d'un fichier XML Javascript
    Bonjour,
    j'ai le fichier XML ci dessous:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    <?xml version="1.0" encoding="UTF-8"?>
    <?xml-stylesheet type="text/xsl" href="fichier_TEST.xsl"?>
    <Liste_des_Produits xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="fichier_schema.xsd">
      <Produit>
        <Nom_Produit>Boulon inox 5x12</Nom_Produit>
        <Reference>LM889</Reference>
        <Categorie>visserie</Categorie>
        <Niveau_Danger>inerte</Niveau_Danger>
        <Stockage>
          <Emplacement>L1C1</Emplacement>
          <Nombre_de_Palette>3</Nombre_de_Palette>
          <Quantite>3500</Quantite>
        </Stockage>
        <Stockage>
          <Emplacement>L1C5</Emplacement>
          <Nombre_de_Palette>4</Nombre_de_Palette>
          <Quantite>2500</Quantite>
        </Stockage>
      </Produit>
    </Liste_des_Produits>
    Un fichier xsl lui est associé afin de mettre en forme le contenu du fichier xml, j'aimerais depuis ce fichier pouvoir a l'aide de fonction javascript présente dans le xsl modifier le contenu du fichier XML.
    Par exemepl, je souhaite modifier la référence "LM889" en "AA000", pour cela j'ai réalisé cette fonction cependant ceci ,e fonctionne pas et ne connaissant que trés peu de chose sur javascript je ne comprend pas vraiment l'erreur alors si vous pouviez m'aider cela me rendrai grand service.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
     
    <xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
     
    <xsl:key name="id" match="Categorie" use="."/>
     
    <xsl:template match="/">
     
        <html>
             <head>
    	            <title>Liste produit disponible</title>
     
    	                <script language="JavaScript">
     
    		    	      <![CDATA[function Insertion()
    		    	      {
     
    		    	      //code pour IE
    		    	      	if (window.ActiveXObject)
    			        {
     
    			       		 xmlDoc = new ActiveXObject("Microsoft.XMLDOM");
    			       		 xmlDoc.async=false;
     
    			       		 xmlDoc.load("D:\Documents and Settings\cDucarouge\Mes documents\Etude technique Extranet\ETL\Web Service\Proto Dom_JS\fichier_xml2.xml");
     
    			        	XmlNodeList elemList = xmlDocument .GetElementsByTagName("Reference");
     
    					for (int i=0; i < elemList.Count; i++)
    					{
    						elemList[i].GetElementsByTag("AA000") = "BB089";
    					}
     
     
     
    			        alert('Ici, c\'est vIE!\nSympa non ?');
     
    			        }
     
    			     //Code pour FireFox
    			      	else if (document.implementation && document.implementation.createDocument)
    			        {
    			       		 xmlDoc= document.implementation.createDocument("","",null);
    			       		 xmlDoc.load("D:\Documents and Settings\cDucarouge\Mes documents\Etude technique Extranet\ETL\Web Service\Proto Dom_JS\fichier_xml2.xml");
     
     
    			       		alert('Ici, c\'est votre message!\nSympa non ?');
     
    			        }
    			      else
    			        {
    			        alert('Votre browser en vous permet pas l\'utilisation de cet outil');
    			        }
    			      }
    		    	      ]]>
     
    			</script>
     
            </head>
            <body>
     
     
                 <h1> Question 2 </h1>
     
               	 <xsl:apply-templates select="//Liste_des_Produits"/>
            </body>
     
     
        </html>
    </xsl:template>
     
     
    <xsl:template match="//Liste_des_Produits">
    	<xsl:param name="choix"> 1 </xsl:param>
     
    	<xsl:choose>
        <xsl:when test="$choix=1">
                <table>
                <caption> Liste produit - 2 </caption>
                <tr><th>Nom Produit</th> <th> Référence</th> <th> Catégorie </th></tr>
     
                	<xsl:for-each select="/Liste_des_Produits/Produit">
                    <xsl:sort select="Nom_Produit"/>
     
     
                    <tr> 
                    <td class="nom"> <xsl:value-of select = "Nom_Produit"/> </td>
                    <td class="niv"><xsl:value-of select ="Reference"/></td>
                    <td class="emp"><xsl:value-of select ="Categorie"/> </td>
                    </tr>
     
                </xsl:for-each>
     
                 </table>
     
     
                 <form method="post">	     
    	     			<TR>
    	     				<TD>
    	     					<INPUT type="submit" value="Ajouter" onclick="Insertion()"/>
    	     				</TD>
    	     			</TR>
     
     
    	     </form>
     
     
        </xsl:when>
        <xsl:otherwise>
        <table>
        <caption> Liste produit - 1 </caption>
        <tr><th>Nom Produit</th> <th> Niveau danger</th> <th> Emplacement </th></tr>
     
        <xsl:for-each select="/Liste_des_Produits/Produit">
            <xsl:sort select="Niveau_Danger"/>
            <tr> 
            <td class="nom"> <xsl:value-of select = "Nom_Produit"/> </td>
            <td class="niv"><xsl:value-of select ="Niveau_Danger"/></td>
            <td class="emp"><xsl:value-of select ="Stockage/Emplacement"/> </td>
            </tr>
        </xsl:for-each>
     
        </table>
     
        </xsl:otherwise>
        </xsl:choose> 
     
     
    </xsl:template>
     
     
    </xsl:stylesheet>

  2. #2
    Expert confirmé
    Avatar de emmanuel.remy
    Inscrit en
    Novembre 2005
    Messages
    2 855
    Détails du profil
    Informations personnelles :
    Âge : 55

    Informations forums :
    Inscription : Novembre 2005
    Messages : 2 855
    Points : 4 045
    Points
    4 045
    Par défaut
    Salut,

    Je ne comprends pas du tout la logique de ta démarche (désolé, mais pourquoi ne pas utiliser ton moteur de transformation pour effectuer ces modifications ? ) mais ce qui est sûr c'est que
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    XmlNodeList elemList = xmlDocument .GetElementsByTagName("Reference");
    n'est pas possible en Javascript; plutôt:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    var  elemList = xmlDocument.getElementsByTagName("Reference");
    ERE
    Quand une tête pense seule, elle devient folle.

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Mai 2008
    Messages
    91
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 91
    Points : 44
    Points
    44
    Par défaut
    Merci de ta réponse

    Citation Envoyé par emmanuel.remy Voir le message
    pourquoi ne pas utiliser ton moteur de transformation pour effectuer ces modifications ? )
    que veux tu dire par la? que je peux modifier le contenu de mon fichier xml avec le xsl?

  4. #4
    Expert confirmé
    Avatar de emmanuel.remy
    Inscrit en
    Novembre 2005
    Messages
    2 855
    Détails du profil
    Informations personnelles :
    Âge : 55

    Informations forums :
    Inscription : Novembre 2005
    Messages : 2 855
    Points : 4 045
    Points
    4 045
    Par défaut
    Re,

    Je ne connais pas le degré de complexité de tes règles de gestion, mais selon le moteur de transformation xslt que tu utilises, tu peux appeler des fonctions de transformations et/ou de formatage dédiées.

    EXSLT, Java et XALAN, ou encore PHP font cela très bien.

    ERE
    Quand une tête pense seule, elle devient folle.

  5. #5
    Membre du Club
    Profil pro
    Inscrit en
    Mai 2008
    Messages
    91
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 91
    Points : 44
    Points
    44
    Par défaut
    oui je suis d'accord, mais je cherche à modifier le fichier xml en local, sans passer par un serveur, aprés quelques recherche je n'ai trouvé que'une seule solution adapté à mon besoin celle de DOM à travers javascript pour le faire, et comme je ne connais pas grand chose àà javascript je suis un peu perdu et rien ne marche

  6. #6
    Expert confirmé
    Avatar de emmanuel.remy
    Inscrit en
    Novembre 2005
    Messages
    2 855
    Détails du profil
    Informations personnelles :
    Âge : 55

    Informations forums :
    Inscription : Novembre 2005
    Messages : 2 855
    Points : 4 045
    Points
    4 045
    Par défaut
    Re,

    Peux tu stp préciser ce que tu veux faire, quelle transformation s'effectue sur le server, parce que là je ne saisis pas tout et je commence à me demander s'il n'y a pas plus simple.

    ERE
    Quand une tête pense seule, elle devient folle.

  7. #7
    Membre du Club
    Profil pro
    Inscrit en
    Mai 2008
    Messages
    91
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 91
    Points : 44
    Points
    44
    Par défaut
    Bonjour,

    En fait rien ne passe par le serveur, du moins pas le processus de transformation, je souhaite qu'un utilisateur reçoivent de n'importe quelle façon un fichier XML, ce fichier sera associé à un fichier xsl (toujours en local) qui contiendra les tag xsl pour présenter les données, un bouton qui appellera une fonction javascript pour modifier le contenu.
    Pour être plus précise j'ai ce fichier xml

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    <Personne>
         <Nom>Dupont</Nom>
        <Prenom>Jean</Prenom>
    </Personne>
    et grâce à mon fichier xsl et sa fonction javascript j'obtiens:


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    <Personne>
         <Nom>Durand</Nom>
        <Prenom>Jean</Prenom>
    </Personne>
    j'ai choisi le javascript car j'ai vu que cela étais possible, mais si tu connais d'autre langage avec lequel je peux le faire je suis intéresser

  8. #8
    Expert confirmé
    Avatar de emmanuel.remy
    Inscrit en
    Novembre 2005
    Messages
    2 855
    Détails du profil
    Informations personnelles :
    Âge : 55

    Informations forums :
    Inscription : Novembre 2005
    Messages : 2 855
    Points : 4 045
    Points
    4 045
    Par défaut
    Salut,

    Ok. Une fois ton fichier XML chargé tu obtiens une référence sur son DOM, donc à toi de le parcourir pour modifier les données souhaitées (tu peux même exécuter une requête XPath si tu en ressens le besoin).

    Mais on est bien d'accord que tu ne peux pas modifier les données avec Javascript LORS DE LA TRANSFORMATION XSL ?

    ERE
    Quand une tête pense seule, elle devient folle.

  9. #9
    Membre du Club
    Profil pro
    Inscrit en
    Mai 2008
    Messages
    91
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 91
    Points : 44
    Points
    44
    Par défaut
    merci pour tes réponses,
    si j'ai bien compris, avec xsl je peux modifier le contenu de mon fichier, il me suffit de parcourir le fichier, selectionner le noeud souhiaté et modifier la valeur

    Pourrai tu me passer un lien où son présenter les commande xsl pour ce genre de manipulation?

    Merci de ton aide

  10. #10
    Expert confirmé
    Avatar de emmanuel.remy
    Inscrit en
    Novembre 2005
    Messages
    2 855
    Détails du profil
    Informations personnelles :
    Âge : 55

    Informations forums :
    Inscription : Novembre 2005
    Messages : 2 855
    Points : 4 045
    Points
    4 045
    Par défaut
    Citation Envoyé par missd12 Voir le message
    merci pour tes réponses,
    si j'ai bien compris, avec xsl je peux modifier le contenu de mon fichier, il me suffit de parcourir le fichier, selectionner le noeud souhiaté et modifier la valeur

    Pourrai tu me passer un lien où son présenter les commande xsl pour ce genre de manipulation?

    Merci de ton aide
    Ce sont les instructions habituelles de sélection et de manipulations de noeud. Tutoriels ici

    ERE
    Quand une tête pense seule, elle devient folle.

Discussions similaires

  1. Modifier le contenu d'un fichier XML
    Par Glork dans le forum Android
    Réponses: 14
    Dernier message: 23/12/2013, 21h54
  2. Modifier le contenu d'un fichier XML
    Par khouloudmad dans le forum Format d'échange (XML, JSON...)
    Réponses: 1
    Dernier message: 04/05/2012, 13h30
  3. Modifier le contenu d'un fichier XML
    Par bkwaadbk dans le forum Qt
    Réponses: 4
    Dernier message: 28/08/2011, 22h17
  4. [VBA-E] modifier contenu d'un fichier.
    Par mulanzia2003 dans le forum Macros et VBA Excel
    Réponses: 8
    Dernier message: 18/04/2007, 15h55
  5. Lire le contenu d'un fichier xml
    Par Invité dans le forum Bibliothèques
    Réponses: 4
    Dernier message: 10/01/2006, 19h13

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