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] Mettre à jour un tag pour une transfo XML vers XML avec une feuille XSL


Sujet :

XSL/XSLT/XPATH XML

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    168
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2006
    Messages : 168
    Points : 97
    Points
    97
    Par défaut [XSLT] Mettre à jour un tag pour une transfo XML vers XML avec une feuille XSL
    Bonjour,

    Je suis novice dans le langage xsl. Je souhaiterais effectuer une transformation permettant :

    - De mettre à jour des tags ( exemple : dans le fichier xml source contient
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <rae><toto>tata</toto><tutu><tete>pmu</tete></tutu></rae>
    . Le fichier xml cible doit contenir
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <rae><toto>titi</toto><tutu><tete>ump</tete></tutu></rae>
    ). la contrainte que j'ai , c'est de ne pas recréer le noeud toto mais juste rechercher le tag toto et effectuer une mise à jour de la valeur voulu.
    - De tester l'existance d'un noeud pour le créer dans le cas où le noeud n'existe pas.

    Merci d'avance

  2. #2
    Rédacteur

    Avatar de Erwy
    Homme Profil pro
    Développeur Web
    Inscrit en
    Novembre 2003
    Messages
    4 967
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Novembre 2003
    Messages : 4 967
    Points : 10 927
    Points
    10 927
    Par défaut
    jette un coup d'oeil du coté de ces codes sources
    http://xml.developpez.com/sources/?page=modifs

  3. #3
    Membre régulier
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    168
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2006
    Messages : 168
    Points : 97
    Points
    97
    Par défaut XSL XML transformation
    Bonjour,

    J'ai un fichier XML en entrée qui posséde ce format :

    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
     
    <?xml version="1.0" encoding="UTF-8"?>
    <TRAVAIL>
    <RAE>
        <vmaj>0</vmaj>
        <vmin>0</vmin>
        <dfad id="id0">
            <SIE>45285</SIE>
        </dfad>
        <rjad id="id1">
            <SIE>123</SIE>
        </rjad>
        <nat id="id2">
            <SIE>321</SIE>
        </nat>
        <exp id="id3">
            <SIE>222</SIE>
        </exp>
    </RAE>
    <RQDP>
    <dp id="01">
    <SIE>AA01</SIE>
    <SIE_nSIE></SIE_nSIE>
    <nSIE_SIE></nSIE_SIE>
    <lb>AIN</lb>
    <iso></iso>
    </dp>
    <dp id="02">
    <SIE>AA02</SIE>
    <SIE_nSIE></SIE_nSIE>
    <nSIE_SIE></nSIE_SIE>
    <lb>AISNE</lb>
    </dp>
    <dp id="03">
    <SIE>AA03</SIE>
    <SIE_nSIE></SIE_nSIE>
    <nSIE_SIE></nSIE_SIE>
    <lb>ALLIER</lb>
    </dp>
    <dp id="04">
    <SIE>AA04</SIE>
    <SIE_nSIE></SIE_nSIE>
    <nSIE_SIE></nSIE_SIE>
    <lb>ALPES DE HAUTE PROVENCE</lb>
    </dp>
    </RQDP>
    </TRAVAIL>
    Je souhaiterais avoir comme résultat :

    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
     
    <?xml version="1.0" encoding="utf-8"?>
    <TRAVAIL>
      <RAE>
         <vmaj>0</vmaj>
        <vmin>0</vmin>
        <dfad id="id0">
            <SIE>45285</SIE>
        </dfad>
        <rjad id="id1">
            <SIE>123</SIE>
        </rjad>
       <nat id="id2">
     
          <SIE>321</SIE>
     
     
          <dp id="01">
     
             <SIE>AA01</SIE>
     
             <SIE_nSIE/>
     
             <nSIE_SIE/>
     
             <lb>AIN</lb>
     
             <iso/>
     
          </dp>
     
          <dp id="02">
     
             <SIE>AA02</SIE>
     
             <SIE_nSIE/>
     
             <nSIE_SIE/>
     
             <lb>AISNE</lb>
     
          </dp>
     
          <dp id="03">
     
             <SIE>AA03</SIE>
     
             <SIE_nSIE/>
     
             <nSIE_SIE/>
     
             <lb>ALLIER</lb>
     
          </dp>
     
          <dp id="04">
     
             <SIE>AA04</SIE>
     
             <SIE_nSIE/>
     
             <nSIE_SIE/>
     
             <lb>ALPES DE HAUTE PROVENCE</lb>
     
          </dp>
       </nat>
       <exp/>
     </RAE>
    </TRAVAIL>
    J'applique ce xsl :
    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
     
      <xsl:template match="/TRAVAIL">
            <xsl:copy>
                <xsl:apply-templates select="RAE"/>
            </xsl:copy>
        </xsl:template>
     
        <xsl:template match="RAE">
            <xsl:for-each select="*">
                <xsl:copy>
                    <xsl:if test="name() = 'nat'">
                        <xsl:copy-of select="//RQDP/child::node() | child::node() | @*"/>
                        <xsl:apply-templates select="nat"/>
                    </xsl:if>
                </xsl:copy>
            </xsl:for-each>
            <xsl:apply-templates select="RAE"/>
        </xsl:template>
    Le résultat me donne :

    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
     
    <TRAVAIL>
       <vmaj/>
       <vmin/>
       <dfad/>
       <rjad/>
       <nat id="id2">
     
          <SIE>321</SIE>
     
     
          <dp id="01">
     
             <SIE>AA01</SIE>
     
             <SIE_nSIE/>
     
             <nSIE_SIE/>
     
             <lb>AIN</lb>
     
             <iso/>
     
          </dp>
     
          <dp id="02">
     
             <SIE>AA02</SIE>
     
             <SIE_nSIE/>
     
             <nSIE_SIE/>
     
             <lb>AISNE</lb>
     
          </dp>
     
          <dp id="03">
     
             <SIE>AA03</SIE>
     
             <SIE_nSIE/>
     
             <nSIE_SIE/>
     
             <lb>ALLIER</lb>
     
          </dp>
     
          <dp id="04">
     
             <SIE>AA04</SIE>
     
             <SIE_nSIE/>
     
             <nSIE_SIE/>
     
             <lb>ALPES DE HAUTE PROVENCE</lb>
     
          </dp>
       </nat>
       <exp/>
    </TRAVAIL>

    Quelles sont les instructions que je dois ajouter pour ramenner les attributs des tag vide et le tag RAE ?

    Quelqu'un peux t'il m'aider ?

Discussions similaires

  1. [XSLT] : XML vers XML avec une nouvelle feuille de style
    Par wwave dans le forum XSL/XSLT/XPATH
    Réponses: 1
    Dernier message: 07/11/2009, 14h50
  2. Produire une section CDATA comme résultat d'une transfo XSLT
    Par paquerette dans le forum XSL/XSLT/XPATH
    Réponses: 2
    Dernier message: 09/04/2009, 15h22
  3. Requete nom ville pour avoir code postal,avec une base sous format XMl
    Par naouah dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 20/02/2008, 21h00
  4. Réponses: 4
    Dernier message: 23/10/2006, 10h09
  5. [XSLT] processeur pour une transformation XML vers XML
    Par fanette dans le forum XSL/XSLT/XPATH
    Réponses: 1
    Dernier message: 15/06/2006, 13h46

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