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] Modification du nom d'un attribut.


Sujet :

XSL/XSLT/XPATH XML

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    258
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2006
    Messages : 258
    Par défaut [XSLT] Modification du nom d'un attribut.
    Bonjour,

    J'ai besoin d'un coup de main car je suis débutant dans ce domaine.
    Voilà dans un flux XML je souhaite modifier les noms de mes attributs par une transformation XSL.
    Voici mon fichier XML:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    <?xml version="1.0" encoding="ISO-8859-1"?>
    <root>
    	<criteres c1="test1" c2="test2"/>
    </root>
    J'aimerai pouvoir arriver à ce résultat après transformation xsl:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    <?xml version="1.0" encoding="ISO-8859-1"?>
    <root>
    	<criteres crit1="test1" crit2="test2"/>
    </root>
    Merci de votre aide.

  2. #2
    Membre éclairé
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    258
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2006
    Messages : 258
    Par défaut
    Personne a une petite idée ?

  3. #3
    Membre Expert
    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    1 466
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2006
    Messages : 1 466
    Par défaut
    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
    <?xml version="1.0"?>
    <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
    	<xsl:output method = "xml"  version="1.0" encoding="UTF-8" omit-xml-declaration="no" standalone="no" indent="yes"  />
     
    <xsl:template match="criteres/@c1">
      <xsl:attribute name="crit1"><xsl:value-of select="."/></xsl:attribute>
    </xsl:template>
     
    <xsl:template match="criteres/@c2">
      <xsl:attribute name="crit2"><xsl:value-of select="."/></xsl:attribute>
    </xsl:template>
     
    <xsl:template match="/ | node() | @*">
    		<xsl:copy>
    			<xsl:apply-templates select="@* | node()"/>
    		</xsl:copy>
    	</xsl:template>	    
     
    </xsl:stylesheet>

  4. #4
    Membre éclairé
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    258
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2006
    Messages : 258
    Par défaut
    Merci beaucoup Morbo de ton aide.

  5. #5
    Membre éclairé
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    258
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2006
    Messages : 258
    Par défaut
    Juste pour comprendre un peu mieu XSL, Morbo tu peux m'expliquer les différentes étapes de ton XSL.

    Merci d'avance.

  6. #6
    Membre Expert
    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    1 466
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2006
    Messages : 1 466
    Par défaut
    En gros le dernier template fait une copie pour (match) tout noeud ( node() ) et attribut (@*)

    Le premier template ne sera activé que lorsque que le parser rencontrera l'attribut c1 du noeud critere ( match="criteres/@c1" ).
    Dans ce cas la je créer un attribut sur le noeud courant (ici forcément le noeud 'criteres') et je l'appelle 'crit1' et dans sa valeur je mets celle de l'attribut courant ( <xsl:value-of select="."/> )

    Pareil pour le second template.

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

Discussions similaires

  1. [XSLT] Transformer le nom d'un attribut
    Par titchagui dans le forum XSL/XSLT/XPATH
    Réponses: 1
    Dernier message: 01/12/2008, 10h53
  2. [XSLT] Variable comme nom d'attribut
    Par Anubis dans le forum XSL/XSLT/XPATH
    Réponses: 4
    Dernier message: 21/02/2008, 16h34
  3. [XSLT] Lire le nom des attributs
    Par SONY30 dans le forum XSL/XSLT/XPATH
    Réponses: 3
    Dernier message: 21/09/2006, 16h20
  4. Probleme de modification du nom d'un attribut
    Par kenny49 dans le forum Access
    Réponses: 4
    Dernier message: 23/06/2006, 14h23
  5. [xslt] passer le nom d'un attribut comme param
    Par nemya dans le forum XSL/XSLT/XPATH
    Réponses: 3
    Dernier message: 24/11/2005, 11h03

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