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]Boucle for each


Sujet :

XSL/XSLT/XPATH XML

  1. #1
    jaq
    jaq est déconnecté
    Membre du Club
    Inscrit en
    Mars 2005
    Messages
    71
    Détails du profil
    Informations forums :
    Inscription : Mars 2005
    Messages : 71
    Points : 45
    Points
    45
    Par défaut [XSLT]Boucle for each
    bonjour

    j'ai un pb une boucle for each. Je fais un xslt pour transformer xml en texte.

    j'ai un fichier de type

    <root>
    <personnes num="12">
    <ages>10</ages>
    <competences>
    <competence>
    <id>12</id>
    </competence>
    <competence>
    <id>24</id>
    </competence>
    <competence>
    <id>30</id>
    </competence>
    </competences>
    </personnes>
    </root>
    Je voudrais obtenir un fichier texte sous la forme
    12;12
    12;24
    12;30

    Et ainsi de suite pour les autres personnes.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
    <xsl:output method="text" version="1.0" encoding="ISO-8859-1"/> 
    <xsl:strip-space elements="*"/>
    <xsl:template match="/>
     
    <xsl:for-each select="competences">
    <xsl:value-of select="personnes/@num"/>;
    <xsl:value-of select="competence/id"/>;
    </xsl:for-each>
     
    			<xsl:text>&#xA;</xsl:text> 
    			</xsl:template>
     
    </xsl:stylesheet>

  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
    personnes est père

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <xsl:value-of select="../@num"/>;

  3. #3
    Membre éprouvé
    Profil pro
    Responsable Dev
    Inscrit en
    Décembre 2003
    Messages
    788
    Détails du profil
    Informations personnelles :
    Localisation : France, Vendée (Pays de la Loire)

    Informations professionnelles :
    Activité : Responsable Dev

    Informations forums :
    Inscription : Décembre 2003
    Messages : 788
    Points : 1 063
    Points
    1 063
    Par défaut
    moi j'utiliserais le code xsl suivant:
    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
     
    <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
    	<xsl:output method="txt"/>
     
    <xsl:template match="/">  
     <xsl:for-each select=".//personnes"> 
    	<xsl:variable name="num"><xsl:value-of select="@num"/></xsl:variable>
     	<xsl:for-each select=".//competence"> 
    		<xsl:value-of select="$num"/>;<xsl:value-of select="./id"/>
    		<xsl:text>&#xA;</xsl:text>
     	</xsl:for-each>
     </xsl:for-each>
    </xsl:template>
     
    </xsl:stylesheet>

  4. #4
    jaq
    jaq est déconnecté
    Membre du Club
    Inscrit en
    Mars 2005
    Messages
    71
    Détails du profil
    Informations forums :
    Inscription : Mars 2005
    Messages : 71
    Points : 45
    Points
    45
    Par défaut Merci
    Merci pour vos solutions ça marche

  5. #5
    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
    Citation Envoyé par fraoustin
    moi j'utiliserais le code xsl suivant:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    ....
     <xsl:for-each select=".//personnes"> 
    ....
     	<xsl:for-each select=".//competence"> 
    		... </xsl:for-each>
    ...
    Ces deux Xpath sont extremements couteux et tous a fait inutiles dans ce contexte (et dangeureux dans d'autres )
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    ....
     <xsl:for-each select="root/personnes"> 
    ....
     	<xsl:for-each select="competence"> 
    		... </xsl:for-each>
    ...

  6. #6
    Membre éprouvé
    Profil pro
    Responsable Dev
    Inscrit en
    Décembre 2003
    Messages
    788
    Détails du profil
    Informations personnelles :
    Localisation : France, Vendée (Pays de la Loire)

    Informations professionnelles :
    Activité : Responsable Dev

    Informations forums :
    Inscription : Décembre 2003
    Messages : 788
    Points : 1 063
    Points
    1 063
    Par défaut
    Oui en effet merci de cette correction

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

Discussions similaires

  1. [XSLT] PB: Boucle (for-each) et variable
    Par luchoo dans le forum XSL/XSLT/XPATH
    Réponses: 2
    Dernier message: 08/11/2010, 13h58
  2. Réponses: 2
    Dernier message: 07/05/2007, 16h46
  3. aide vba boucle for each paramétrée en range
    Par gotlieb dans le forum Macros et VBA Excel
    Réponses: 6
    Dernier message: 27/07/2006, 08h55
  4. [VBA-E] erreur boucle for each
    Par Mut dans le forum Macros et VBA Excel
    Réponses: 6
    Dernier message: 15/02/2006, 16h38
  5. Boucle For each
    Par roots_man dans le forum ASP
    Réponses: 10
    Dernier message: 18/02/2005, 09h55

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